You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
17354 lines
714 KiB
HTML
17354 lines
714 KiB
HTML
<html>
|
|
<head>
|
|
<title>EAGLE Help Version 5.7.0</title>
|
|
<style type="text/css"><!-- h1 { background-color: #CCCCCC; color: #0050B0; } pre { background-color: #EEEEEE; } mb { font-weight: bold; font-family: courier; background-color: #EEEEEE; }--></style>
|
|
</head>
|
|
<body>
|
|
<table width=100% cellspacing=0 border=0><tr>
|
|
<td align=left>EAGLE Help Version 5.7.0</td>
|
|
<td align=right><font size=-1>
|
|
<i>Copyright © 2010 CadSoft Computer GmbH</i>
|
|
</font></td></tr></table>
|
|
|
|
<h1>Index</h1>
|
|
<ul>
|
|
<li><a href=#1>Erklärung der Hilfe-Funktion</a>
|
|
<li><a href=#2>EAGLE konfigurieren</a>
|
|
<li><a href=#3>Kommandozeilen-Optionen</a>
|
|
<li><a href=#4>Schnelle Einführung</a>
|
|
<ul>
|
|
<li><a href=#5>Control Panel und Editor-Fenster</a>
|
|
<li><a href=#6>Eingabe von Parametern und Werten</a>
|
|
<li><a href=#7>Schaltplan entwerfen</a>
|
|
<li><a href=#8>Schaltplan überprüfen</a>
|
|
<li><a href=#9>Platine aus Schaltplan erzeugen</a>
|
|
<li><a href=#10>Layout überprüfen</a>
|
|
<li><a href=#11>Bauelement in Bibliothek definieren</a>
|
|
</ul>
|
|
<li><a href=#12>Control Panel</a>
|
|
<ul>
|
|
<li><a href=#13>Kontext-Menüs</a>
|
|
<li><a href=#14>Verzeichnisse</a>
|
|
<li><a href=#15>Datensicherung</a>
|
|
<li><a href=#16>Benutzeroberfläche</a>
|
|
<li><a href=#17>Fensterpositionen</a>
|
|
<li><a href=#18>Auf Update prüfen</a>
|
|
</ul>
|
|
<li><a href=#19>Tastatur und Maus</a>
|
|
<ul>
|
|
<li><a href=#20>Benachbarte Objekte selektieren</a>
|
|
</ul>
|
|
<li><a href=#21>Editor-Fenster</a>
|
|
<ul>
|
|
<li><a href=#22>Bibliotheks-Editor</a>
|
|
<ul>
|
|
<li><a href=#23>Bibliotheks-Editier-Modus</a>
|
|
</ul>
|
|
<li><a href=#24>Layout-Editor</a>
|
|
<li><a href=#25>Schaltplan-Editor</a>
|
|
<li><a href=#26>Text-Editor</a>
|
|
</ul>
|
|
<li><a href=#27>Editor-Befehle</a>
|
|
<ul>
|
|
<li><a href=#28>Befehlseingabe</a>
|
|
<li><a href=#29>ADD</a>
|
|
<li><a href=#30>ARC</a>
|
|
<li><a href=#31>ASSIGN</a>
|
|
<li><a href=#32>ATTRIBUTE</a>
|
|
<li><a href=#33>AUTO</a>
|
|
<li><a href=#34>BOARD</a>
|
|
<li><a href=#35>BUS</a>
|
|
<li><a href=#36>CHANGE</a>
|
|
<li><a href=#37>CIRCLE</a>
|
|
<li><a href=#38>CLASS</a>
|
|
<li><a href=#39>CLOSE</a>
|
|
<li><a href=#40>CONNECT</a>
|
|
<li><a href=#41>COPY</a>
|
|
<li><a href=#42>CUT</a>
|
|
<li><a href=#43>DELETE</a>
|
|
<li><a href=#44>DESCRIPTION</a>
|
|
<li><a href=#45>DISPLAY</a>
|
|
<li><a href=#46>DRC</a>
|
|
<li><a href=#47>EDIT</a>
|
|
<li><a href=#48>ERC</a>
|
|
<li><a href=#49>ERRORS</a>
|
|
<li><a href=#50>EXPORT</a>
|
|
<li><a href=#51>FRAME</a>
|
|
<li><a href=#52>GATESWAP</a>
|
|
<li><a href=#53>GRID</a>
|
|
<li><a href=#54>GROUP</a>
|
|
<li><a href=#55>HELP</a>
|
|
<li><a href=#56>HOLE</a>
|
|
<li><a href=#57>INFO</a>
|
|
<li><a href=#58>INVOKE</a>
|
|
<li><a href=#59>JUNCTION</a>
|
|
<li><a href=#60>LABEL</a>
|
|
<li><a href=#61>LAYER</a>
|
|
<li><a href=#62>LOCK</a>
|
|
<li><a href=#63>MARK</a>
|
|
<li><a href=#64>MENU</a>
|
|
<li><a href=#65>MIRROR</a>
|
|
<li><a href=#66>MITER</a>
|
|
<li><a href=#67>MOVE</a>
|
|
<li><a href=#68>NAME</a>
|
|
<li><a href=#69>NET</a>
|
|
<li><a href=#70>OPEN</a>
|
|
<li><a href=#71>OPTIMIZE</a>
|
|
<li><a href=#72>PACKAGE</a>
|
|
<li><a href=#73>PAD</a>
|
|
<li><a href=#74>PASTE</a>
|
|
<li><a href=#75>PIN</a>
|
|
<li><a href=#76>PINSWAP</a>
|
|
<li><a href=#77>POLYGON</a>
|
|
<li><a href=#78>PREFIX</a>
|
|
<li><a href=#79>PRINT</a>
|
|
<li><a href=#80>QUIT</a>
|
|
<li><a href=#81>RATSNEST</a>
|
|
<li><a href=#82>RECT</a>
|
|
<li><a href=#83>REDO</a>
|
|
<li><a href=#84>REMOVE</a>
|
|
<li><a href=#85>RENAME</a>
|
|
<li><a href=#86>REPLACE</a>
|
|
<li><a href=#87>RIPUP</a>
|
|
<li><a href=#88>ROTATE</a>
|
|
<li><a href=#89>ROUTE</a>
|
|
<li><a href=#90>RUN</a>
|
|
<li><a href=#91>SCRIPT</a>
|
|
<li><a href=#92>SET</a>
|
|
<li><a href=#93>SHOW</a>
|
|
<li><a href=#94>SIGNAL</a>
|
|
<li><a href=#95>SMASH</a>
|
|
<li><a href=#96>SMD</a>
|
|
<li><a href=#97>SPLIT</a>
|
|
<li><a href=#98>TECHNOLOGY</a>
|
|
<li><a href=#99>TEXT</a>
|
|
<li><a href=#100>UNDO</a>
|
|
<li><a href=#101>UPDATE</a>
|
|
<li><a href=#102>USE</a>
|
|
<li><a href=#103>VALUE</a>
|
|
<li><a href=#104>VIA</a>
|
|
<li><a href=#105>WINDOW</a>
|
|
<li><a href=#106>WIRE</a>
|
|
<li><a href=#107>WRITE</a>
|
|
</ul>
|
|
<li><a href=#108>Ausgabedaten erzeugen</a>
|
|
<ul>
|
|
<li><a href=#109>Drucken</a>
|
|
<ul>
|
|
<li><a href=#110>Drucken einer Zeichnung</a>
|
|
<li><a href=#111>Drucken eines Textes</a>
|
|
<li><a href=#112>Seiteneinrichtung</a>
|
|
</ul>
|
|
<li><a href=#113>CAM-Prozessor</a>
|
|
<ul>
|
|
<li><a href=#114>CAM-Prozessor-Hauptmenü</a>
|
|
<li><a href=#115>CAM-Prozessor-Job</a>
|
|
<li><a href=#116>Ausgabetreiber (Output Device)</a>
|
|
<ul>
|
|
<li><a href=#117>Device-Parameter</a>
|
|
<ul>
|
|
<li><a href=#118>Blenden-Konfigurationsdatei</a>
|
|
<li><a href=#119>Blenden-Emulation</a>
|
|
<li><a href=#120>Blenden-Toleranzen</a>
|
|
<li><a href=#121>Bohrer-Konfigurationsdatei</a>
|
|
<li><a href=#122>Bohrer-Toleranzen</a>
|
|
<li><a href=#123>Offset</a>
|
|
<li><a href=#124>Bedruckbarer Bereich</a>
|
|
<li><a href=#125>Stiftdaten</a>
|
|
</ul>
|
|
<li><a href=#126>Eigenen Device-Treiber definieren</a>
|
|
</ul>
|
|
<li><a href=#127>Ausgabedatei</a>
|
|
<li><a href=#128>Flag-Options</a>
|
|
<li><a href=#129>Layer und Farben</a>
|
|
</ul>
|
|
<li><a href=#130>Konturdaten</a>
|
|
</ul>
|
|
<li><a href=#131>Autorouter</a>
|
|
<li><a href=#132>Überprüfen des Designs</a>
|
|
<ul>
|
|
<li><a href=#133>Design Rules</a>
|
|
</ul>
|
|
<li><a href=#134>Querverweise</a>
|
|
<ul>
|
|
<li><a href=#135>Querverweis-Labels</a>
|
|
<li><a href=#136>Bauteil-Querverweise</a>
|
|
<li><a href=#137>Kontaktspiegel</a>
|
|
</ul>
|
|
<li><a href=#138>User Language</a>
|
|
<ul>
|
|
<li><a href=#139>Schreiben eines ULP</a>
|
|
<li><a href=#140>ULP ausführen</a>
|
|
<li><a href=#141>Syntax</a>
|
|
<ul>
|
|
<li><a href=#142>Whitespace</a>
|
|
<li><a href=#143>Kommentare</a>
|
|
<li><a href=#144>Direktiven</a>
|
|
<ul>
|
|
<li><a href=#145>#include</a>
|
|
<li><a href=#146>#require</a>
|
|
<li><a href=#147>#usage</a>
|
|
</ul>
|
|
<li><a href=#148>Schlüsselwörter (Keywords)</a>
|
|
<li><a href=#149>Identifier</a>
|
|
<li><a href=#150>Konstanten</a>
|
|
<ul>
|
|
<li><a href=#151>Character-Konstanten</a>
|
|
<li><a href=#152>Integer-Konstanten</a>
|
|
<li><a href=#153>Real-Konstanten</a>
|
|
<li><a href=#154>String-Konstanten</a>
|
|
<li><a href=#155>Escape-Sequenzen</a>
|
|
</ul>
|
|
<li><a href=#156>Punctuator-Zeichen</a>
|
|
<ul>
|
|
<li><a href=#157>Eckige Klammern</a>
|
|
<li><a href=#158>Runde Klammern</a>
|
|
<li><a href=#159>Geschweifte Klammern</a>
|
|
<li><a href=#160>Komma</a>
|
|
<li><a href=#161>Semikolon</a>
|
|
<li><a href=#162>Doppelpunkt</a>
|
|
<li><a href=#163>Gleichheitszeichen</a>
|
|
</ul>
|
|
</ul>
|
|
<li><a href=#164>Datentypen</a>
|
|
<ul>
|
|
<li><a href=#165>char</a>
|
|
<li><a href=#166>int</a>
|
|
<li><a href=#167>real</a>
|
|
<li><a href=#168>string</a>
|
|
<li><a href=#169>Typ-Umwandlung</a>
|
|
<li><a href=#170>Typecast</a>
|
|
</ul>
|
|
<li><a href=#171>Objekt-Typen</a>
|
|
<ul>
|
|
<li><a href=#172>UL_ARC</a>
|
|
<li><a href=#173>UL_AREA</a>
|
|
<li><a href=#174>UL_ATTRIBUTE</a>
|
|
<li><a href=#175>UL_BOARD</a>
|
|
<li><a href=#176>UL_BUS</a>
|
|
<li><a href=#177>UL_CIRCLE</a>
|
|
<li><a href=#178>UL_CLASS</a>
|
|
<li><a href=#179>UL_CONTACT</a>
|
|
<li><a href=#180>UL_CONTACTREF</a>
|
|
<li><a href=#181>UL_DEVICE</a>
|
|
<li><a href=#182>UL_DEVICESET</a>
|
|
<li><a href=#183>UL_ELEMENT</a>
|
|
<li><a href=#184>UL_FRAME</a>
|
|
<li><a href=#185>UL_GATE</a>
|
|
<li><a href=#186>UL_GRID</a>
|
|
<li><a href=#187>UL_HOLE</a>
|
|
<li><a href=#188>UL_INSTANCE</a>
|
|
<li><a href=#189>UL_JUNCTION</a>
|
|
<li><a href=#190>UL_LABEL</a>
|
|
<li><a href=#191>UL_LAYER</a>
|
|
<li><a href=#192>UL_LIBRARY</a>
|
|
<li><a href=#193>UL_NET</a>
|
|
<li><a href=#194>UL_PACKAGE</a>
|
|
<li><a href=#195>UL_PAD</a>
|
|
<li><a href=#196>UL_PART</a>
|
|
<li><a href=#197>UL_PIN</a>
|
|
<li><a href=#198>UL_PINREF</a>
|
|
<li><a href=#199>UL_POLYGON</a>
|
|
<li><a href=#200>UL_RECTANGLE</a>
|
|
<li><a href=#201>UL_SCHEMATIC</a>
|
|
<li><a href=#202>UL_SEGMENT</a>
|
|
<li><a href=#203>UL_SHEET</a>
|
|
<li><a href=#204>UL_SIGNAL</a>
|
|
<li><a href=#205>UL_SMD</a>
|
|
<li><a href=#206>UL_SYMBOL</a>
|
|
<li><a href=#207>UL_TEXT</a>
|
|
<li><a href=#208>UL_VIA</a>
|
|
<li><a href=#209>UL_WIRE</a>
|
|
</ul>
|
|
<li><a href=#210>Definitionen</a>
|
|
<ul>
|
|
<li><a href=#211>Konstanten-Definitionen</a>
|
|
<li><a href=#212>Variablen-Definitionen</a>
|
|
<li><a href=#213>Funktions-Definitionen</a>
|
|
</ul>
|
|
<li><a href=#214>Operatoren</a>
|
|
<ul>
|
|
<li><a href=#215>Bitweise Operatoren</a>
|
|
<li><a href=#216>Logische Operatoren</a>
|
|
<li><a href=#217>Vergleichs-Operatoren</a>
|
|
<li><a href=#218>Evaluation-Operatoren</a>
|
|
<li><a href=#219>Arithmetische Operatoren</a>
|
|
<li><a href=#220>String-Operatoren</a>
|
|
</ul>
|
|
<li><a href=#221>Ausdrücke</a>
|
|
<ul>
|
|
<li><a href=#222>Arithmetischer Ausdruck</a>
|
|
<li><a href=#223>Zuweisungs-Ausdruck</a>
|
|
<li><a href=#224>String-Ausdruck</a>
|
|
<li><a href=#225>Komma-Ausdruck</a>
|
|
<li><a href=#226>Bedingter Ausdruck</a>
|
|
<li><a href=#227>Funktionsaufruf</a>
|
|
</ul>
|
|
<li><a href=#228>Statements</a>
|
|
<ul>
|
|
<li><a href=#229>Compound-Statement (Verbundanweisung)</a>
|
|
<li><a href=#230>Expression-Statement (Ausdrucksanweisung)</a>
|
|
<li><a href=#231>Control-Statements (Steueranweisungen)</a>
|
|
<ul>
|
|
<li><a href=#232>break</a>
|
|
<li><a href=#233>continue</a>
|
|
<li><a href=#234>do...while</a>
|
|
<li><a href=#235>for</a>
|
|
<li><a href=#236>if...else</a>
|
|
<li><a href=#237>return</a>
|
|
<li><a href=#238>switch</a>
|
|
<li><a href=#239>while</a>
|
|
</ul>
|
|
</ul>
|
|
<li><a href=#240>Builtins</a>
|
|
<ul>
|
|
<li><a href=#241>Builtin-Constants</a>
|
|
<li><a href=#242>Builtin Variablen</a>
|
|
<li><a href=#243>Builtin-Functions</a>
|
|
<ul>
|
|
<li><a href=#244>Character-Funktionen</a>
|
|
<ul>
|
|
<li><a href=#245>is...()</a>
|
|
<li><a href=#246>to...()</a>
|
|
</ul>
|
|
<li><a href=#247>Datei-Funktionen</a>
|
|
<ul>
|
|
<li><a href=#248>fileerror()</a>
|
|
<li><a href=#249>fileglob()</a>
|
|
<li><a href=#250>Dateinamens-Funktionen</a>
|
|
<li><a href=#251>Datei-Daten-Funktionen</a>
|
|
<li><a href=#252>Datei-Einlese-Funktionen</a>
|
|
<ul>
|
|
<li><a href=#253>fileread()</a>
|
|
</ul>
|
|
</ul>
|
|
<li><a href=#254>Mathematische Funktionen</a>
|
|
<ul>
|
|
<li><a href=#255>Absolutwert-, Maximum- und Minimum-Funktion</a>
|
|
<li><a href=#256>Rundungs-Funktionen</a>
|
|
<li><a href=#257>Trigonometrische Funktionen</a>
|
|
<li><a href=#258>Exponential-Funktionen</a>
|
|
</ul>
|
|
<li><a href=#259>Sonstige Funktionen</a>
|
|
<ul>
|
|
<li><a href=#260>exit()</a>
|
|
<li><a href=#261>language()</a>
|
|
<li><a href=#262>lookup()</a>
|
|
<li><a href=#263>palette()</a>
|
|
<li><a href=#264>sort()</a>
|
|
<li><a href=#265>status()</a>
|
|
<li><a href=#266>system()</a>
|
|
<li><a href=#267>Einheiten-Konvertierung</a>
|
|
</ul>
|
|
<li><a href=#268>Print-Funktionen</a>
|
|
<ul>
|
|
<li><a href=#269>printf()</a>
|
|
<li><a href=#270>sprintf()</a>
|
|
</ul>
|
|
<li><a href=#271>String-Funktionen</a>
|
|
<ul>
|
|
<li><a href=#272>strchr()</a>
|
|
<li><a href=#273>strjoin()</a>
|
|
<li><a href=#274>strlen()</a>
|
|
<li><a href=#275>strlwr()</a>
|
|
<li><a href=#276>strrchr()</a>
|
|
<li><a href=#277>strrstr()</a>
|
|
<li><a href=#278>strsplit()</a>
|
|
<li><a href=#279>strstr()</a>
|
|
<li><a href=#280>strsub()</a>
|
|
<li><a href=#281>strtod()</a>
|
|
<li><a href=#282>strtol()</a>
|
|
<li><a href=#283>strupr()</a>
|
|
<li><a href=#284>strxstr()</a>
|
|
</ul>
|
|
<li><a href=#285>Zeit-Funktionen</a>
|
|
<ul>
|
|
<li><a href=#286>time()</a>
|
|
<li><a href=#287>timems()</a>
|
|
<li><a href=#288>Zeit-Konvertierungen</a>
|
|
</ul>
|
|
<li><a href=#289>Objekt-Funktionen</a>
|
|
<ul>
|
|
<li><a href=#290>clrgroup()</a>
|
|
<li><a href=#291>ingroup()</a>
|
|
<li><a href=#292>setgroup()</a>
|
|
</ul>
|
|
</ul>
|
|
<li><a href=#293>Builtin-Statements</a>
|
|
<ul>
|
|
<li><a href=#294>board()</a>
|
|
<li><a href=#295>deviceset()</a>
|
|
<li><a href=#296>library()</a>
|
|
<li><a href=#297>output()</a>
|
|
<li><a href=#298>package()</a>
|
|
<li><a href=#299>schematic()</a>
|
|
<li><a href=#300>sheet()</a>
|
|
<li><a href=#301>symbol()</a>
|
|
</ul>
|
|
</ul>
|
|
<li><a href=#302>Dialoge</a>
|
|
<ul>
|
|
<li><a href=#303>Vordefinierte Dialoge</a>
|
|
<ul>
|
|
<li><a href=#304>dlgDirectory()</a>
|
|
<li><a href=#305>dlgFileOpen(), dlgFileSave()</a>
|
|
<li><a href=#306>dlgMessageBox()</a>
|
|
</ul>
|
|
<li><a href=#307>Dialog-Objekte</a>
|
|
<ul>
|
|
<li><a href=#308>dlgCell</a>
|
|
<li><a href=#309>dlgCheckBox</a>
|
|
<li><a href=#310>dlgComboBox</a>
|
|
<li><a href=#311>dlgDialog</a>
|
|
<li><a href=#312>dlgGridLayout</a>
|
|
<li><a href=#313>dlgGroup</a>
|
|
<li><a href=#314>dlgHBoxLayout</a>
|
|
<li><a href=#315>dlgIntEdit</a>
|
|
<li><a href=#316>dlgLabel</a>
|
|
<li><a href=#317>dlgListBox</a>
|
|
<li><a href=#318>dlgListView</a>
|
|
<li><a href=#319>dlgPushButton</a>
|
|
<li><a href=#320>dlgRadioButton</a>
|
|
<li><a href=#321>dlgRealEdit</a>
|
|
<li><a href=#322>dlgSpacing</a>
|
|
<li><a href=#323>dlgSpinBox</a>
|
|
<li><a href=#324>dlgStretch</a>
|
|
<li><a href=#325>dlgStringEdit</a>
|
|
<li><a href=#326>dlgTabPage</a>
|
|
<li><a href=#327>dlgTabWidget</a>
|
|
<li><a href=#328>dlgTextEdit</a>
|
|
<li><a href=#329>dlgTextView</a>
|
|
<li><a href=#330>dlgVBoxLayout</a>
|
|
</ul>
|
|
<li><a href=#331>Layout-Information</a>
|
|
<li><a href=#332>Dialog-Funktionen</a>
|
|
<ul>
|
|
<li><a href=#333>dlgAccept()</a>
|
|
<li><a href=#334>dlgRedisplay()</a>
|
|
<li><a href=#335>dlgReset()</a>
|
|
<li><a href=#336>dlgReject()</a>
|
|
</ul>
|
|
<li><a href=#337>Escape-Zeichen</a>
|
|
<li><a href=#338>Ein vollständiges Beispiel</a>
|
|
</ul>
|
|
<li><a href=#339>Unterstützte HTML-Tags</a>
|
|
</ul>
|
|
<li><a href=#340>Automatischer Backup</a>
|
|
<li><a href=#341>Forward&Back-Annotation</a>
|
|
<ul>
|
|
<li><a href=#342>Konsistenzprüfung</a>
|
|
<li><a href=#343>Einschränkungen</a>
|
|
</ul>
|
|
<li><a href=#344>Technische Unterstützung</a>
|
|
<li><a href=#345>Lizenz</a>
|
|
<ul>
|
|
<li><a href=#346>EAGLE-Lizenz</a>
|
|
<li><a href=#347>EAGLE-Editionen</a>
|
|
</ul>
|
|
</ul>
|
|
|
|
|
|
<a name=1>
|
|
<h1>Erklärung der Hilfe-Funktion</h1>
|
|
Ist in einem <a href=#24>Layout-Editor</a>-,
|
|
<a href=#25>Schaltplan-Editor</a>-, oder
|
|
<a href=#22>Bibliotheks-Editor</a>-Fenster ein Befehl
|
|
aktiviert, dann wird nach Drücken der F1-Taste oder Eintippen von
|
|
<tt>HELP</tt> die Hilfe-Seite für diesen Befehl aufgerufen.
|
|
<p>
|
|
Die Erklärung eines Befehls kann auch durch die Eingabe von
|
|
<pre>
|
|
HELP befehl
|
|
</pre>
|
|
aufgerufen werden.
|
|
<p>
|
|
Ersetzen Sie "befehl" beispielsweise durch <tt>MOVE</tt>, dann rufen Sie
|
|
die Hilfe-Seite für den MOVE-Befehl auf.
|
|
<p>
|
|
Von jeder anderen Stelle aus öffnet <tt>F1</tt> eine "kontextsensitive"
|
|
Hilfe-Seite.
|
|
<p>
|
|
Folgende Hilfe-Seiten geben Auskunft für den Einstieg in das Programm.
|
|
<ul>
|
|
<li><a href=#4>Schnelle Einführung</a>
|
|
<li><a href=#2>EAGLE konfigurieren</a>
|
|
<li><a href=#3>Kommandozeilen-Optionen</a>
|
|
<li><a href=#12>Control Panel</a>
|
|
</ul>
|
|
|
|
|
|
<a name=2>
|
|
<h1>EAGLE konfigurieren</h1>
|
|
Die folgenden Editor-Befehle können dazu verwendet werden, EAGLE individuell
|
|
anzupassen. Sie können entweder direkt von der Kommandozeile eines
|
|
Editor-Fensters eingegeben werden oder man kann Sie in die Datei
|
|
<a href=#91>eagle.scr</a> eintragen.
|
|
<p>
|
|
Für die Befehle ASSIGN und SET exisitieren auch Dialoge, die über das
|
|
Options-Menü der Editor-Fenster aufgerufen werden.
|
|
<h2>Benutzer-Interface</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td>Befehlsmenü </td><td width=20><td><a href=#64>MENU</a>-Befehl..;</td></tr>
|
|
<tr><td>Tastenbelegung </td><td width=20><td><a href=#31>ASSIGN</a> function_key-Befehl..;</td></tr>
|
|
<tr><td>Snap-Funktion </td><td width=20><td><a href=#92>SET</a> SNAP_LENGTH number;</td></tr>
|
|
<tr><td> </td><td width=20><td><a href=#92>SET</a> CATCH_FACTOR value;</td></tr>
|
|
<tr><td> </td><td width=20><td><a href=#92>SET</a> SELECT_FACTOR value;</td></tr>
|
|
<tr><td>Inhalt von Menüs </td><td width=20><td><a href=#92>SET</a> USED_LAYERS name | number;</td></tr>
|
|
<tr><td> </td><td width=20><td><a href=#92>SET</a> WIDTH_MENU value..;</td></tr>
|
|
<tr><td> </td><td width=20><td><a href=#92>SET</a> DIAMETER_MENU value..;</td></tr>
|
|
<tr><td> </td><td width=20><td><a href=#92>SET</a> DRILL_MENU value..;</td></tr>
|
|
<tr><td> </td><td width=20><td><a href=#92>SET</a> SMD_MENU value..;</td></tr>
|
|
<tr><td> </td><td width=20><td><a href=#92>SET</a> SIZE_MENU value..;</td></tr>
|
|
<tr><td> </td><td width=20><td><a href=#92>SET</a> ISOLATE_MENU value..;</td></tr>
|
|
<tr><td> </td><td width=20><td><a href=#92>SET</a> SPACING_MENU value..;</td></tr>
|
|
<tr><td> </td><td width=20><td><a href=#92>SET</a> MITER_MENU value..;</td></tr>
|
|
<tr><td>Wire Bend </td><td width=20><td><a href=#92>SET</a> WIRE_BEND bend_nr;</td></tr>
|
|
<tr><td>Beep ein/aus </td><td width=20><td><a href=#92>SET</a> BEEP OFF | ON;</td></tr>
|
|
</table>
|
|
<h2>Bildschirmdarstellung</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td>Farbe für Grid-Linien </td><td width=20><td><a href=#92>SET</a> COLOR_GRID color;</td></tr>
|
|
<tr><td>Farbe für Layer </td><td width=20><td><a href=#92>SET</a> COLOR_LAYER layer color;</td></tr>
|
|
<tr><td>Fill Style für Layer </td><td width=20><td><a href=#92>SET</a> FILL_LAYER layer fill;</td></tr>
|
|
<tr><td>Grid-Parameter </td><td width=20><td><a href=#92>SET</a> MIN_GRID_SIZE pixels;</td></tr>
|
|
<tr><td>min. dargest. Textgröße </td><td width=20><td><a href=#92>SET</a> MIN_TEXT_SIZE size;</td></tr>
|
|
<tr><td>Darst. der Netzlinien </td><td width=20><td><a href=#92>SET</a> NET_WIRE_WIDTH width;</td></tr>
|
|
<tr><td>Darst. der Pads </td><td width=20><td><a href=#92>SET</a> DISPLAY_MODE REAL | NODRILL;</td></tr>
|
|
<tr><td> </td><td width=20><td><a href=#92>SET</a> PAD_NAMES OFF | ON;</td></tr>
|
|
<tr><td>Darst. der Buslinien </td><td width=20><td><a href=#92>SET</a> BUS_WIRE_WIDTH width;</td></tr>
|
|
<tr><td>DRC-Füllmuster </td><td width=20><td><a href=#92>SET</a> DRC_FILL fill_name;</td></tr>
|
|
<tr><td>Polygon-Berechnung </td><td width=20><td><a href=#92>SET</a> POLYGON_RATSNEST OFF | ON;</td></tr>
|
|
<tr><td>Vector Font </td><td width=20><td><a href=#92>SET</a> VECTOR_FONT OFF | ON;</td></tr>
|
|
</table>
|
|
<h2>Mode-Parameter</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td>Package-Check </td><td width=20><td><a href=#92>SET</a> CHECK_CONNECTS OFF | ON;</td></tr>
|
|
<tr><td>Grid-Parameter </td><td width=20><td><a href=#53>GRID</a> options;</td></tr>
|
|
<tr><td>Replace-Modus </td><td width=20><td><a href=#92>SET</a> REPLACE_SAME NAMES | COORDS;</td></tr>
|
|
<tr><td>UNDO-Buffer </td><td width=20><td><a href=#92>SET</a> UNDO_LOG OFF | ON;</td></tr>
|
|
<tr><td>Wire-Optimierung </td><td width=20><td><a href=#92>SET</a> OPTIMIZING OFF | ON;</td></tr>
|
|
<tr><td>Net-Wire beenden </td><td width=20><td><a href=#92>SET</a> AUTO_END_NET OFF | ON;</td></tr>
|
|
<tr><td>Automatische Junctions </td><td width=20><td><a href=#92>SET</a> AUTO_JUNCTION OFF | ON;</td></tr>
|
|
</table>
|
|
<h2>Voreinstellungen</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td>Pad-Form </td><td width=20><td><a href=#36>CHANGE</a> SHAPE shape;</td></tr>
|
|
<tr><td>Wire-Breite </td><td width=20><td><a href=#36>CHANGE</a> WIDTH value;</td></tr>
|
|
<tr><td>Pad/Via-Durchmesser </td><td width=20><td><a href=#36>CHANGE</a> DIAMETER diameter;</td></tr>
|
|
<tr><td>Pad/Via/Hole-Bohrd. </td><td width=20><td><a href=#36>CHANGE</a> DRILL value;</td></tr>
|
|
<tr><td>Smd-Größe </td><td width=20><td><a href=#36>CHANGE</a> SMD width height;</td></tr>
|
|
<tr><td>Text-Höhe </td><td width=20><td><a href=#36>CHANGE</a> SIZE value;</td></tr>
|
|
<tr><td>Text-Linienbreite </td><td width=20><td><a href=#36>CHANGE</a> RATIO ratio;</td></tr>
|
|
<tr><td>Text-Font </td><td width=20><td><a href=#36>CHANGE</a> FONT font;</td></tr>
|
|
<tr><td>Polygon-Parameter </td><td width=20><td><a href=#36>CHANGE</a> THERMALS OFF | ON;</td></tr>
|
|
<tr><td>Polygon-Parameter </td><td width=20><td><a href=#36>CHANGE</a> ORPHANS OFF | ON;</td></tr>
|
|
<tr><td>Polygon-Parameter </td><td width=20><td><a href=#36>CHANGE</a> ISOLATE distance;</td></tr>
|
|
<tr><td>Polygon-Parameter </td><td width=20><td><a href=#36>CHANGE</a> POUR SOLID | HATCH;</td></tr>
|
|
<tr><td>Polygon-Parameter </td><td width=20><td><a href=#36>CHANGE</a> RANK value;</td></tr>
|
|
<tr><td>Polygon-Parameter </td><td width=20><td><a href=#36>CHANGE</a> SPACING distance;</td></tr>
|
|
</table>
|
|
|
|
|
|
<a name=3>
|
|
<h1>Kommandozeilen-Optionen</h1>
|
|
EAGLE kann mit Kommandozeilen-Optionen aufgerufen werden. Dazu ist
|
|
folgendes Format erforderlich:
|
|
<pre>
|
|
eagle [ Optionen [ Dateiname [ Layer ] ] ]
|
|
</pre>
|
|
<h2>Optionen</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>-Cxxx</tt></td> <td width=20><td>den angegebenen Befehl ausführen</td></tr>
|
|
<tr><td><tt>-Dxxx</tt></td> <td width=20><td>Draw-Toleranz (0.1 = 10%)</td></tr>
|
|
<tr><td><tt>-Exxx</tt></td> <td width=20><td>Drill-Toleranz (0.1 = 10%)</td></tr>
|
|
<tr><td><tt>-Fxxx</tt></td> <td width=20><td>Flash-Toleranz (0.1 = 10%)</td></tr>
|
|
<tr><td><tt>-N-</tt></td> <td width=20><td>keine Rückfragen in der Kommandozeile</td></tr>
|
|
<tr><td><tt>-O+</tt></td> <td width=20><td>Stift-Bewegungen optimieren</td></tr>
|
|
<tr><td><tt>-Pxxx</tt></td> <td width=20><td>Plotter-Stift (Layer=Stift)</td></tr>
|
|
<tr><td><tt>-Rxxx</tt></td> <td width=20><td>Bohrer-Datei</td></tr>
|
|
<tr><td><tt>-Sxxx</tt></td> <td width=20><td>Script-Datei</td></tr>
|
|
<tr><td><tt>-Wxxx</tt></td> <td width=20><td>Blenden-Datei</td></tr>
|
|
<tr><td><tt>-X-</tt></td> <td width=20><td>CAM-Prozessor ausführen</td></tr>
|
|
<tr><td><tt>-a-</tt></td> <td width=20><td>Annulus-Blenden emulieren</td></tr>
|
|
<tr><td><tt>-c+</tt></td> <td width=20><td>positive Koordinaten</td></tr>
|
|
<tr><td><tt>-dxxx</tt></td> <td width=20><td>Ausgabegerät (-d? für Liste)</td></tr>
|
|
<tr><td><tt>-e-</tt></td> <td width=20><td>Blenden emulieren</td></tr>
|
|
<tr><td><tt>-f+</tt></td> <td width=20><td>Pads ausfüllen</td></tr>
|
|
<tr><td><tt>-hxxx</tt></td> <td width=20><td>Seitenhöhe (inch)</td></tr>
|
|
<tr><td><tt>-m-</tt></td> <td width=20><td>Ausgabe spiegeln</td></tr>
|
|
<tr><td><tt>-oxxx</tt></td> <td width=20><td>Ausgabedateiname</td></tr>
|
|
<tr><td><tt>-pxxx</tt></td> <td width=20><td>Stiftdurchmesser (mm)</td></tr>
|
|
<tr><td><tt>-q-</tt></td> <td width=20><td>Quick-Plot</td></tr>
|
|
<tr><td><tt>-r-</tt></td> <td width=20><td>Ausgabe um 90 Grad drehen</td></tr>
|
|
<tr><td><tt>-sxxx</tt></td> <td width=20><td>Skalierungsfaktor</td></tr>
|
|
<tr><td><tt>-t-</tt></td> <td width=20><td>Thermal-Blenden emulieren</td></tr>
|
|
<tr><td><tt>-u-</tt></td> <td width=20><td>Ausgabe auf dem Kopf stehend</td></tr>
|
|
<tr><td><tt>-vxxx</tt></td> <td width=20><td>Stiftgeschwindigkeit</td></tr>
|
|
<tr><td><tt>-wxxx</tt></td> <td width=20><td>Seitenbreite (inch)</td></tr>
|
|
<tr><td><tt>-xxxx</tt></td> <td width=20><td>X-Versatz (inch)</td></tr>
|
|
<tr><td><tt>-yxxx</tt></td> <td width=20><td>Y-Versatz (inch)</td></tr>
|
|
</table>
|
|
<p>
|
|
Hierbei bedeutet <tt>xxx</tt>, dass weitere Daten, z. B. ein Dateiname oder
|
|
eine Dezimalzahl an den Optionsbuchstaben angehängt werden müssen (ohne oder mit
|
|
Leerzeichen), wie zum Beispiel bei
|
|
<pre>
|
|
-Wmywheel.whl
|
|
-W mywheel.whl
|
|
-e Blenden-Emulation ein
|
|
-e+ dto.
|
|
-e- Blenden-Emulation aus
|
|
</pre>
|
|
Bei Schalter-Optionen bedeutet ein <tt>'-'</tt>, dass der Schalter standardmäßig
|
|
ausgeschaltet ist, während er bei <tt>'+'</tt> standardmäßig eingeschaltet ist.
|
|
<p>
|
|
Schalter-Optionen (z.B. <tt>-e</tt>) können ohne Wiederholung des <tt>'-'</tt>-Zeichens
|
|
verwendet werden:
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>-eatm</tt></td> <td width=20><td>Blenden-Emulation ein, Annulus- und Thermal-Emulation aus, Ausgabe spiegeln</td></tr>
|
|
<tr><td><tt>-ea-t+</tt></td> <td width=20><td>Blenden-Emulation ein, Annulus-Emulation <b>aus</b>, Thermal-Emulation <b>ein</b></td></tr>
|
|
</table>
|
|
<h2>Toleranzen definieren</h2>
|
|
Ohne <tt>'+'</tt>- oder <tt>'-'</tt>-Zeichen gilt eine Toleranzangabe für beide Richtungen:
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>-D0.10</tt></td> <td width=20><td>stellt Draw-Toleranz auf ±10% ein</td></tr>
|
|
<tr><td><tt>-D+0.1 -D-0.05</tt></td> <td width=20><td>stellt Draw-Toleranz auf +10% und -5% ein</td></tr>
|
|
</table>
|
|
<h2>Befehle Ausführen</h2>
|
|
Wird ein Befehl über die Option <tt>'-C'</tt> angegeben, wie etwa
|
|
<pre>
|
|
eagle -C "window (1 1) (2 2);" myboard.brd
|
|
</pre>
|
|
so lädt EAGLE die angegebene Datei und führt den Befehl so aus, als wäre
|
|
er in der Kommandozeile des Editor-Fensters eingegeben worden.
|
|
<p>
|
|
Folgende Bedingungen gelten für die Option <tt>'-C'</tt>:
|
|
<ul>
|
|
<li>Es muss ein Dateiname (Board, Schaltplan oder Library) angegeben werden,
|
|
so dass ein Editor-Fenster geöffnet wird, in dem der Befehl ausgeführt
|
|
werden kann. Diese Datei muss nicht notwendigerweise existieren.
|
|
<li>Die Datei <tt>eagle.scr</tt> wird nicht automatisch ausgeführt.
|
|
<li>Die Option <tt>'-s'</tt> wird ignoriert.
|
|
<li>Die Benutzer-Einstellungen werden nicht in die <tt>eaglerc</tt>-Datei zurückgeschrieben.
|
|
<li>Falls beim letzten Verlassen von EAGLE ein Projekt geöffnet war, so wird dieses
|
|
nicht geöffnet.
|
|
<li>Der Befehl kann ein einzelner Befehl sein oder eine Sequenz von durch
|
|
Semikolons getrennten Befehlen.
|
|
</ul>
|
|
Um EAGLE zu starten ohne automatisch die Datei <tt>eagle.scr</tt> auszuführen oder
|
|
ein Projekt zu laden, kann der Befehl auch leer sein:
|
|
<pre>
|
|
eagle -C ""
|
|
</pre>
|
|
Beachten Sie bitte, dass in diesem speziellen Fall ein Leerzeichen zwischen dem
|
|
Options-Buchstaben und den Anführungszeichen sein muss, damit das Programm den
|
|
explizit leeren String sieht. Es muss dann auch kein Dateiname angegeben werden,
|
|
da ja kein Befehl ausgeführt werden soll.
|
|
<h2>Dateiname</h2>
|
|
Falls der angegebene Dateiname <tt>eagle.epf</tt> ist (evtl. mit vorangestelltem
|
|
Verzeichnisnamen), so lädt EAGLE diese Projekt-Datei. Ansonsten wird, falls keine
|
|
Dateinamenserweiterung angegeben ist, <tt>.brd</tt> als Default verwendet.
|
|
|
|
|
|
<a name=4>
|
|
<h1>Schnelle Einführung</h1>
|
|
Um schnell mit EAGLE zurechtzukommen, sollten Sie mehr über folgende Themen
|
|
wissen:
|
|
<ul>
|
|
<li><a href=#5>Control Panel und Editor-Fenster</a>
|
|
<li><a href=#28>Befehlseingabe</a>
|
|
<li><a href=#6>Eingabe von Parametern und Werten</a>
|
|
<li><a href=#7>Schaltplan entwerfen</a>
|
|
<li><a href=#8>Schaltplan überprüfen</a>
|
|
<li><a href=#9>Platine aus Schaltplan erzeugen</a>
|
|
<li><a href=#10>Layout überprüfen</a>
|
|
<li><a href=#11>Bauelement in Bibliothek definieren</a>
|
|
<li><a href=#131>Autorouter benutzen</a>
|
|
<li><a href=#109>Ausdrucken auf den System-Drucker</a>
|
|
<li><a href=#113>Daten ausgeben mit dem CAM-Prozessor</a>
|
|
</ul>
|
|
Bei Problemen wenden Sie sich bitte an unseren
|
|
kostenlosen <a href=#344>Technischen Support</a>.
|
|
|
|
|
|
<a name=5>
|
|
<h1>Control Panel und Editor-Fenster</h1>
|
|
Vom <a href=#12>Control Panel</a> aus können Sie über das Datei-Menü
|
|
oder durch Anklicken eines Icons die Fenster des Schaltplan-, Layout-
|
|
und Bibliotheks-Editors öffnen.
|
|
|
|
|
|
<a name=6>
|
|
<h1>Eingabe von Parametern und Werten</h1>
|
|
Parameter und Werte können über die EAGLE-Kommandozeile oder,
|
|
wesentlich bequemer, über die Parameter-Toolbar eingegeben werden, die
|
|
erscheint, wenn ein Befehl aktiviert ist. Da dies keiner großen
|
|
Erklärung bedarf, wird an anderen Stellen im Hilfe-Text nicht explizit
|
|
darauf hingewiesen.
|
|
<p>
|
|
Wann immer Koordinaten oder Abmessungen (z.B. Leiterbahnbreiten oder Pad-Durchmesser)
|
|
angegeben werden können, können diese mit Einheiten versehen werden, wie etwa 50mil
|
|
oder 0.8mm. Wird keine Einheit angegeben, so wird die aktuelle Grid-Einheit verwendet.
|
|
|
|
|
|
<a name=7>
|
|
<h1>Schaltplan entwerfen</h1>
|
|
<h2>Schaltplan anlegen</h2>
|
|
Neuen Schaltplan mit "Datei/Neu" anlegen und mit "Datei/Speichern unter..." unter neuem
|
|
Namen abspeichern.
|
|
<h2>Zeichnungsrahmen laden</h2>
|
|
Bibliothek FRAMES mit <a href=#102>USE</a> laden und Rahmen mit <a href=#29>ADD</a> plazieren.
|
|
<h2>Symbole plazieren</h2>
|
|
Bibliotheken mit <a href=#102>USE</a> laden und Symbole plazieren (siehe <a href=#29>ADD</a>, <a href=#67>MOVE</a>,
|
|
<a href=#43>DELETE</a>, <a href=#88>ROTATE</a>, <a href=#68>NAME</a>, <a href=#103>VALUE</a>). Fehlt ein bestimmtes Bauelement, dann
|
|
mit Bibliotheks-Editor definieren.
|
|
<h2>Busse einzeichnen</h2>
|
|
Busse mit <a href=#35>BUS</a> einzeichnen. Geben Sie den Bussen Namen (<a href=#68>NAME</a>), aus denen
|
|
hervorgeht, welche Signale sich herausführen lassen.
|
|
<h2>Netze einzeichnen</h2>
|
|
Die Verbindungen zwischen den Pins der Elemente definiert man
|
|
mit <a href=#69>NET</a>. Dargestellt werden Netze im Net-Layer. Mit dem
|
|
Befehl <a href=#59>JUNCTION</a> kennzeichnet man Verbindungen sich kreuzender Netze.
|
|
|
|
|
|
<a name=8>
|
|
<h1>Schaltplan überprüfen</h1>
|
|
Electrical Rule Check (<a href=#48>ERC</a>) durchführen und anhand der Meldungen
|
|
Fehler korrigieren. Eventuell Netz- und Pin-Liste ausgeben (<a href=#50>EXPORT</a>).
|
|
Mit dem <a href=#93>SHOW</a>-Befehl Netze am Bildschirm verfolgen.
|
|
|
|
|
|
<a name=9>
|
|
<h1>Platine aus Schaltplan erzeugen</h1>
|
|
Mit dem <a href=#34>BOARD</a>-Befehl bzw. durch Anklicken des Board-Icons
|
|
erzeugen Sie eine Platine aus dem geladenen Schaltplan (falls noch
|
|
keine Platine mit demselben Namen existiert).
|
|
<p>
|
|
Es entsteht eine Leerplatine, neben der die mit Luftlinien verbundenen
|
|
Bauelemente plaziert sind. Versorgungs-Pins werden mit den Signalen
|
|
verbunden, die ihrem Namen entsprechen, falls nicht explizit ein
|
|
anderes Netz mit ihnen verbunden wurde.
|
|
<p>
|
|
Die Platine ist über die <a href=#341>Forward&Back-Annotation</a> mit dem Schaltplan
|
|
verbunden. Damit ist gewährleistet, dass beide übereinstimmen. Um die
|
|
Forward&Back-Annotation aufrechtzuerhalten, sollten Sie immer beide
|
|
Dateien geladen haben, wenn Sie Änderungen am Schaltplan oder an
|
|
der Platine durchführen.
|
|
<h2>Platinenumrisse und Plazierung festlegen</h2>
|
|
Gegebenenfalls die Leerplatine in Größe und Form verändern (<a href=#67>MOVE</a>,
|
|
<a href=#97>SPLIT</a>). Elemente an gewünschte Position verschieben (<a href=#67>MOVE</a>) und
|
|
überprüfen, ob die Plazierung günstig oder ungünstig ist (<a href=#81>RATSNEST</a>).
|
|
<h2>Sperrflächen definieren</h2>
|
|
Falls gewünscht, zeichnet man Sperrflächen für den Autorouter als
|
|
Rechtecke, Polygone oder Kreise in die Layer tRestrict, bRestrict und
|
|
vRestrict (siehe <a href=#82>RECT</a>, <a href=#77>POLYGON</a>, <a href=#37>CIRCLE</a>). Für den Autorouter begrenzen
|
|
auch geschlossene Wire-Züge im Dimension-Layer die Route-Fläche.
|
|
<h2>Routen</h2>
|
|
Mit dem <a href=#89>ROUTE</a>-Befehl lassen sich jetzt die Luftlinien in Leitungen
|
|
umwandeln. Diese Aufgabe kann man auch dem Autorouter (siehe Befehl
|
|
<a href=#33>AUTO</a>) zuweisen.
|
|
|
|
|
|
<a name=10>
|
|
<h1>Layout überprüfen</h1>
|
|
Design Rule Check (<a href=#46>DRC</a>) durchführen und Fehler korrigieren (<a href=#49>ERRORS</a>).
|
|
Eventuell Netz-, Bauteile- und Pin-Liste ausgeben (<a href=#50>EXPORT</a>).
|
|
|
|
|
|
<a name=11>
|
|
<h1>Bauelement in Bibliothek definieren</h1>
|
|
Die Definition eines Bauelements erfordert drei Schritte, die
|
|
aufeinander aufbauen.
|
|
<p>
|
|
Öffnen Sie eine Bibliothek mit Öffnen oder Neu im Datei-Menü.
|
|
<h2>Package definieren</h2>
|
|
Packages sind die Gehäuse der Bauelemente, die im Board dargestellt
|
|
werden.
|
|
<p>
|
|
Klicken Sie das Edit-Package-Icon an, und tragen Sie den gewünschten
|
|
Namen in das New-Feld ein.
|
|
<p>
|
|
Legen Sie das Raster fest (<a href=#53>GRID</a>).
|
|
<p>
|
|
Plazieren Sie die Pads (<a href=#73>PAD</a>) und legen Sie deren Namen (<a href=#68>NAME</a>) und
|
|
Parameter fest (<a href=#36>CHANGE</a>).
|
|
<p>
|
|
Plazieren Sie mit dem <a href=#99>TEXT</a>-Befehl die Strings >NAME und >VALUE
|
|
(repräsentieren den aktuellen Namen und Wert in der Platine), und
|
|
zeichnen Sie das Gehäuse (<a href=#106>WIRE</a>-Befehl) in die entsprechenden Layer.
|
|
<h2>Symbol definieren</h2>
|
|
Symbole sind der Teil eines Devices, das im Schaltplan dargestellt wird.
|
|
<p>
|
|
Klicken Sie das Edit-Symbol-Icon an, und tragen Sie den gewünschten
|
|
Namen in das New-Feld ein.
|
|
<p>
|
|
Plazieren Sie die Pins (<a href=#75>PIN</a>) und legen Sie deren Namen (<a href=#68>NAME</a>) und
|
|
Parameter fest (<a href=#36>CHANGE</a>).
|
|
<p>
|
|
Plazieren Sie mit dem <a href=#99>TEXT</a>-Befehl die Strings >NAME und >VALUE
|
|
(repräsentieren den aktuellen Namen und Wert im Schaltplan), und
|
|
zeichnen Sie das Symbol (<a href=#106>WIRE</a>-Befehl) in die entsprechenden Layer.
|
|
<h2>Device definieren</h2>
|
|
Ein Device enthält die Definition eines gesamten Bauelements
|
|
einschließlich Gehäuse und Schaltplan-Symbol(e).
|
|
<p>
|
|
Klicken Sie das Edit-Device-Icon an, und tragen Sie den gewünschten
|
|
Namen in das New-Feld ein.
|
|
<p>
|
|
Weisen Sie dem Device ein Gehäuse zu (<a href=#72>PACKAGE</a>-Befehl).
|
|
<p>
|
|
Verwenden Sie den <a href=#29>ADD</a>-Befehl, um das Symbol oder die Symbole in das
|
|
Device zu holen.
|
|
<p>
|
|
Klicken Sie auf das <a href=#40>CONNECT</a>-Icon, um festzulegen, welche Pins mit
|
|
welchen Gehäuse-Pads verbunden sind.
|
|
<p>
|
|
Speichern Sie die Bibliothek, und sie kann anschließend vom
|
|
Schaltplan- oder vom Board-Editor aus mit <a href=#102>USE</a> geladen werden.
|
|
|
|
|
|
<a name=12>
|
|
<h1>Control Panel</h1>
|
|
Das Control Panel ist EAGLEs Steuerzentrale.
|
|
Es enthält in der linken Fensterhälfte eine Baumstruktur und ein Informationsfenster
|
|
in der rechten Hälfte.
|
|
<h2>Verzeichnisse einstellen</h2>
|
|
Die Haupteinträge in der Baumansicht repräsentieren die verschiedenen EAGLE-Dateitypen.
|
|
Jeder der Einträge kann auf ein oder mehrere Verzeichnisse zeigen, die Dateien dieses
|
|
Typs enthalten.
|
|
Die Verzeichnisse werden im <a href=#14>Directories-Dialog</a> definiert.
|
|
Wenn einer der Haupteinträge auf ein Verzeichnis zeigt, sehen Sie nach dem Aufklappen
|
|
des Eintrags (entweder durch einen Klick auf das kleine Symbol links oder durch einen
|
|
Doppelklick auf den Eintrag selbst) direkt den Inhalt des Verzeichnisses.
|
|
Wenn ein Haupteintrag auf mehrere Verzeichnisse zeigt, werden nach dem Aufklappen alle
|
|
Verzeichniseinträge aufgelistet.
|
|
<h2>Kontext-Menü</h2>
|
|
Das <a href=#13>Kontext-Menü</a> eines Eintrags in der Baumstruktur
|
|
erreichen Sie mit einem rechten Mausklick auf den entsprechenden Eintrag. Es enthält
|
|
dann spezielle Punkte zu diesem Eintrag.
|
|
<h2>Beschreibungen</h2>
|
|
Die <i>Beschreibung</i>-Spalte der Baumansicht enthält eine Kurzbeschreibung des Eintrags
|
|
(wenn vorhanden). Diese Beschreibungen werden aus der ersten nicht leeren Textzeile der
|
|
folgenden Quellen erzeugt:
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td>Verzeichnisse</td> <td width=20><td>Die Datei mit dem Namen DESCRIPTION darin</td></tr>
|
|
<tr><td>Bibliotheken</td> <td width=20><td>DESCRIPTION-Befehl in der Bibliothek</td></tr>
|
|
<tr><td>Devices</td> <td width=20><td>DESCRIPTION-Befehl im Device-Editor</td></tr>
|
|
<tr><td>Packages</td> <td width=20><td>DESCRIPTION-Befehl im Package-Editor</td></tr>
|
|
<tr><td>Design-Regeln</td> <td width=20><td>Die Beschreibung der Design-Regel-Datei im DRC-Dialog</td></tr>
|
|
<tr><td>User-Language-Programme</td><td width=20><td>Text, durch die <tt>#usage</tt>-Anweisung gekennzeichnet</td></tr>
|
|
<tr><td>Script-Dateien</td> <td width=20><td>Der Kommentar am Anfang der Script-Datei</td></tr>
|
|
<tr><td>CAM-Jobs</td> <td width=20><td>DESCRIPTION-Befehl im CAM-Prozessor-Job</td></tr>
|
|
</table>
|
|
<h2>Drag&Drop</h2>
|
|
Sie können mit Hilfe von <i>Drag&Drop</i> Dateien und Verzeichnisse innerhalb der
|
|
Baumstruktur kopieren oder bewegen. Es ist auch möglich, ein Device oder ein Package
|
|
in das Schaltplan-, Layout- bzw. Library-Fenster zu ziehen und dort zu plazieren.
|
|
Zieht man User-Language-Programme und Script-Dateien auf ein Editor-Fenster, werden sie
|
|
darin ausgeführt. Design Rules werden einem Layout zugeordnet, wenn Sie einen entsprechenden
|
|
Eintrag in das Layout-Editor-Fenster ziehen.
|
|
Ziehen Sie eine Board-, Schaltplan- oder Library-Datei auf das jeweilige Editor-Fenster,
|
|
so wird die Datei in den Editor geladen.
|
|
All diese Funktionen erreichen Sie auch über das <i>Kontext-Menü</i> des entsprechenden Eintrags
|
|
in der Baumstruktur.
|
|
<h2>Informations-Fenster</h2>
|
|
In der rechten Hälfte des Control Panels werden Informationen zum selektierten
|
|
Punkt in der Baumstruktur angezeigt. Diese Informationen werden aus den Quellen
|
|
erzeugt, die unter <i>Beschreibungen</i> angegeben sind. Bei Device und Package
|
|
erhält man eine Voransicht des Elements.
|
|
<h2>Menü-Leiste</h2>
|
|
Die <i>Menü-Leiste</i> des Control Panels enthält folgende Punkte:
|
|
<h2>Datei</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td>Neu </td><td width=20><td>Erzeugt eine neue Datei</td></tr>
|
|
<tr><td>Öffnen </td><td width=20><td>Öffnet eine existierende Datei</td></tr>
|
|
<tr><td>Zuletzt geöffnete Projekte</td><td width=20><td>Öffnet eines der zuletzt bearbeiteten Projekte</td></tr>
|
|
<tr><td>Alles speichern </td><td width=20><td>Speichert alle modifizierten Editor-Dateien</td></tr>
|
|
<tr><td>Projekt schließen</td><td width=20><td>Schließt das aktuelle Projekt</td></tr>
|
|
<tr><td>Beenden </td><td width=20><td>Beendet das Programm</td></tr>
|
|
</table>
|
|
<h2>Ansicht</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td>Aktualisieren</td><td width=20><td>Aktualisiert den Inhalt der Baumansicht</td></tr>
|
|
<tr><td>Sortieren </td><td width=20><td>Ändert die Sortierung der Baumansicht</td></tr>
|
|
</table>
|
|
<h2>Optionen</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td>Verzeichnisse... </td><td width=20><td>Öffnet den <a href=#14>Verzeichnis-Dialog</a></td></tr>
|
|
<tr><td>Sicherung... </td><td width=20><td>Öffnet den <a href=#15>Sicherungs-Dialog</a></td></tr>
|
|
<tr><td>Benutzeroberfläche... </td><td width=20><td>Öffnet den <a href=#16>Benutzeroberfläche-Dialog</a></td></tr>
|
|
<tr><td>Fensterpositionen... </td><td width=20><td>Öffnet den <a href=#17>Fensterpositionen-Dialog</a></td></tr>
|
|
</table>
|
|
<h2>Fenster</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td>Control Panel </td><td width=20><td>Zum Control Panel wechseln</td></tr>
|
|
<tr><td>1 Schaltplan - ... </td><td width=20><td>Zu Fenster 1 wechseln</td></tr>
|
|
<tr><td>2 Board - ... </td><td width=20><td>Zu Fenster 2 wechseln</td></tr>
|
|
</table>
|
|
<h2>Hilfe</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td>Allgemein </td><td width=20><td>Öffnet eine allgemeine Hilfe-Seite</td></tr>
|
|
<tr><td>Kontext </td><td width=20><td>Öffnet die Hilfe-Seite für den momentanen Kontext</td></tr>
|
|
<tr><td>Control Panel </td><td width=20><td>Öffnet diese Hilfe-Seite</td></tr>
|
|
<tr><td>EAGLE Lizenz </td><td width=20><td>Öffnet den <a href=#346>Lizenz-Dialog</a></td></tr>
|
|
<tr><td>Auf Update prüfen </td><td width=20><td><a href=#18>Prüft</a> ob eine neue Version von EAGLE verfügbar ist</td></tr>
|
|
<tr><td>Über EAGLE </td><td width=20><td>Zeigt Details zu Ihrer EAGLE Version und <a href=#345>Lizenz</a> an</td></tr>
|
|
</table>
|
|
<h2>Statuszeile</h2>
|
|
Die Statuszeile unten im Control Panel enthält
|
|
den vollständigen Namen des gegenwärtig selektierten Objektes.
|
|
|
|
|
|
<a name=13>
|
|
<h1>Kontext-Menüs</h1>
|
|
Ein Klick mit der rechten Maustaste auf ein Objekt des
|
|
<a href=#12>Control Panels</a> öffnet ein Kontext-Menü das
|
|
folgende Aktionen ermöglicht (nicht alle davon sind für alle Objekte zutreffend):
|
|
<h2>Neuer Ordner</h2>
|
|
Erzeugt ein neues Verzeichnis unterhalb des selektierten Ordners und schaltet den
|
|
neu erzeugten Zweig der Baumansicht in den <i>Umbenennen</i>-Modus, so dass der
|
|
gewünschte Name vergeben werden kann.
|
|
<h2>Beschreibung editieren</h2>
|
|
Lädt die DESCRIPTION-Datei in den HTML-Editor.
|
|
<h2>Umbenennen</h2>
|
|
Schaltet den Eintrag der Baumansicht in den Editier-Modus, so dass er umbenannt
|
|
werden kann.
|
|
<h2>Kopieren</h2>
|
|
Öffnet einen Datei-Dialog in dem Sie den neuen Namen der zu kopierenden Datei bzw. des
|
|
Verzeichnisses angeben. Dateien oder Verzeichnisse kann man auch mit Hilfe von
|
|
<i>Drag&Drop</i> kopieren.
|
|
<h2>Löschen</h2>
|
|
Löscht die Datei oder das Verzeichnis. Sie werden vor dem Löschen gefragt, ob
|
|
wirklich gelöscht werden soll.
|
|
<h2>Use</h2>
|
|
Ist eine Bibliothek als <i>in use</i> markiert, werden die Devices und Packages darin
|
|
von der Suchfunktion berücksichtigt. Sie können auch durch einen Mausklick auf den Marker
|
|
in der zweiten Spalte der Baumansicht die Bibliothek freigeben oder nicht.
|
|
<h2>Alle Bibliotheken laden</h2>
|
|
Alle Bibliotheken im Bibliothekspfad werden bei der Suche nach Devices und Packages
|
|
berücksichtigt, d. h. alle Bibliotheken sind <i>in use</i>.
|
|
<h2>Keine Bibliothek laden</h2>
|
|
Keine der Bibliotheken ist <i>in use</i> (einschließlich der Bibliotheken, die nicht im Bibliothekspfad stehen).
|
|
<h2>Update</h2>
|
|
Tauscht alle Bauteile des geladenen Schaltplans oder Layouts, die aus dieser Bibliothek genommen wurden gegen die
|
|
aktuelle Bauteile-Definition aus.
|
|
<h2>Update in Bibliothek</h2>
|
|
Tauscht alle in der geladenen Bibliothek verwendeten Gehäusedefinitionen gegen den aktuellen Stand aus dieser
|
|
Bibliothek aus.
|
|
<h2>In Schaltplan einfügen</h2>
|
|
Startet den <a href=#29>ADD</a>-Befehl im Schaltplan-Editor für dieses Device.
|
|
Das ist auch über <i>Drag&Drop</i> möglich.
|
|
<h2>In Platine einfügen</h2>
|
|
Startet den <a href=#29>ADD</a>-Befehl im Layout-Editor für dieses Package.
|
|
Das ist auch über <i>Drag&Drop</i> möglich.
|
|
<h2>In Bibliothek kopieren</h2>
|
|
Kopiert das selektierte Device-Set oder Package in die geladene Bibliothek.
|
|
Das ist auch über <i>Drag&Drop</i> möglich.
|
|
<h2>Neue Variante in der Bibliothek</h2>
|
|
Erzeugt eine neue Package-Variante mit dem selektierten Package im aktuellen
|
|
Device-Set der geladenen Bibliothek.
|
|
Das ist auch über <i>Drag&Drop</i> möglich.
|
|
<h2>Projekt öffnen/schließen</h2>
|
|
Öffnet oder schließt ein Projekt.
|
|
Dazu können Sie auch auf den Marker rechts vom Projekt-Eintrag in der Baumansicht klicken.
|
|
<h2>Neu</h2>
|
|
Öffnet ein Fenster mit der neuen Datei des entsprechenden Typs.
|
|
<h2>Öffnen</h2>
|
|
Öffnet ein Editor-Fenster mit dieser Datei.
|
|
Das ist auch mit über <i>Drag&Drop</i> möglich.
|
|
<h2>Drucken...</h2>
|
|
Druckt die Datei auf dem System-Drucker aus.
|
|
Weitere Informationen zur Benutzung der Druck-Dialoge entnehmen Sie
|
|
bitte dem Kapitel <a href=#109>Drucken auf dem System-Drucker</a>.
|
|
<p>
|
|
Wird eine Datei über dies Kontext-Menü Option ausgedruckt, so wird immer
|
|
die Datei von der Platte gelesen, auch wenn Sie ein offenes Editor Fenster
|
|
haben in dem Sie die Datei editieren! Benutzen Sie den
|
|
<a href=#79>PRINT</a>-Befehl um eine Zeichnung aus einem offenen
|
|
Editor Fenster heraus zu drucken.<br>
|
|
<b>Bitte beachten Sie, dass Polygone in Platinen beim Ausdrucken über das
|
|
Kontext-Menü nicht automatisch freigerechnet werden! Es werden lediglich die
|
|
Umrisse dargestellt. Um die Polygone freigerechnet auszudrucken, laden Sie
|
|
die Zeichnung in ein Editor-Fenster, geben Sie
|
|
<a href=#81>RATSNEST</a> ein und dann
|
|
<a href=#79>PRINT</a>.</b>
|
|
<h2>Im ... ausführen</h2>
|
|
Startet das gewählte User-Language-Programm bzw. Script im aktuellen Schaltplan, Board oder in der
|
|
Bibliothek.
|
|
Das ist auch über <i>Drag&Drop</i> möglich.
|
|
<h2>Im Board laden</h2>
|
|
Lädt diesen Satz von Design Rules für das aktuelle Board.
|
|
Das ist auch über<i>Drag&Drop</i> möglich.
|
|
|
|
|
|
<a name=14>
|
|
<h1>Verzeichnisse</h1>
|
|
Mit dem <i>Verzeichnisse</i>-Dialog definiert man die Pfade, in denen nach
|
|
Dateien gesucht werden soll.
|
|
<p>
|
|
Alle Felder können ein oder mehrere, durch Doppelpunkt (<b><tt>':'</tt></b>) getrennte
|
|
Verzeichnisse enthalten, in denen nach den verschiedenen Dateitypen gesucht wird.
|
|
<table><tr><td valign="top"><img src="platforms-win.png"></td><td valign="middle">
|
|
Unter <b>Windows</b> werden die einzelnen Verzeichnisnamen durch Strichpunkte (<b><tt>';'</tt></b>) getrennt.
|
|
</td></tr></table>
|
|
Wird einer der Befehle <a href=#70>OPEN</a>,
|
|
<a href=#102>USE</a>, <a href=#91>SCRIPT</a> oder
|
|
<a href=#90>RUN</a> eingegeben, dann werden diese Pfade durchsucht,
|
|
mit Priorität von links nach rechts.
|
|
Wird der Datei-Dialog benutzt um eine Datei eines dieser Typen anzusprechen, so wird
|
|
das Verzeichnis, in das der Anwender mittels des Datei-Dialogs navigiert hat, implizit
|
|
an das Ende des jeweiligen Pfades angehängt.
|
|
<p>
|
|
Die Variablen <tt>$HOME</tt> und <tt>$EAGLEDIR</tt> werden verwendet, um das
|
|
Home-Verzeichnis des Benutzers bzw. das EAGLE-Programm-Verzeichnis anzugeben.
|
|
<table><tr><td valign="top"><img src="platforms-win.png"></td><td valign="middle">
|
|
Unter <b>Windows</b> gilt für <tt>$HOME</tt> entweder die Umgebungsvariable HOME (falls gesetzt),
|
|
oder der Wert des Schlüssels "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Personal"
|
|
in der Windows-Registry, der den gültigen Pfad des Verzeichnisses "Eigene Dateien" enthält.
|
|
</td></tr></table>
|
|
|
|
|
|
<a name=15>
|
|
<h1>Datensicherung</h1>
|
|
Der <i>Datensicherung</i>-Dialog ermöglicht es Ihnen, den
|
|
<a href=#340>automatischen Backup</a> individuell
|
|
einzustellen.
|
|
<h2>Max. Anzahl der Sicherungskopien</h2>
|
|
Definiert wie viele Backup-Kopien Ihrer EAGLE-Dateien "aufgehoben"
|
|
werden wenn eine Datei normal mit dem WRITE-Befehl abgespeichert wird (Default: 9).
|
|
<h2>Intervall f. automat. Sicherung (Minuten)</h2>
|
|
Bestimmt das Zeitintervall nachdem EAGLE automatisch eine Sicherungskopie aller
|
|
modifizierten Zeichnungsdateien erzeugt (default ist 5 min.).
|
|
<h2>Projektdatei automatisch sichern</h2>
|
|
Ist diese Option gewählt, werden Ihre Projekteinstellungen automatisch gesichert, wenn
|
|
Sie das Programm verlassen.
|
|
Bitte beachten Sie, dass das momentan geöffnete Projekt nicht abgespeichert wird,
|
|
wenn Sie diese Option ausschalten, was zur Folge hat, dass die Einstellung nicht
|
|
nicht in der eagle.epf-Datei des Projekts gespeichert wird. Daher ist diese
|
|
Option wieder eingeschaltet, wenn Sie das Projekt das nächste Mal öffnen.
|
|
Wenn Sie wollen, dass diese Option für das aktuelle Projekt ausgeschaltet
|
|
bleibt, müssen Sie manuell "Datei/Alles speichern" aus dem Pulldown-Menü
|
|
wählen, nachdem Sie die Option ausgeschaltet haben.
|
|
|
|
|
|
<a name=16>
|
|
<h1>Benutzeroberfläche</h1>
|
|
Der <i>Benutzeroberfläche</i>-Dialog ermöglicht es, das Erscheinungsbild der
|
|
<a href=#21>Editor-Fenster</a> für Layout, Schaltplan
|
|
und Bibliothek den eigenen Vorstellungen anzupassen.
|
|
<h2>Symbolleisten und Menüs</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td>Menüleiste </td><td width=20><td>aktiviert das Pulldown-Menü am oberen Rand des Editor-Fensters</td></tr>
|
|
<tr><td>Aktionsleiste </td><td width=20><td>aktiviert die Toolbar mit Buttons für "Datei", "Drucken" etc.</td></tr>
|
|
<tr><td>Parameterleiste </td><td width=20><td>aktiviert die dynamische Parameter-Toolbar, die alle Parameter des gerade aktiven Befehls enthält</td></tr>
|
|
<tr><td>Befehlsmenü </td><td width=20><td>aktiviert die Kommando-Toolbar</td></tr>
|
|
<tr><td>Textmenü </td><td width=20><td>aktiviert das Text-Menü</td></tr>
|
|
<tr><td>Seitenvorschau </td><td width=20><td>aktiviert die Vorschau für Schaltplanseiten</td></tr>
|
|
</table>
|
|
<h2>Layout</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td>Hintergrund </td><td width=20><td>wählt die Hintergrundfarbe schwarz, weiß oder farbig im Layout-Editor</td></tr>
|
|
<tr><td>Mauszeiger </td><td width=20><td>wählt einen kleines Kreuz oder ein großes Fadenkreuz als Mauszeiger im Layout-Editor</td></tr>
|
|
</table>
|
|
<h2>Schaltplan</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td>Hintergrund </td><td width=20><td>wählt die Hintergrundfarbe schwarz, weiß oder farbig im Schaltplan-Editor</td></tr>
|
|
<tr><td>Mauszeiger </td><td width=20><td>wählt ein kleines Kreuz oder ein großes Fadenkreuz als Mauszeiger im Schaltplan-Editor</td></tr>
|
|
</table>
|
|
<h2>Hilfe</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td>Direkthilfe </td><td width=20><td>aktiviert die "Direkthilfe" Funktion, die einen kurzen Hinweis über die Bedeutung der Buttons gibt, wenn man den Mauszeiger über einen solchen bewegt</td></tr>
|
|
<tr><td>Benutzerführung </td><td width=20><td>aktiviert die "Benutzerführung", die einen Hilfetext anzeigt, der dem Benutzer bei aktivem Befehl jederzeit den nächsten sinnvollen Schritt angibt</td></tr>
|
|
</table>
|
|
<h2>Misc</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td>Immer Vektor-Schrift </td><td width=20><td>Texte in Zeichnungen werden immer im EAGLE-eigenen
|
|
Vektor-Font dargestellt, unabhängig welche Schriftart für einen Text ursprünglich gewählt wurde.</td></tr>
|
|
<tr><td>Mausrad-Zoomfaktor </td><td width=20><td>definiert den Zoom-Faktor für das Hinein- bzw.
|
|
Herauszoomen mit einer Rädchenmaus in einem Editor-Fenster ('0' schaltet diese
|
|
Funktion aus, das Vorzeichen bestimmt die Drehrichtung des Rädchens)</td></tr>
|
|
</table>
|
|
|
|
|
|
<a name=17>
|
|
<h1>Fensterpositionen</h1>
|
|
Der <i>Fensterpositionen</i>-Dialog ermöglicht es, die Positionen aller momentan
|
|
geöffneten Fenster abzuspeichern, so dass später, wenn ein Fenster des gleichen Typs
|
|
erneut geöffnet wird, dieses an der gleichen Stelle wie zuvor erscheint.
|
|
<p>
|
|
Sie können auch alle gespeicherten Fensterpositionen löschen, so dass es wieder
|
|
dem Window-Manager überlassen ist, wo neu geöffnete Fenster platziert werden.
|
|
|
|
|
|
<a name=18>
|
|
<h1>Auf Update prüfen</h1>
|
|
Die Option "Hilfe/Auf Update prüfen" im Pulldown-Menü des Control-Panels
|
|
öffnet einen Dialog, der anzeigt, ob auf dem CadSoft-Server eine neue
|
|
Version von EAGLE zur Verfügung steht.
|
|
<p>
|
|
Der <b>Konfigurieren</b>-Button öffnet einen Dialog, in dem Sie angeben können ob
|
|
und wie häufig eine automatische Überprüfung auf eine neue Version beim
|
|
Programmstart stattfinden soll (standardmäßig geschieht dies einmal am Tag).
|
|
Falls Sie einen Proxy benützen müssen, um das Internet anzusprechen, so
|
|
können Sie diesen auch im Konfigurationsdialog angeben. Geben Sie den Namen
|
|
in der Form
|
|
<pre>
|
|
hostname:port
|
|
</pre>
|
|
ein, wobei <i>hostname</i> der volle Name des Proxy-Rechners ist, ohne etwaigen
|
|
<tt>http://</tt>-Präfix, und <i>port</i> eine optionale Port-Nummer.
|
|
<p>
|
|
Falls Sie auch über Betaversionen von EAGLE informiert werden möchten, so
|
|
können sie die Option "Auch auf Betaversionen prüfen" einschalten.
|
|
|
|
|
|
<a name=19>
|
|
<h1>Tastatur und Maus</h1>
|
|
Die <i>Steuertasten</i> (<tt>Alt</tt>, <tt>Ctrl</tt> und <tt>Shift</tt>) werden benutzt
|
|
um das Verhalten bestimmter Maus-Aktionen zu verändern.
|
|
Beachten Sie bitte, dass abhänging vom verwendeten Betriebssystem bzw. Window-Manager
|
|
manche dieser Tasten (in Kombination mit Maus-Aktionen) möglicherweise nicht an
|
|
Applikationen weitergeleitet werden, was zur Folge hat, dass einige der hier beschriebenen
|
|
Funktionen dann nicht verfügbar sind.
|
|
<p>
|
|
Auf deutschen Tastaturen wird die <tt>Ctrl</tt>-Taste meist als <tt>Strg</tt>
|
|
bezeichnet und die <tt>Shift</tt>-Taste als "Umschalt-Taste". Da EAGLE an einigen
|
|
Stellen Code-Buchstaben für die Bezeichnung dieser Tasten verwendet (siehe
|
|
<a href=#31>ASSIGN</a> und <a href=#28>Befehlseingabe</a>)
|
|
verwenden wir durchgehend die Bezeichnungen <tt>Ctrl</tt> und <tt>Shift</tt>.
|
|
<h2>Alt</h2>
|
|
Ein Druck auf die <tt>Alt</tt>-Taste schaltet auf ein alternatives <a href=#53>GRID</a>
|
|
um. Dies kann typischerweise ein feineres Raster als das normale sein, wodurch es
|
|
zum Beispiel schnell und einfach möglich ist etwas in einem dicht belegten Gebiet
|
|
fein zu positionieren, wofür das normal Raster zu grob wäre.
|
|
Das alternative Grid bleibt so lange aktiv, wie die <tt>Alt</tt>-Taste gedrückt
|
|
gehalten wird.
|
|
<h2>Ctrl</h2>
|
|
Wird die <tt>Ctrl</tt>-Taste zusammen mit der rechten Maustaste gedrückt so wird
|
|
zwischen korrespondierenden Knickwinkeln hin und her geschaltet (dies betrifft nur
|
|
Befehle die Wire-Knickwinkel unterstützen, wie etwa <a href=#106>WIRE</a>).
|
|
<p>
|
|
Die <tt>Ctrl</tt>-Taste zusammen mit der linken Maustaste steuert spezielle Funktionen
|
|
der einzelnen Befehle, wie zum Beispiel das Aufnehmen eines Objektes an seinem
|
|
Aufhängepunkt beim <a href=#67>MOVE</a>-Befehl.
|
|
<p>
|
|
Falls ein Befehl eine Gruppe selektieren kann, so muss die <tt>Ctrl</tt>-Taste zusammen
|
|
mit der rechten Maustaste gedrückt werden, um die Gruppe zu selektieren (ansonsten
|
|
würde ein Kontext-Menü für das ausgewählte Objekt geöffnet).
|
|
<p>
|
|
<table><tr><td valign="top"><img src="platforms-mac.png"></td><td valign="middle">
|
|
Unter <b>Mac OS X</b> ist anstatt der <tt>Ctrl</tt>-Taste die <tt>Cmd</tt>-Taste
|
|
zu verwenden.
|
|
</td></tr></table>
|
|
<h2>Shift</h2>
|
|
Wird die <tt>Shift</tt>-Taste zusammen mit der rechten Maustaste gedrückt so wird
|
|
die Richtung des Weiterschaltens des Knickwinkels umgekehrt (dies betrifft nur
|
|
Befehle die Wire-Knickwinkel unterstützen, wie etwa <a href=#106>WIRE</a>).
|
|
<p>
|
|
Die <tt>Shift</tt>-Taste zusammen mit der linken Maustaste steuert spezielle Funktionen
|
|
der einzelnen Befehle, wie zum Beispiel das Löschen eines übergeordneten Objektes
|
|
beim <a href=#43>DELETE</a>-Befehl.
|
|
<h2>Esc</h2>
|
|
Wird bei einem aktiven Befehl die <tt>Esc</tt>-Taste gedrückt, so wird die
|
|
aktuelle Aktion dieses Befehls beendet, ohne dass der gesamte Befehl
|
|
abgebrochen wird (falls die Kommandozeile Text enthält so wird dieser zuerst
|
|
gelöscht und der nächste Druck auf die <tt>Esc</tt>-Taste wirkt auf den Befehl).
|
|
Für den <a href=#67>MOVE</a>-Befehl zum Beispiel bedeutet dies, dass ein am Mauszeiger
|
|
befindliches Objekt "fallengelassen" wird und ein anderes Objekt
|
|
selektiert werden kann.
|
|
<h2>Crsr-Up/Down</h2>
|
|
Die Tasten <tt>Crsr-Up</tt> (Pfeil nach oben) bzw. <tt>Crsr-Down</tt>
|
|
(Pfeil nach unten) erlauben es in der Kommandozeile des Editor-Fensters
|
|
früher eingegeben Befehlszeilen wieder herzuholen ("History-Funktion").
|
|
<h2>Funktionstasten</h2>
|
|
Beliebige Kommandos können mit dem <a href=#31>ASSIGN</a>-Befehl auf
|
|
Funktionstasten gelegt werden.
|
|
<h2>Linke Maustaste</h2>
|
|
Die linke Maustaste dient generell zum Selektieren, Zeichnen und Plazieren von
|
|
Objekten.
|
|
<h2>Mittlere Maustaste</h2>
|
|
Die mittlere Maustaste wechselt den aktuellen Layer oder spiegelt das am Mauszeiger
|
|
hängende Objekt.
|
|
<p>
|
|
Folgende Befehle unterstützen die mittlere Maustaste:
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><a href=#29>ADD</a> </td><td width=20><td>Bauteil spiegeln</td></tr>
|
|
<tr><td><a href=#30>ARC</a> </td><td width=20><td>aktiven Layer wechseln</td></tr>
|
|
<tr><td><a href=#37>CIRCLE</a> </td><td width=20><td>aktiven Layer wechseln</td></tr>
|
|
<tr><td><a href=#41>COPY</a> </td><td width=20><td>Objekt spiegeln</td></tr>
|
|
<tr><td><a href=#58>INVOKE</a> </td><td width=20><td>Gatter spiegeln</td></tr>
|
|
<tr><td><a href=#60>LABEL</a> </td><td width=20><td>aktiven Layer wechseln</td></tr>
|
|
<tr><td><a href=#67>MOVE</a> </td><td width=20><td>Objekt oder Gruppe spiegeln</td></tr>
|
|
<tr><td><a href=#74>PASTE</a> </td><td width=20><td>Gruppe spiegeln</td></tr>
|
|
<tr><td><a href=#77>POLYGON</a> </td><td width=20><td>aktiven Layer wechseln</td></tr>
|
|
<tr><td><a href=#82>RECT</a> </td><td width=20><td>aktiven Layer wechseln</td></tr>
|
|
<tr><td><a href=#89>ROUTE</a> </td><td width=20><td>aktiven Layer wechseln</td></tr>
|
|
<tr><td><a href=#96>SMD</a> </td><td width=20><td>aktiven Layer wechseln</td></tr>
|
|
<tr><td><a href=#99>TEXT</a> </td><td width=20><td>aktiven Layer wechseln</td></tr>
|
|
<tr><td><a href=#106>WIRE</a> </td><td width=20><td>aktiven Layer wechseln</td></tr>
|
|
</table>
|
|
<p>
|
|
Click&Drag mit der mittleren Maustaste verschiebt die Zeichnung innerhalb
|
|
des Editor-Fensters.
|
|
<h2>Rechte Maustaste</h2>
|
|
Die rechte Maustaste wird im Wesentlichen dazu verwendet, eine Gruppe zu selektieren,
|
|
am Mauszeiger hängende Objekte zu rotieren, den Wire-Knickwinkel zu ändern sowie für
|
|
einige andere, befehlsspezifische Funktionen.
|
|
<p>
|
|
Wird ein Objekt mit der rechten Maustaste angeklickt, so wird ein kontextspezifisches
|
|
Popup-Menü angezeigt, aus dem Befehle, die für dieses Objekt anwendbar sind, ausgewählt
|
|
werden können.
|
|
Falls gerade ein Befehl aktiv ist, der auf eine Gruppe angewendet werden kann,
|
|
enthält das Popup-Menü einen entsprechenden Eintrag.
|
|
<p>
|
|
Folgende Befehle unterstützen die rechte Maustaste:
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><a href=#29>ADD</a> </td><td width=20><td>Bauteil drehen</td></tr>
|
|
<tr><td><a href=#30>ARC</a> </td><td width=20><td>Drehsinn des Kreisbogens ändern</td></tr>
|
|
<tr><td><a href=#35>BUS</a> </td><td width=20><td>Wire-Knickwinkel ändern</td></tr>
|
|
<tr><td><a href=#36>CHANGE</a> </td><td width=20><td>Change auf Gruppe anwenden</td></tr>
|
|
<tr><td><a href=#43>DELETE</a> </td><td width=20><td>Gruppe löschen</td></tr>
|
|
<tr><td><a href=#54>GROUP</a> </td><td width=20><td>Polygon schließen</td></tr>
|
|
<tr><td><a href=#58>INVOKE</a> </td><td width=20><td>Gatter drehen</td></tr>
|
|
<tr><td><a href=#60>LABEL</a> </td><td width=20><td>Label drehen</td></tr>
|
|
<tr><td><a href=#65>MIRROR</a> </td><td width=20><td>Gruppe spiegeln</td></tr>
|
|
<tr><td><a href=#67>MOVE</a> </td><td width=20><td>Objekt drehen bzw. Gruppe selektieren</td></tr>
|
|
<tr><td><a href=#69>NET</a> </td><td width=20><td>Wire-Knickwinkel ändern</td></tr>
|
|
<tr><td><a href=#73>PAD</a> </td><td width=20><td>Pad drehen</td></tr>
|
|
<tr><td><a href=#74>PASTE</a> </td><td width=20><td>Gruppe drehen</td></tr>
|
|
<tr><td><a href=#75>PIN</a> </td><td width=20><td>Pin drehen</td></tr>
|
|
<tr><td><a href=#77>POLYGON</a> </td><td width=20><td>Wire-Knickwinkel ändern</td></tr>
|
|
<tr><td><a href=#87>RIPUP</a> </td><td width=20><td>Ripup auf Gruppe anwenden</td></tr>
|
|
<tr><td><a href=#88>ROTATE</a> </td><td width=20><td>Gruppe drehen</td></tr>
|
|
<tr><td><a href=#89>ROUTE</a> </td><td width=20><td>Wire-Knickwinkel ändern</td></tr>
|
|
<tr><td><a href=#96>SMD</a> </td><td width=20><td>Smd drehen</td></tr>
|
|
<tr><td><a href=#97>SPLIT</a> </td><td width=20><td>Wire-Knickwinkel ändern</td></tr>
|
|
<tr><td><a href=#99>TEXT</a> </td><td width=20><td>Text drehen</td></tr>
|
|
<tr><td><a href=#106>WIRE</a> </td><td width=20><td>Wire-Knickwinkel ändern</td></tr>
|
|
</table>
|
|
<h2>Maus-Rädchen</h2>
|
|
Innerhalb eines Editor-Fensters kann mit dem Maus-Rädchen die Zoomstufe verändert
|
|
werden.
|
|
|
|
|
|
<a name=20>
|
|
<h1>Benachbarte Objekte selektieren</h1>
|
|
Wenn Sie an einer Stelle ein Objekt selektieren wollen, an der mehrere
|
|
Objekte eng beieinander liegen, nimmt der Mauszeiger die Form eines
|
|
Vierfach-Pfeils an, und es erscheint die Frage
|
|
<p>
|
|
<i>Hervorgehobenes Objekt auswählen? (links=ja, rechts=weiter, ESC=abbrechen)</i>
|
|
<p>
|
|
Drücken Sie die rechte Maustaste, um zyklisch durch alle in Frage
|
|
kommenden Objekte "durchzutasten".
|
|
<p>
|
|
Mit der linken Maustaste wählen Sie das gewünschte Objekt aus.
|
|
<p>
|
|
Um die Auswahl ganz abzubrechen, drücken Sie die Esc-Taste.
|
|
<p>
|
|
Mit dem Befehl
|
|
<pre>
|
|
<a href=#92>SET</a> Select_Factor select_radius;
|
|
</pre>
|
|
können Sie beeinflussen, wie groß der "Selektionsradius" sein soll.
|
|
<p>
|
|
Wurde die ursprüngliche Selektion mit der rechten Maustaste gemacht, so erscheint
|
|
ein kontextspezifisches Popup-Menü für das erste ausgewählte Objekt, welches als
|
|
ersten Eintrag "Weiterschalten" enthält. Durch Klicken auf diesen Eintrag wird
|
|
zyklisch durch die Objekte im Selektionsradius geschaltet.
|
|
|
|
|
|
<a name=21>
|
|
<h1>Editor-Fenster</h1>
|
|
EAGLE kennt unterschiedliche Typen von Daten-Dateien. Jeder davon wird in
|
|
einem eigenen Editor-Fenster-Typ bearbeitet. Wenn Sie eines der Objekte
|
|
durch Doppelklick selektieren oder vom <a href=#12>Control Panel</a>
|
|
aus eine Datei mit <b>Datei/Öffnen</b>
|
|
laden, dann öffnet sich ein Editor-Fenster für diesen Dateityp.
|
|
<ul>
|
|
<li><a href=#22>Bibliotheks-Editor</a>
|
|
<li><a href=#25>Schaltplan-Editor</a>
|
|
<li><a href=#24>Layout-Editor</a>
|
|
<li><a href=#26>Text-Editor</a>
|
|
</ul>
|
|
|
|
|
|
<a name=22>
|
|
<h1>Bibliotheks-Editor</h1>
|
|
Der <i>Bibliotheks-Editor</i> dient dazu, Bauelemente-Bibliotheken
|
|
(<tt>*.lbr</tt>) zu editieren.
|
|
<p>
|
|
Nachdem Sie ein neues Bibliotheks-Editor-Fenster geöffnet haben,
|
|
erscheint eine leere Arbeitsfläche, und Sie müssen mit dem
|
|
<a href=#47>EDIT</a> Befehl angeben, welches
|
|
Gehäuse (Package), Symbol oder Device Sie laden oder neu anlegen wollen.
|
|
|
|
|
|
<a name=23>
|
|
<h1>Bibliotheks-Editier-Modus</h1>
|
|
Im Bibliotheks-Editier-Modus können Sie Packages, Symbole und Devices
|
|
editieren.
|
|
<p>
|
|
<b>Package:</b> Die Gehäuse-Definition.
|
|
<p>
|
|
<b>Symbol:</b> Schaltzeichen, wie es im Schaltplan erscheinen soll.
|
|
<p>
|
|
<b>Device:</b> Definition des realen Bauteils. Enthält eine oder
|
|
mehrere Package-Varianten und ein oder mehrere Symbole (Gates).
|
|
Es dürfen unterschiedliche Symbole kombiniert werden.
|
|
<p>
|
|
Klicken Sie den Button <b>Dev</b>, <b>Pac</b>
|
|
oder <b>Sym</b>, um Devices, Packages oder Symbole zu
|
|
selektieren.
|
|
<p>
|
|
Wenn Sie ein neues Objekt anlegen wollen, schreiben Sie den Namen des
|
|
neuen Objekts in das Feld <b>New</b> Sie können auch ein
|
|
exitstierendes Objekt laden, indem Sie seinen Namen in dieses Feld
|
|
eintippen. Wenn Sie die Extension des Datei-Namens nicht angeben, wird
|
|
ein Objekt geladen, dessen Typ vom <b>Choose...</b> Prompt
|
|
bestimmt wird. Andernfalls bestimmt die Extension den Typ.
|
|
<p>
|
|
Falls Ihre <a href=#345>Lizenz</a> das
|
|
Schaltplan-Modul nicht einschließt, erscheinen die Object-Type-Buttons
|
|
(<b>Dev</b>...) nicht im Menü.
|
|
|
|
|
|
<a name=24>
|
|
<h1>Layout-Editor</h1>
|
|
Der <i>Layout-Editor</i> dient dazu, Layouts (<tt>*.brd</tt>) zu editieren.
|
|
<p>
|
|
Wenn im selben Verzeichnis eine Schaltplan-Datei (<tt>*.sch</tt>) mit
|
|
demselben Namen existiert, wird beim Öffnen eines Layouts automatisch
|
|
auch ein <a href=#25>Schaltplan-Editor</a>-Fenster
|
|
mit dieser Datei als Icon auf den Desktop
|
|
gelegt. Das ist notwendig, damit die Schaltplan-Datei geladen ist, wenn
|
|
Änderungen an der Platine die <a href=#341>Back-Annotation</a>
|
|
zum Schaltplan erforderlich machen.
|
|
|
|
|
|
<a name=25>
|
|
<h1>Schaltplan-Editor</h1>
|
|
Der <i>Schaltplan-Editor</i> dient dazu, Schaltpläne (<tt>*.sch</tt>)
|
|
zu editieren.
|
|
<p>
|
|
Wenn im selben Verzeichnis eine Layout-Datei (<tt>*.brd</tt>) mit
|
|
demselben Namen existiert, wird beim Öffnen eines Layouts automatisch
|
|
auch ein <a href=#24>Layout-Editor</a>-Fenster
|
|
mit dieser Datei als Icon auf den Desktop
|
|
gelegt. Das ist notwendig, damit die Layout-Datei geladen ist, wenn
|
|
Änderungen an der Platine die
|
|
<a href=#341>Forward-Annotation</a>
|
|
zum Layout erforderlich machen.
|
|
<p>
|
|
Mit Hilfe der Combo-Box in der Action-Toolbar des Schaltplan-Editor-Fensters
|
|
können Sie zwischen den einzelnen Schaltplan-Seiten
|
|
wechseln oder neue Seiten anlegen. Sie können dazu auch den
|
|
<a href=#47>EDIT</a>-Befehl verwenden.
|
|
|
|
|
|
<a name=26>
|
|
<h1>Text-Editor</h1>
|
|
Der <i>Text-Editor</i> dient dazu, Textdateien zu editieren.
|
|
<p>
|
|
Die Textdatei muss eine reine ASCII-Datei sein und darf keine
|
|
Steuerzeichen enthalten. Als Anwendungen sind in erster Linie
|
|
vorgesehen: das Schreiben von
|
|
<a href=#138>User-Language-Programmen</a> und
|
|
<a href=#91>Script-Dateien</a>.
|
|
<h2>Verwenden eines externen Text-Editors</h2>
|
|
Falls Sie anstatt des in EAGLE eingebauten lieber einen externen Text-Editor
|
|
verwenden wollen, so können Sie den zum Starten dieses Editors nötigen Befehl
|
|
im Dialog "Optionen/Benutzeroberfläche" eintragen.
|
|
<p>
|
|
In diesem Befehl werden die folgenden Platzhalter durch aktuelle Werte ersetzt:
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>%C</tt></td><td width=20><td>die Spalte, in die der Cursor positioniert werden soll (zur Zeit immer <tt>1</tt>)</td></tr>
|
|
<tr><td><tt>%F</tt></td><td width=20><td>der Name der zu ladenden Datei</td></tr>
|
|
<tr><td><tt>%L</tt></td><td width=20><td>die Zeile, in die der Cursor positioniert werden soll</td></tr>
|
|
</table>
|
|
<p>
|
|
Ist als Befehl lediglich ein Minuszeichen (<tt>'-'</tt>) eingetragen, so wird
|
|
EAGLE niemals ein Text-Editor-Fenster öffnen. Dies ist hilfreich für Benutzer,
|
|
die ihren Text-Editor immer selbst starten wollen.
|
|
<p>
|
|
Folgende Einschränkungen gelten bei der Verwendung eines externen Text-Editors:
|
|
<ul>
|
|
<li>Der externe Text-Editor läuft in einem separaten Prozess, und EAGLE hat
|
|
keine Möglichkeit zu wissen ob die geladene Datei verändert worden ist
|
|
oder nicht. Sie sind selber dafür verantwortlich, die Datei nach eventuellen
|
|
Änderungen abzuspeichern.
|
|
<li>Wird die selbe Datei mehrfach in den Text-Editor geladen, so hängt es von der
|
|
Konfiguration des verwendeten Text-Editors ab, ob dieser jedesmal ein neues
|
|
Fenster öffnet, oder die Datei immer in das selbe Fenster lädt.
|
|
<li>Die Fenster des externen Text-Editors erscheinen nicht in der Liste der EAGLE-Fenster,
|
|
und werden daher auch nicht im Projekt mit abgespeichert und somit auch bei einem
|
|
späteren Neu-Laden des Projekts nicht wieder geöffnet.
|
|
<li>Beim Verlassen von EAGLE werden die externen Text-Editor-Prozesse beendet.
|
|
Es hängt vom verwendeten Betriebssystem und dem konkreten Text-Editor ab,
|
|
ob Sie im Falle einer veränderten Datei gefragt werden, ob diese abgespeichert
|
|
werden soll.
|
|
<li>Die Funktion "Datei/Alles speichern" speichert nicht die im externen Text-Editor
|
|
geänderten Dateien.
|
|
<li>Der unter Umständen beim Laden einer Datei aus einer älteren EAGLE-Version
|
|
erzeugte Update-Bericht wird immer mit dem eingebauten Text-Editor angezeigt.
|
|
</ul>
|
|
|
|
|
|
<a name=27>
|
|
<h1>Editor-Befehle</h1>
|
|
<h2>Wechsel der Betriebsart/Dateibefehle</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><a href=#39>CLOSE</a> </td><td width=20><td>Bibliothek nach Editieren schließen</td></tr>
|
|
<tr><td><a href=#47>EDIT</a> </td><td width=20><td>Zeichnung laden/anlegen</td></tr>
|
|
<tr><td><a href=#50>EXPORT</a> </td><td width=20><td>ASCII-Liste erzeugen (z.B. Netzliste)</td></tr>
|
|
<tr><td><a href=#70>OPEN</a> </td><td width=20><td>Bibliothek zum Editieren laden</td></tr>
|
|
<tr><td><a href=#80>QUIT</a> </td><td width=20><td>EAGLE verlassen</td></tr>
|
|
<tr><td><a href=#84>REMOVE</a> </td><td width=20><td>Dateien/Bibliotheks-Elemente löschen</td></tr>
|
|
<tr><td><a href=#91>SCRIPT</a> </td><td width=20><td>Befehlsdatei ausführen</td></tr>
|
|
<tr><td><a href=#102>USE</a> </td><td width=20><td>Bibliothek zum Plazieren von Elementen laden</td></tr>
|
|
<tr><td><a href=#107>WRITE</a> </td><td width=20><td>Zeichnung/Bibliothek speichern</td></tr>
|
|
</table>
|
|
<h2>Zeichnungen/Bibliotheken editieren</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><a href=#29>ADD</a> </td><td width=20><td>Element in Zeichnung / Symbol in Device einfügen</td></tr>
|
|
<tr><td><a href=#30>ARC</a> </td><td width=20><td>Kreisbogen zeichnen</td></tr>
|
|
<tr><td><a href=#32>ATTRIBUTE</a> </td><td width=20><td>Attribute definieren</td></tr>
|
|
<tr><td><a href=#37>CIRCLE</a> </td><td width=20><td>Kreis zeichnen</td></tr>
|
|
<tr><td><a href=#38>CLASS</a> </td><td width=20><td>Netzklassen definieren</td></tr>
|
|
<tr><td><a href=#41>COPY</a> </td><td width=20><td>Objekte/Elemente kopieren</td></tr>
|
|
<tr><td><a href=#42>CUT</a> </td><td width=20><td>Vorher definierte Gruppe in Paste-Buffer laden</td></tr>
|
|
<tr><td><a href=#43>DELETE</a> </td><td width=20><td>Objekt löschen</td></tr>
|
|
<tr><td><a href=#44>DESCRIPTION</a> </td><td width=20><td>Beschreibung eines Objektes ändern</td></tr>
|
|
<tr><td><a href=#54>GROUP</a> </td><td width=20><td>Gruppe für spätere Operation definieren</td></tr>
|
|
<tr><td><a href=#56>HOLE</a> </td><td width=20><td>Nichtleitende Bohrung definieren</td></tr>
|
|
<tr><td><a href=#61>LAYER</a> </td><td width=20><td>Layer definieren/wechseln</td></tr>
|
|
<tr><td><a href=#65>MIRROR</a> </td><td width=20><td>Objekt spiegeln</td></tr>
|
|
<tr><td><a href=#66>MITER</a> </td><td width=20><td>Wire-Verbindungsstellen abschrägen</td></tr>
|
|
<tr><td><a href=#67>MOVE</a> </td><td width=20><td>Objekt bewegen oder rotieren</td></tr>
|
|
<tr><td><a href=#68>NAME</a> </td><td width=20><td>Objekt mit Namen versehen</td></tr>
|
|
<tr><td><a href=#74>PASTE</a> </td><td width=20><td>Paste-Buffer in Zeichnung einfügen</td></tr>
|
|
<tr><td><a href=#77>POLYGON</a> </td><td width=20><td>Polygon zeichnen</td></tr>
|
|
<tr><td><a href=#82>RECT</a> </td><td width=20><td>Rechteck zeichnen</td></tr>
|
|
<tr><td><a href=#88>ROTATE</a> </td><td width=20><td>Objekt rotieren</td></tr>
|
|
<tr><td><a href=#95>SMASH</a> </td><td width=20><td>NAME/VALUE zum Bewegen vorbereiten</td></tr>
|
|
<tr><td><a href=#97>SPLIT</a> </td><td width=20><td>Wires/Linien (Netze etc.) knicken</td></tr>
|
|
<tr><td><a href=#99>TEXT</a> </td><td width=20><td>Text zu einer Zeichnung hinzufügen</td></tr>
|
|
<tr><td><a href=#103>VALUE</a> </td><td width=20><td>Wert für Element definieren/ändern</td></tr>
|
|
<tr><td><a href=#106>WIRE</a> </td><td width=20><td>Linie oder geroutete Verbindung zeichnen</td></tr>
|
|
</table>
|
|
<h2>Spezielle Befehle für Platinen</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><a href=#46>DRC</a> </td><td width=20><td>Design Rule Check durchführen</td></tr>
|
|
<tr><td><a href=#49>ERRORS</a> </td><td width=20><td>DRC-Fehler anzeigen</td></tr>
|
|
<tr><td><a href=#62>LOCK</a> </td><td width=20><td>Bauteilposition verriegeln</td></tr>
|
|
<tr><td><a href=#81>RATSNEST</a> </td><td width=20><td>Kürzeste Luftlinien anzeigen</td></tr>
|
|
<tr><td><a href=#86>REPLACE</a> </td><td width=20><td>Bauteil ersetzen</td></tr>
|
|
<tr><td><a href=#87>RIPUP</a> </td><td width=20><td>Signal auflösen</td></tr>
|
|
<tr><td><a href=#89>ROUTE</a> </td><td width=20><td>Signal routen</td></tr>
|
|
<tr><td><a href=#94>SIGNAL</a> </td><td width=20><td>Signal (Luftlinie) definieren</td></tr>
|
|
<tr><td><a href=#104>VIA</a> </td><td width=20><td>Durchkontaktierung (Via) plazieren</td></tr>
|
|
</table>
|
|
<h2>Spezielle Befehle für Schaltpläne</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><a href=#34>BOARD</a> </td><td width=20><td>Platine aus einem Schaltplan erzeugen</td></tr>
|
|
<tr><td><a href=#35>BUS</a> </td><td width=20><td>Buslinie zeichnen</td></tr>
|
|
<tr><td><a href=#48>ERC</a> </td><td width=20><td>Electrical Rule Check ausführen</td></tr>
|
|
<tr><td><a href=#52>GATESWAP</a> </td><td width=20><td>Äquivalente 'Gates' tauschen</td></tr>
|
|
<tr><td><a href=#58>INVOKE</a> </td><td width=20><td>'Gate' aus Device plazieren</td></tr>
|
|
<tr><td><a href=#59>JUNCTION</a> </td><td width=20><td>Verbindungspunkt plazieren</td></tr>
|
|
<tr><td><a href=#60>LABEL</a> </td><td width=20><td>Label für Bus oder Netz plazieren</td></tr>
|
|
<tr><td><a href=#69>NET</a> </td><td width=20><td>Netz definieren</td></tr>
|
|
<tr><td><a href=#76>PINSWAP</a> </td><td width=20><td>Äquivalente Pins tauschen</td></tr>
|
|
</table>
|
|
<h2>Spezielle Befehle für Bibliotheken</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><a href=#40>CONNECT</a> </td><td width=20><td>Pin/Pad-Zuordnung festlegen</td></tr>
|
|
<tr><td><a href=#72>PACKAGE</a> </td><td width=20><td>Package für Device definieren</td></tr>
|
|
<tr><td><a href=#73>PAD</a> </td><td width=20><td>Pad in Package einfügen</td></tr>
|
|
<tr><td><a href=#75>PIN</a> </td><td width=20><td>Pin in Symbol einfügen</td></tr>
|
|
<tr><td><a href=#78>PREFIX</a> </td><td width=20><td>Default-Präfix für Device festlegen</td></tr>
|
|
<tr><td><a href=#84>REMOVE</a> </td><td width=20><td>Elemente aus Bibliothek löschen</td></tr>
|
|
<tr><td><a href=#85>RENAME</a> </td><td width=20><td>Symbol/Package/Device neu benennen</td></tr>
|
|
<tr><td><a href=#96>SMD</a> </td><td width=20><td>Smd-Pad in Package einfügen</td></tr>
|
|
<tr><td><a href=#98>TECHNOLOGY</a> </td><td width=20><td>Technologien für ein Device definieren</td></tr>
|
|
<tr><td><a href=#103>VALUE</a> </td><td width=20><td>Definieren, ob Value-Text änderbar</td></tr>
|
|
</table>
|
|
<h2>Befehle für Bildschirmdarstellung und Benutzer-Interface</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><a href=#31>ASSIGN</a> </td><td width=20><td>Tasten belegen</td></tr>
|
|
<tr><td><a href=#36>CHANGE</a> </td><td width=20><td>EAGLE-Parameter ändern</td></tr>
|
|
<tr><td><a href=#45>DISPLAY</a> </td><td width=20><td>Layer anzeigen/ausblenden</td></tr>
|
|
<tr><td><a href=#53>GRID</a> </td><td width=20><td>Raster/Einheit definieren</td></tr>
|
|
<tr><td><a href=#64>MENU</a> </td><td width=20><td>Befehls-Menü konfigurieren</td></tr>
|
|
<tr><td><a href=#92>SET</a> </td><td width=20><td>Programm-Parameter einstellen</td></tr>
|
|
<tr><td><a href=#105>WINDOW</a> </td><td width=20><td>Bildausschnitt verändern</td></tr>
|
|
</table>
|
|
<h2>Weitere Befehle</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><a href=#33>AUTO</a> </td><td width=20><td>Autorouter starten</td></tr>
|
|
<tr><td><a href=#55>HELP</a> </td><td width=20><td>Hilfe-Seite anzeigen</td></tr>
|
|
<tr><td><a href=#57>INFO</a> </td><td width=20><td>Information über Objekt zeigen</td></tr>
|
|
<tr><td><a href=#63>MARK</a> </td><td width=20><td>Messmarke setzen/entfernen</td></tr>
|
|
<tr><td><a href=#71>OPTIMIZE</a> </td><td width=20><td>Wire-Segmente zusammenfassen</td></tr>
|
|
<tr><td><a href=#79>PRINT</a> </td><td width=20><td>Ausdrucken auf dem System-Drucker</td></tr>
|
|
<tr><td><a href=#83>REDO</a> </td><td width=20><td>Zurückgenommene Befehle ausführen</td></tr>
|
|
<tr><td><a href=#90>RUN</a> </td><td width=20><td>User-Language-Programm ausführen</td></tr>
|
|
<tr><td><a href=#93>SHOW</a> </td><td width=20><td>Objekt hell darstellen</td></tr>
|
|
<tr><td><a href=#100>UNDO</a> </td><td width=20><td>Befehle zurücknehmen</td></tr>
|
|
<tr><td><a href=#101>UPDATE</a> </td><td width=20><td>Bibliotheks-Objekte aktualisieren</td></tr>
|
|
</table>
|
|
|
|
|
|
<a name=28>
|
|
<h1>Befehlseingabe</h1>
|
|
EAGLE-Befehle können auf vier verschiedene Arten eingegeben werden:
|
|
<ul>
|
|
<li>mit der Tastatur als Text
|
|
<li>mit der Maus, durch Anklicken von Menüpunkten oder Icons
|
|
<li>mit belegten Tasten (siehe <a href=#31>ASSIGN</a>-Befehl)
|
|
<li>mit einer Script-Datei (siehe <a href=#91>SCRIPT</a>-Befehl)
|
|
</ul>
|
|
Diese Eingabearten können auch gemischt verwendet werden.
|
|
<p>
|
|
Für die Befehlsbeschreibungen gelten folgende Regeln:
|
|
<p>
|
|
Befehle und Parameter in <tt>GROSSBUCHSTABEN</tt> werden
|
|
direkt eingegeben (bzw. aus dem Befehlsmenü mit der Maus selektiert).
|
|
Bei der Eingabe werden Groß- und Kleinbuchstaben nicht unterschieden.
|
|
<p>
|
|
Parameter in <tt>Kleinbuchstaben</tt> werden durch Namen, Zahlenwerte oder
|
|
Schlüsselwörter ersetzt. Beispiel:
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td>Syntax: </td><td width=20><td><tt>GRID grid_size grid_multiple;</tt></td></tr>
|
|
<tr><td>Input: </td><td width=20><td><tt>GRID 1 10;</tt></td></tr>
|
|
</table>
|
|
<h2>Verkürzte Eingabe</h2>
|
|
Befehle und andere Schlüsselwörter können beliebig abgekürzt werden,
|
|
solange sie nicht mit anderen Schlüsselwörtern verwechselt werden
|
|
können.
|
|
<h2>Alternative Parameter</h2>
|
|
Das Zeichen | bedeutet, dass Parameter alternativ angegeben werden
|
|
können. Beispiel:
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td>Syntax: </td><td width=20><td><tt>SET BEEP OFF | ON;</tt></td></tr>
|
|
<tr><td>Input: </td><td width=20><td><tt>SET BEEP OFF;</tt></td></tr>
|
|
<tr><td> </td><td width=20><td>oder</td></tr>
|
|
<tr><td> </td><td width=20><td><tt>SET BEEP ON;</tt></td></tr>
|
|
</table>
|
|
<h2>Wiederholungspunkte</h2>
|
|
Die Zeichen .. bedeuten, dass die Funktion mehrfach ausgeführt
|
|
werden kann bzw. dass mehrere Parameter vom gleichen Typ erlaubt
|
|
sind. Beispiel:
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td>Syntax: </td><td width=20><td><tt>DISPLAY option layer_name..</tt></td></tr>
|
|
<tr><td>Input: </td><td width=20><td><tt>DISPLAY TOP PINS VIAS</tt></td></tr>
|
|
</table>
|
|
<h2>Koordinatenangaben</h2>
|
|
Das Zeichen • bedeutet normalerweise, dass an dieser Stelle im Befehl mit der
|
|
linken Maustaste ein Objekt anzuklicken ist. Beispiel:
|
|
<p>
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td>Syntax: </td><td width=20><td><tt>MOVE • •..</tt></td></tr>
|
|
<tr><td>Input: </td><td width=20><td><tt>MOVE</tt></td></tr>
|
|
<tr><td> </td><td width=20><td><tt>Mausklick auf erstes zu bewegendes Element</tt></td></tr>
|
|
<tr><td> </td><td width=20><td><tt>Mausklick auf das Ziel</tt></td></tr>
|
|
<tr><td> </td><td width=20><td><tt>Mausklick auf zweites zu bewegendes Element</tt></td></tr>
|
|
<tr><td> </td><td width=20><td><tt>etc.</tt></td></tr>
|
|
</table>
|
|
<p>
|
|
An diesem Beispiel sehen Sie auch, wie die Wiederholungspunkte bei
|
|
Befehlen mit Mausklicks zu verstehen sind.
|
|
<p>
|
|
Jeder Mausklick stellt eine Koordinatenangabe
|
|
dar. Will man den Befehl textuell eingeben, dann kann man anstelle
|
|
des Mausklicks die Koordinaten über die Tastatur in folgender
|
|
Form eingeben:
|
|
<pre>
|
|
(x y)
|
|
</pre>
|
|
Dabei sind x und y Zahlen in der mit dem GRID-Befehl gewählten
|
|
Einheit. Die textuelle Eingabemöglichkeit ist insbesondere für
|
|
Script-Dateien erforderlich.<br>
|
|
Soll eine andere als die im GRID-Befehl gewählte Einheit verwendet werden,
|
|
so kann diese an die angegebenen Koordinaten angefügt werden, wie in
|
|
<pre>
|
|
(100mil 200mil)
|
|
</pre>
|
|
Erlaubte Einheiten sind <tt>mm</tt>, <tt>mic</tt>, <tt>mil</tt> und <tt>in</tt>.
|
|
Es können auch unterschiedliche Einheiten für x und y verwendet werden.<br>
|
|
Die spezielle Koordinate
|
|
<pre>
|
|
(@)
|
|
</pre>
|
|
kann dazu benutzt werden, die aktuelle Position des Mauszeigers im
|
|
Zeichenfenster zu referenzieren. So würde zum Beispiel die Eingabe
|
|
<pre>
|
|
MOVE R1 (@)
|
|
</pre>
|
|
das Bauteil mit dem Namen R1 an die Position verschieben, auf der
|
|
der Mauszeiger im Moment steht.
|
|
<p>
|
|
Nach der öffnenden Klammer darf eine beliebige Kombination der folgenden
|
|
Steuerzeichen folgen um einen bestimmten Tastendruck zusammen mit dem
|
|
"Mausklick" zu simulieren oder die Art der Koordinaten zu modifizieren:
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>></tt></td><td width=20><td>rechte Maustaste</td></tr>
|
|
<tr><td><tt>A </tt></td><td width=20><td>Alt-Taste</td></tr>
|
|
<tr><td><tt>C </tt></td><td width=20><td>Ctrl-Taste</td></tr>
|
|
<tr><td><tt>P </tt></td><td width=20><td>Polar-Koordinaten (relativ zur <a href=#63>Marke</a>, x = Radius, y = Winkel in Grad, gegen den Uhrzeigersinn)</td></tr>
|
|
<tr><td><tt>R </tt></td><td width=20><td>Relative Koordinaten (relativ zur <a href=#63>Marke</a>)</td></tr>
|
|
<tr><td><tt>S </tt></td><td width=20><td>Shift-Taste</td></tr>
|
|
</table>
|
|
Die Eingabe
|
|
<pre>
|
|
(CR> 1 2)
|
|
</pre>
|
|
würde zum Beispiel einem "Mausklick" mit der rechten Maustaste an den Koordinaten
|
|
(1 2) relativ zur <a href=#63>Marke</a>, mit gedrückter Ctrl-Taste entsprechen
|
|
(natürlich würde es vom konkreten Befehl abhängen was genau mit dieser Art von
|
|
Eingabe geschehen würde). Falls momentan keine Marke gesetzt ist, beziehen sich
|
|
Koordinaten mit <tt>R</tt> oder <tt>P</tt> auf den Ursprung der Zeichnung.
|
|
Die Steuerzeichen sind unabhängig von Groß-/Kleinschreibung, ihre Reihenfolge
|
|
spielt keine Rolle und es muss auch kein Leerzeichen zwischen ihnen und der
|
|
ersten Ziffer der Koordinaten stehen. Das obige Beispiel könnte also ebenso
|
|
als <tt>(r>c1 2)</tt> geschrieben werden.
|
|
Als "Polar-Koordinaten" eingegebene Werte werden intern als die entsprechenden
|
|
(x y) Koordinaten abgespeichert.
|
|
<p>
|
|
Als Beispiel für die Koordinateneingabe in Textform soll die Eingabe der
|
|
Platinenumrisse mit exakten Maßen dienen:
|
|
<pre>
|
|
GRID 1 MM;
|
|
CHANGE LAYER DIMENSION;
|
|
WIRE 0 (0 0) (160 0) (160 100) (0 100) (0 0);
|
|
GRID LAST;
|
|
</pre>
|
|
<h2>Dezimalzahlen</h2>
|
|
Bei der Eingabe von Dezimalzahlen in der Kommandozeile des Editor-Fensters
|
|
oder in Dialog-Eingabefeldern können Sie das Komma als Dezimal-Trennzeichen
|
|
verwenden (also zum Beispiel <tt>12,34</tt>), falls Ihre landesspezifischen
|
|
Einstellungen dies zulassen. Allerdings sollten Sie beim Schreiben eines Scripts
|
|
oder eines ULPs, welches EAGLE-Befehle über die <tt>exit()</tt>-Funktion
|
|
zurückgibt, immer den Punkt als Dezimal-Trennzeichen verwenden (also <tt>12.34</tt>).
|
|
Ansonsten kann es sein, dass Ihr Script bzw. ULP nicht auf anderen Systemen
|
|
lauffähig ist. Generell ist es empfehlenswert, immer den Punkt als
|
|
Dezimal-Trennzeichen zu verwenden.
|
|
<h2>Strichpunkt</h2>
|
|
Der Strichpunkt (';') schließt einen Befehl ab. Ein Befehl muss dann
|
|
mit einem Strichpunkt abgeschlossen werden, wenn er weniger als die
|
|
maximal mögliche Zahl von Parametern enthält.
|
|
Der Befehl
|
|
<pre>
|
|
WINDOW;
|
|
</pre>
|
|
frischt beispielsweise das Zeichenfenster auf, während
|
|
<pre>
|
|
WINDOW FIT
|
|
</pre>
|
|
das Zeichenfenster so skaliert, dass die gesamte Zeichnung sichtbar ist.
|
|
Im zweiten Fall ist kein Strichpunkt erforderlich, weil bereits klar
|
|
ist, dass kein weiterer Parameter folgen kann.
|
|
|
|
|
|
<a name=29>
|
|
<h1>ADD</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Elemente in eine Zeichnung einfügen.<br>
|
|
Symbole in ein Device einfügen.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>ADD package_name[@library_name] [name] [orientation] •..</tt><br>
|
|
<tt>ADD device_name[@library_name] [name [gate]] [orientation] •..</tt><br>
|
|
<tt>ADD symbol_name [name] [options] •..</tt>
|
|
<dt>
|
|
<b>Maustasten</b>
|
|
<dd>
|
|
<mb>Mittlere</mb> spiegelt das Bauteil.<br>
|
|
<mb>Rechte</mb> dreht das Bauteil.<br>
|
|
<mb>Shift+Rechte</mb> kehrt die Richtung der Drehung um.
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#101>UPDATE</a>,
|
|
<a href=#102>USE</a>,
|
|
<a href=#58>INVOKE</a>
|
|
<p>
|
|
Der ADD-Befehl holt ein Schaltplan-Symbol (Gate) oder ein Package aus
|
|
der aktiven Bibliothek und plaziert es in der Zeichnung.
|
|
<p>
|
|
Bei der Device-Definition holt der ADD-Befehl ein Symbol in das Device.
|
|
<p>
|
|
Üblicherweise klickt man den ADD-Befehl an und selektiert das
|
|
Package/Symbol aus dem sich öffnenden Menü. Nun können die Parameter
|
|
(falls erforderlich) per Tastatur eingegeben werden.
|
|
<p>
|
|
Wenn <tt>device_name</tt> Platzhalter enthält (<tt>'*'</tt> oder <tt>'?'</tt>) und mehr als ein
|
|
Device gefunden wird, öffnet sich der ADD-Dialog. Daraus kann dann das gewünschte
|
|
Device gewählt werden.
|
|
Beachten Sie, dass die <i>Beschreibung</i> Checkbox im ADD-Dialog ausgeschaltet wird,
|
|
sobald ein ADD-Befehl mit einem Device-Namen in der Kommandozeile angegeben wird,
|
|
egal ob der Name Platzhalter enthält oder nicht. Der Grund hierfür ist, dass ein
|
|
in der Kommandozeile angegebener Device-Name nur in den Namen der Devices gesucht
|
|
wird und nicht in deren Beschreibungen.
|
|
<p>
|
|
Plaziert wird das Package/Symbol mit der linken Maustaste, rotiert
|
|
wird es mit der rechten. Nachdem es plaziert wurde, hängt sofort eine
|
|
weitere Kopie am Mauszeiger.
|
|
<p>
|
|
Wenn bereits ein Device oder Package mit gleichem Namen (aus derselben Bibliothek) in der
|
|
Zeichnung existiert und die Bibliothek seit dem Plazieren des ursprünglichen Elements
|
|
modifiziert wurde, startet EAGLE automatisch einen <a href=#101>Library-Update</a>
|
|
bei dem Sie gefragt werden, ob die Bauteile durch die neuere Bibliotheksdefinition
|
|
ersetzt werden sollen.
|
|
<b>Achtung: Nach einem Library-Update sollten Sie immer den <a href=#46>Design Rule Check</a>
|
|
(DRC) und den <a href=#48>Electrical Rule Check</a> (ERC) laufen lassen!</b>
|
|
<h2>Package oder Symbol in Zeichnung holen</h2>
|
|
<h3>Platzhalter</h3>
|
|
Der ADD-Befehl kann mit Platzhaltern (<tt>'*'</tt> oder <tt>'?'</tt>) arbeiten, um ein
|
|
bestimmtes Element zu finden. Der ADD-Dialog zeigt alle gefundenen Elemente in einer
|
|
Baumansicht und dazu auch eine Voransicht des Devices und der Package-Variante.
|
|
<p>
|
|
Um ein Element direkt zu plazieren, verwenden Sie die Syntax:
|
|
<pre>
|
|
ADD devicename@libraryname
|
|
</pre>
|
|
<tt>devicename</tt> darf Platzhalter enthalten und <tt>libraryname</tt> darf entweder
|
|
direkt der Bibliotheksname (wie "ttl" oder "ttl.lbr") oder der volle Name mit Pfadangabe
|
|
(wie "/home/mydir/myproject/ttl.lbr" oder "../lbr/ttl") sein.
|
|
<h3>Namen</h3>
|
|
Der Parameter package_name, device_name bzw. symbol_name ist der Name, unter dem das
|
|
Package/Device/Symbol in der Bibliothek abgelegt ist. Er wird üblicherweise aus einem
|
|
Menü selektiert. Der Parameter name ist der Name, den das Element in der Zeichnung erhalten
|
|
soll. Falls der Name als eine Orientierung oder Option interpretiert werden könnte,
|
|
muss er in Hochkommas eingeschlossen werden. Wird er nicht explizit angegeben, erhält
|
|
das Element einen generierten Namen.
|
|
<p>
|
|
Beispiel:
|
|
<pre>
|
|
ADD DIL14 IC1 •
|
|
</pre>
|
|
holt das Package DIL14 in die Platine und gibt ihm den Namen IC1.
|
|
<p>
|
|
Wird im Schaltplan kein Name angegeben, erhält das Gate als Namen den bei der
|
|
Device-Definition mit <a href=#78>PREFIX</a> festgelegten Präfix, ergänzt
|
|
um eine fortlaufende Zahl (z.B. IC1).
|
|
<p>
|
|
Beispiel:
|
|
<pre>
|
|
ADD 7400 • • • • •
|
|
</pre>
|
|
Hier werden der Reihe nach fünf Gatter aus Bausteinen des Typs 7400 plaziert.
|
|
Sofern als Präfix "IC" definiert wurde und die Einzelgatter innerhalb eines 7400
|
|
die Namen A...D haben, erhalten die Gatter im Schaltplan die Namen IC1A, IC1B,
|
|
IC1C, IC1D, IC2A (falls schon Elemente mit demselben Präfix plaziert wurden,
|
|
wird die Zählung mit der nächsten laufenden Nummer fortgesetzt. Siehe auch
|
|
<a href=#58>INVOKE</a>.
|
|
<p>
|
|
Während ein Objekt am Cursor hängt, können Sie den Namen, unter dem es in die
|
|
Zeichnung eingefügt wird, ändern. Damit können Sie mehrere Bauteile gleichen
|
|
Typs unter verschiedenen, explizit vergebenen Namen einfügen:
|
|
<p>
|
|
Beispiel:
|
|
<pre>
|
|
ADD CAP C1 • C5 • C7 •
|
|
</pre>
|
|
<h3>Bestimmte Gatter</h3>
|
|
Um ein bestimmtes Gatter eines neu hinzugefügten Bausteins zu holen kann nach dem Bauteilnamen der Name des Gatters angegeben werden:
|
|
<p>
|
|
Beispiel:
|
|
<pre>
|
|
ADD 7400 IC1 A •
|
|
</pre>
|
|
Dies ist vor allem dafür gedacht, wenn ein Schaltplan über ein Script generiert werden soll.
|
|
Beachten Sie bitte, dass wenn ein bestimmtes Gatter geholt wird keine anderen Gatter mit
|
|
Add-Level MUST oder ALWAYS automatisch mit geholt werden, und Sie müssen zumindest die MUST-Gatter
|
|
mit dem <a href=#58>INVOKE</a>-Befehl aktivieren (ansonsten wird sie der
|
|
<a href=#48>Electrical Rule Check</a> als fehlend melden).
|
|
<h3>Orientation</h3>
|
|
Dieser Parameter gibt die Ausrichtung des Objektes in der Zeichnung an.
|
|
Normalerweise rotiert man Objekte mit der rechten Maustaste.
|
|
In <a href=#91>Script</a>-Dateien verwendet man die textuellen Angaben für diesen
|
|
Parameter:
|
|
<p>
|
|
<b><tt>[S][M]Rnnn</tt></b>
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><b><tt>S</tt></b> </td><td width=20><td>setzt das <b>S</b>pin-Flag, welches die Funktion abschaltet, die Texte von unten oder rechts lesbar hält (nur im Board-Kontext verfügbar)</td></tr>
|
|
<tr><td><b><tt>M</tt></b> </td><td width=20><td>setzt das <b>M</b>irror-Flag, welches das Objekt an der Y-Achse spiegelt</td></tr>
|
|
<tr><td><b><tt>Rnnn</tt></b></td><td width=20><td>setzt die <b>R</b>otation auf den angegebenen Wert, der im Board-Kontext im Bereich <tt>0.0</tt>...<tt>359.9</tt> (mit einer Auflösung von 0.1 Grad) und im Schaltplan-Kontext einer der Werte <tt>0</tt>, <tt>90</tt>, <tt>180</tt> oder <tt>270</tt> sein darf (Winkel dürfen auch negativ angegeben werden, sie werden dann in den entsprechenden positiven Wert umgewandelt)</td></tr>
|
|
</table>
|
|
<p>
|
|
Die Schlüsselbuchstaben <b><tt>S</tt></b>, <b><tt>M</tt></b> und <b><tt>R</tt></b>
|
|
können als Groß- oder Kleinbuchstaben angegeben werden und es muss mindestens <b><tt>R</tt></b>
|
|
gefolgt von einer Zahl vorhanden sein.
|
|
<p>
|
|
Ist das <b>M</b>irror-Flag sowohl in einem Bauteil als auch in einem in dessen
|
|
Package befindlichen Text gesetzt, so heben sich diese in ihrer Wirkung auf.
|
|
Das gleiche gilt für das <b>S</b>pin-Flag.
|
|
<p>
|
|
Beispiele:
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td>R0 </td><td width=20><td>keine Rotation</td></tr>
|
|
<tr><td>R90 </td><td width=20><td>um 90° gegen den Uhrzeigersinn gedreht</td></tr>
|
|
<tr><td>R-90 </td><td width=20><td>um 90° im Uhrzeigersinn gedreht (wird in 270° umgerechnet)</td></tr>
|
|
<tr><td>MR0 </td><td width=20><td>an der Y-Achse gespiegelt</td></tr>
|
|
<tr><td>SR0 </td><td width=20><td>Texte werden mit "Spin" dargestellt</td></tr>
|
|
<tr><td>SMR33.3</td><td width=20><td>um 33.3° gegen den Uhrzeigersinn gedreht, gespiegelt und mit "Spin"</td></tr>
|
|
</table>
|
|
<p>
|
|
<p>
|
|
Default: R0
|
|
<p>
|
|
<pre>
|
|
ADD DIL16 R90 (0 0);
|
|
</pre>
|
|
plaziert ein 16poliges DIL-Gehäuse, das um 90 Grad gegen den Uhrzeigersinn gedreht ist, an den Koordinaten (0 0).
|
|
<h3>Fehlermeldungen</h3>
|
|
Soll ein Gate aus einem unvollständig definierten Device geholt werden, erscheint
|
|
eine Fehlermeldung (siehe <a href=#34>BOARD</a>-Befehl). Dies lässt sich mit dem
|
|
Befehl "<a href=#92>SET</a> CHECK_CONNECTS OFF;"
|
|
verhindern. Vorsicht: Der BOARD-Befehl führt diese Prüfung auf alle Fälle durch. Sie
|
|
abzuschalten ist also nur sinnvoll, wenn man keine Platine erzeugen will.
|
|
<h2>Symbol in Device holen</h2>
|
|
Bei der Device-Definition holt der ADD-Befehl ein vorher definiertes Symbol in das Device.
|
|
Als Optionen sind zwei Parameter (Swaplevel und Addlevel) möglich, die in beliebiger Reihenfolge
|
|
eingegeben werden können. Beide lassen sich mit dem <a href=#36>CHANGE</a>-Befehl
|
|
voreinstellen und ändern. Auch der im ADD-Befehl angegebene Wert bleibt als Voreinstellung erhalten.
|
|
<h3>Swaplevel</h3>
|
|
Der Swaplevel ist eine Zahl im Bereich 0..255, wobei gilt:
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td>0: </td><td width=20><td>Das Symbol (Gate) kann im Schaltplan nicht mit einem anderen vertauscht werden.</td></tr>
|
|
<tr><td>1..255 </td><td width=20><td>Das Symbol (Gate) kann im Schaltplan mit jedem anderen Symbol dieses Typs vertauscht werden, das denselben Swaplevel hat (auch zwischen verschiedenen Devices).</td></tr>
|
|
</table>
|
|
<p>
|
|
Default: 0
|
|
<h3>Addlevel</h3>
|
|
Für diesen Parameter gibt es folgende Möglichkeiten:
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>Next</tt> </td><td width=20><td>Wenn ein Device mehr als ein Gate aufweist, werden in den Schaltplan der Reihe nach die Symbole mit Addlevel Next geholt.</td></tr>
|
|
<tr><td><tt>Must</tt> </td><td width=20><td>Wird ein beliebiges Symbol eines Device in den Schaltplan geholt, dann muss auch ein mit dem Addlevel Must definiertes Symbol im Schaltplan erscheinen. Dies geschieht automatisch. Es kann nicht gelöscht werden, bevor nicht alle anderen Symbole aus diesem Device gelöscht sind. Falls nur noch Must-Symbole aus einem Device vorhanden sind, löscht der DELETE-Befehl das ganze Device.</td></tr>
|
|
<tr><td><tt>Always</tt> </td><td width=20><td>Wie Must, allerdings kann ein Symbol mit Addlevel Always gelöscht und mit <a href=#58>INVOKE</a> wieder in den Schaltplan geholt werden.</td></tr>
|
|
<tr><td><tt>Can</tt> </td><td width=20><td>Gibt es in einem Device Next-Gates, dann werden Can-Gates nur geholt, wenn sie explizit mit INVOKE angefordert werden. Ein Symbol mit Addlevel Can wird mit ADD nur dann in den Schaltplan geholt, wenn das Device nur Can- und Request-Gates enthält.</td></tr>
|
|
<tr><td><tt>Request</tt></td><td width=20><td>Diese Eigenschaft wird sinnvollerweise für Versorgungs-Symbole von Bausteinen verwendet. Request-Gates können nur explizit in den Schaltplan geholt werden (INVOKE) und werden intern nicht mitgezählt. Das hat zur Folge, dass in Bausteinen mit nur einem Gatter und einem Versorgungsspannungs-Symbol der Gatter-Name nicht zum Bauteil-Namen hinzugefügt wird. Im Falle eines 7400 mit vier Gattern (plus Versorgungsspannung) heißen die einzelnen Gatter im Schaltplan beispielsweise IC1A, IC1B, IC1C und IC1D. Ein 68000 mit nur einem <i>Gate</i>, dem Prozessor-Symbol, heisst dagegen im Schaltplan z. B. IC1, da sein separates Spannungsversorgungs-Symbol als Gate nicht mitzählt.</td></tr>
|
|
</table>
|
|
<p>
|
|
Beispiel:
|
|
<pre>
|
|
ADD PWR 0 REQUEST •
|
|
</pre>
|
|
holt das Symbol PWR (z. B. ein Versorgungssymbol) und definiert dafür den Swaplevel 0
|
|
(nicht tauschbar) und den Addlevel <i>Request</i>.
|
|
|
|
|
|
<a name=30>
|
|
<h1>ARC</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Zeichnen von Kreisbögen.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>ARC ['signal_name'] [CW | CCW] [ROUND | FLAT] [width] • • •</tt>
|
|
<dt>
|
|
<b>Maustasten</b>
|
|
<dd>
|
|
<mb>Mittlere</mb> wählt den Layer.<br>
|
|
<mb>Rechte</mb> ändert den Drehsinn.
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#36>CHANGE</a>,
|
|
<a href=#106>WIRE</a>,
|
|
<a href=#37>CIRCLE</a>
|
|
<p>
|
|
Mit dem ARC-Befehl zeichnet man Kreisbögen. Der erste und zweite
|
|
Mausklick (linke Maustaste) definieren zwei gegenüberliegende Punkte
|
|
auf dem Kreisumfang. Danach lässt sich mit der rechten Maustaste
|
|
festlegen, ob der Bogen im Uhrzeigersinn oder im Gegenuhrzeigersinn
|
|
dargestellt werden soll. Mit dem abschließenden Mausklick legt man den
|
|
Winkel des Bogens fest.
|
|
<p>
|
|
Mit den Parametern CW (Clockwise) und CCW (Counterclockwise) kann man
|
|
festlegen, ob der Bogen im Uhrzeigersinn oder gegen den Uhrzeigersinn dargestellt
|
|
werden soll. ROUND bzw. FLAT bestimmt ob die Enden des Kreisbogens rund oder flach sein sollen.
|
|
<h2>Signalname</h2>
|
|
Der Parameter <tt>signal_name</tt> ist in erster Linie für die
|
|
Anwendung in Script-Dateien gedacht, die generierte Daten einlesen.
|
|
Wenn ein Signalname angegeben ist, wird der Kreisbogen mit
|
|
diesem Signal verbunden, und es wird keine automatische Prüfung
|
|
durchgeführt.<br>
|
|
<b>Diese Möglichkeit ist mit großer Vorsicht
|
|
einzusetzen, da es zu Kurzschlüssen kommen kann, wenn ein Kreisbogen so
|
|
plaziert wird, dass er unterschiedliche Signale verbindet. Bitte führen
|
|
Sie deshalb einen
|
|
<a href=#46>Design Rule Check</a> durch, nachdem Sie
|
|
den ARC-Befehl mit dem Parameter <tt>signal_name</tt> benutzt haben!</b>
|
|
<h2>Strichstärke</h2>
|
|
Der Parameter width gibt die Strichstärke an, er lässt sich mit
|
|
dem Befehl
|
|
<pre>
|
|
CHANGE WIDTH width;
|
|
</pre>
|
|
voreinstellen oder verändern und ist identisch mit der aktuellen
|
|
Strichstärke für Wires.
|
|
<p>
|
|
Kreisbögen mit einem Winkel von 0 oder 360 Grad oder einem Radius
|
|
von 0 werden nicht akzeptiert.
|
|
<p>
|
|
Beispiel für textuelle Eingabe:
|
|
<pre>
|
|
GRID inch 1;
|
|
ARC CW (0 1) (0 -1) (1 0);
|
|
</pre>
|
|
erzeugt einen Viertelkreis im ersten Quadranten mit Mittelpunkt im Ursprung.
|
|
|
|
|
|
<a name=31>
|
|
<h1>ASSIGN</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Tastenbelegung zuweisen.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>ASSIGN</tt><br>
|
|
<tt>ASSIGN function_key befehl..;</tt><br>
|
|
<tt>ASSIGN function_key;</tt>
|
|
<p>
|
|
<tt>function_key = modifier+key</tt><br>
|
|
<tt>modifier = </tt>jede Kombination aus <tt>S</tt> (Shift), <tt>C</tt> (Ctrl), <tt>A</tt> (Alt) und <tt>M</tt> (Cmd, nur auf Mac OS X)<br>
|
|
<tt>key = F1..F12, A-Z, 0-9, BS</tt> (Backspace)
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#91>SCRIPT</a>,
|
|
<a href=#19>Tastatur und Maus</a>
|
|
<p>
|
|
Mit dem ASSIGN-Befehl kann man die Funktionstasten <tt>F1</tt> bis <tt>F12</tt>,
|
|
die Buchstabentasten <tt>A</tt> bis <tt>Z</tt>, die (oberen) Zifferntasten
|
|
<tt>0</tt> bis <tt>9</tt> und die <tt>Backspace</tt>-Taste (jeweils auch
|
|
in Kombination mit Zusatztasten) mit einzelnen oder mehreren
|
|
Befehlen belegen.
|
|
<p>
|
|
Der ASSIGN-Befehl ohne Parameter listet die aktuelle Tastenbelegung
|
|
in einem Dialog auf, in dem die Einstellungen auch verändert werden können.
|
|
<p>
|
|
Die beim Betätigen der Taste auszuführende Befehlssequenz sollte man der
|
|
Klarheit wegen in Hochkommas einschließen.
|
|
<p>
|
|
Soll als <tt>key</tt> eine der Tasten <tt>A-Z</tt> oder <tt>0-9</tt> verwendet
|
|
werden, so muss der <tt>modifier</tt> mindestens <tt>A</tt>, <tt>C</tt> oder <tt>M</tt> enthalten.
|
|
<table><tr><td valign="top"><img src="platforms-mac.png"></td><td valign="middle">
|
|
Der <b><tt>M</tt></b> modifier ist nur unter <b>Mac OS X</b> verfügbar.
|
|
</td></tr></table>
|
|
<p>
|
|
Bitte beachten Sie, dass eine eventuell auf einer Taste liegende
|
|
Betriebssystem-Funktion durch den ASSIGN-Befehl überschrieben wird
|
|
(je nach verwendetem Betriebssystem kann es sein, dass bestimmte Tastenkombinationen
|
|
nicht mit dem ASSIGN-Befehl überschrieben werden können).<br>
|
|
Falls Sie eine Buchstabentaste zusammen mit dem Modifier <tt>A</tt> belegen (zum Beispiel
|
|
<tt>A+F</tt>), so steht ein eventueller Hotkey im Pulldown-Menü nicht mehr
|
|
zur Verfügung.
|
|
<p>
|
|
Um eine Tastenbelegung wieder zu entfernen geben Sie <tt>ASSIGN</tt>
|
|
nur mit dem function_key Code (ohne Befehl) ein.
|
|
<h2>Beispiele</h2>
|
|
<pre>
|
|
ASSIGN F7 'change layer top; route';
|
|
ASS A+F7 'cha lay to; rou';
|
|
ASSIGN C+F10 menu add mov rou ''';''' edit;
|
|
ASSIGN CA+R 'route';
|
|
</pre>
|
|
Die beiden ersten Eingaben bewirken das gleiche, da EAGLE nicht nur
|
|
bei Befehlen, sondern auch bei den Parametern Abkürzungen zulässt,
|
|
solange sie eindeutig sind.
|
|
<p>
|
|
Beachten Sie, dass hier z. B. der Befehl "CHANGE layer top"
|
|
mit Strichpunkt abgeschlossen ist und der ROUTE-Befehl nicht.
|
|
Im ersten Fall enthält der Befehl nämlich alle Parameterangaben,
|
|
während im zweiten Fall noch Koordinatenangaben fehlen (die dann
|
|
sinnvollerweise mit der Maus eingegeben werden). Der ROUTE-Befehl
|
|
darf also nicht mit Strichpunkt abgeschlossen werden.
|
|
<h2>Befehlsmenü einstellen</h2>
|
|
Will man mit ASSIGN eine Taste so belegen, dass sie ein
|
|
neues Menü einstellt, dann muss das im MENU-Befehl enthaltene
|
|
Trennzeichen (Strichpunkt) von jeweils drei Hochkommas eingeschlossen
|
|
sein, wie im dritten Beispiel zu sehen.
|
|
<h2>Voreinstellung der Tastenbelegung</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>F1 HELP</tt> </td><td width=20><td>Hilfe-Funktion</td></tr>
|
|
<tr><td><tt>Alt+F2 WINDOW FIT</tt> </td><td width=20><td>Zeichnung formatfüllend darst.</td></tr>
|
|
<tr><td><tt>F2 WINDOW;</tt> </td><td width=20><td>Bildschirminhalt auffrischen</td></tr>
|
|
<tr><td><tt>F3 WINDOW 2</tt> </td><td width=20><td>In das Bild hineinzoomen, Fakt. 2</td></tr>
|
|
<tr><td><tt>F4 WINDOW 0.5</tt> </td><td width=20><td>Herauszoomen um Faktor 2</td></tr>
|
|
<tr><td><tt>F5 WINDOW (@);</tt> </td><td width=20><td>Neues Zentrum an der Position des Mauszeigers</td></tr>
|
|
<tr><td><tt>F6 GRID;</tt> </td><td width=20><td>Raster ein-/ausblenden</td></tr>
|
|
<tr><td><tt>F7 MOVE</tt> </td><td width=20><td>MOVE-Befehl</td></tr>
|
|
<tr><td><tt>F8 SPLIT</tt> </td><td width=20><td>SPLIT-Befehl</td></tr>
|
|
<tr><td><tt>F9 UNDO</tt> </td><td width=20><td>Befehl(e) zurücknehmen</td></tr>
|
|
<tr><td><tt>F10 REDO</tt> </td><td width=20><td>Befehl erneut ausführen</td></tr>
|
|
<tr><td><tt>Alt+BS UNDO</tt> </td><td width=20><td>Befehl(e) zurücknehmen</td></tr>
|
|
<tr><td><tt>Shift+Alt+BS REDO</tt> </td><td width=20><td>Befehl erneut ausführen</td></tr>
|
|
</table>
|
|
|
|
|
|
<a name=32>
|
|
<h1>ATTRIBUTE</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Definition von Attributen für Bauteile.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>ATTRIBUTE name [ 'value' ] [ options ]</tt><br>
|
|
<tt>ATTRIBUTE part_name attribute_name</tt><br>
|
|
<tt>ATTRIBUTE part_name attribute_name 'attribute_value' [ [ orientation ] • ]</tt><br>
|
|
<tt>ATTRIBUTE part_name attribute_name DELETE</tt><br>
|
|
<tt>ATTRIBUTE * [ name [ 'value' ] ]</tt><br>
|
|
<tt>ATTRIBUTE * name DELETE</tt><br>
|
|
<tt>ATTRIBUTE •..</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#98>TECHNOLOGY</a>,
|
|
<a href=#68>NAME</a>,
|
|
<a href=#103>VALUE</a>,
|
|
<a href=#95>SMASH</a>,
|
|
<a href=#99>TEXT</a>
|
|
<p>
|
|
Siehe Beschreibung der <tt>orientation</tt> bei <a href=#29>ADD</a>.
|
|
<p>
|
|
Ein <i>Attribut</i> ist eine beliebige Kombination aus einem <i>Namen</i> und
|
|
einem <i>Wert</i>, welche dazu benutzt werden kann, einem bestimmten Bauteil
|
|
jede Art von Information zuzuordnen.
|
|
<p>
|
|
Attribute können in der Bibliothek definiert werden (für einzelne Devices), im
|
|
Schaltplan oder im Board (für konkrete Bauteile). Attribute, die auf der Device-Ebene
|
|
definiert wurden, werden für jedes Bauteil dieses Typs im Schaltplan verwendet.
|
|
Im Schaltplan können jedem Bauteil weitere Attribute hinzugefügt werden, und bestehende
|
|
Attribute von den Devices können mit anderen Werten überschrieben werden (falls die
|
|
Attribute als <i>variabel</i> definiert wurden). Ein Element im Board hat alle
|
|
Attribute des zugehörigen Bauteils im Schaltplan und kann weitere, eigene Attribute
|
|
haben.
|
|
<h2>Attribute in der Bibliothek</h2>
|
|
In einer Bibliothek kann der ATTRIBUTE-Befehl dazu verwendet werden, die Attribute
|
|
einer bestimmten Technology-Variante zu definieren. Die Syntax hierfür lautet
|
|
<pre>
|
|
ATTRIBUTE name [ 'value' ] [ options ]
|
|
</pre>
|
|
Der <tt>name</tt> darf aus beliebigen Buchstaben, Ziffern und den Zeichen
|
|
'_', '#' und '-' bestehen und beliebig lang sein; das erste Zeichen darf allerdings
|
|
nicht '-' sein. Die Groß-/Kleinschreibung spielt bei den Namen keine Rolle, so dass
|
|
PartNo und PARTNO der gleiche Name sind. Der <tt>value</tt> darf beliebige Zeichen
|
|
enthalten und muss in Hochkommas angegeben werden.
|
|
<p>
|
|
Gültige <tt>options</tt> sind:
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>delete</tt> </td><td width=20><td>Löscht das Attribut mit dem angegebenen Namen aus allen Technology-Varianten (in diesem Fall darf kein 'value' angegeben werden).</td></tr>
|
|
<tr><td><tt>variable</tt></td><td width=20><td>Das Attribut wird als <i>variabel</i> markiert, so dass es im Schaltplan überschrieben werden kann (dies ist die Standardeinstellung).</td></tr>
|
|
<tr><td><tt>constant</tt></td><td width=20><td>Attribute, die als <i>konstant</i> markiert sind, können nicht im Schaltplan überschrieben werden (es sei denn, der Anwender besteht darauf). Wird ein neues Attribut in einem Device als <i>konstant</i> definiert, so erhalten auch alle anderen Technologien diese Einstellung.</td></tr>
|
|
</table>
|
|
Optionen können abgekürzt werden und Groß-/Kleinschreibung spielt keine Rolle.
|
|
<p>
|
|
Ein bereits bestehendes Attribut kann zwischen <i>variabel</i> und <i>konstant</i>
|
|
umgeschaltet werden, ohne dass sein Wert erneut angegeben werden muss:
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>ATTRIBUTE ABC '123'</tt> </td><td width=20><td>(standardmäßig variabel)</td></tr>
|
|
<tr><td><tt>ATTRIBUTE ABC constant</tt></td><td width=20><td>(ABC behält den Wert '123')</td></tr>
|
|
</table>
|
|
Wird der Wert eines Attributes verändert, so bleibt seine <i>konstant/variabel</i>-Einstellung
|
|
unverändert (es sei denn, sie wird explizit angegeben).
|
|
<p>
|
|
Die Attribut-Namen NAME, PART, GATE, DRAWING_NAME, LAST_DATE_TIME,
|
|
PLOT_DATE_TIME und SHEET sind nicht erlaubt, da sie mit den bereits existierenden
|
|
<a href=#99>Text Variablen</a> kollidieren würden. Ist ein Attribut
|
|
namens VALUE definiert, so wird dessen Wert zum Initialisieren des tatsächlichen
|
|
Wertes eines Bauteils beim Einsetzen in den Schaltplan verwendet (vorausgesetzt,
|
|
das Device-Set hat 'Value On').
|
|
<h2>Attribute im Schaltplan</h2>
|
|
Im Schaltplan kann der ATTRIBUTE-Befehl dazu verwendet werden, einem Bauteil
|
|
Attribute zuzuweisen. Der Wert eines solchen Attributs überschreibt dann den
|
|
des gleichnamigen Attributs aus der Bibliothek (falls das Device ein solches
|
|
Attribut hat und das Überschreiben zulässt). Einem Bauteil können auch Attribute
|
|
zugewiesen werden, die nicht in der Bibliothek definiert wurden.
|
|
<p>
|
|
Wird nach dem Selektieren des ATTRIBUTE-Befehls auf ein Bauteil geklickt, so
|
|
erscheint ein Dialog in dem alle Attribute dieses Bauteils aufgelistet sind
|
|
und bearbeitet werden können.
|
|
<p>
|
|
Um ein Attribut vollständig textuell zu definieren kann folgende Syntax benutzt werden:
|
|
<pre>
|
|
ATTRIBUTE part_name attribute_name 'attribute_value' orientation •
|
|
</pre>
|
|
Beachten Sie bitte, dass im Falle eines Bauteils, das aus mehreren Gattern besteht,
|
|
tatsächlich eines dieser Gatter ausgewählt wird. Bei der Auswahl über einen Mausklick
|
|
ist bereits klar, welches Gatter gemeint ist, wohingegen bei der textuellen Auswahl der
|
|
vollständige Name bestehend aus Bauteil- und Gattername angegeben werden sollte.
|
|
Ein konkretes Bauteil kann nur ein Attribut mit einem bestimmten Namen haben, dieses
|
|
kann aber zu jedem (oder allen) seiner Gattern hinzugefügt werden.
|
|
Wird nur der Bauteilname angegeben, so wird implizit das erste sichtbare Gatter
|
|
ausgewählt.
|
|
<p>
|
|
Werden keine Koordinaten angegeben (und der Befehl mit <tt>';'</tt> abgeschlossen),
|
|
so hängt das Verhalten davon ab, ob das gegebene Attribut für dieses Bauteil
|
|
bereits existiert (entweder im Device oder im Schaltplan). Existiert das Attribut
|
|
bereits, so wird lediglich sein Wert geändert. Falls es noch nicht existiert, so
|
|
wird ein neues Attribut mit dem gegebenen Namen und Wert angelegt und am
|
|
Aufhängepunkt des ausgewählten Gatters des Bauteils platziert.
|
|
<p>
|
|
Um ein Attribut von einem Bauteil zu entfernen kann der Befehl
|
|
<pre>
|
|
ATTRIBUTE part_name attribute_name DELETE
|
|
</pre>
|
|
verwendet werden.
|
|
<p>
|
|
Bei der Definition von Attributen über die Kommandozeile oder ein Script
|
|
verwenden Sie bitte den <a href=#36>CHANGE</a> DISPLAY Befehl
|
|
um einzustellen, welche Teile des Attributs (Name, Wert, beides oder nichts davon)
|
|
sichtbar sein sollen.
|
|
<h2>Attribute im Board</h2>
|
|
Im Board können den Bauteilen Attribute auf die gleiche Weise zugewiesen werden
|
|
wie im Schaltplan. Standardmäßig haben die Bauteile im Board alle Attribute, die
|
|
für das jeweils zugehörige Bauteil im Schaltplan (und dessen Device in der Bibliothek)
|
|
definiert wurden. Gleichnamige Attribute eines zusammengehörenden Paares von Bauteilen
|
|
im Schaltplan und im Board haben immer den selben Wert (über die <a href=#341>Forward&Back-Annotation</a>).
|
|
Bauteile im Board können zusätzliche Attribute erhalten, die nicht im Schaltplan
|
|
oder in der Bibliothek definiert wurden.
|
|
<h2>Globale Attribute</h2>
|
|
Globale Attribute können in Boards und Schaltplänen definiert werden indem
|
|
als Bauteilname ein <tt>'*'</tt> eingegeben wird (was gleichbedeutend ist damit,
|
|
dass das Attribut für <i>alle</i> Bauteile gilt). Alternativ können die globalen
|
|
Attribute auch über die Menü-Option "Bearbeiten/Globale Attribute..." definiert
|
|
werden. Die globalen Attribute von Board und Schaltplan werden getrennt voneinander
|
|
behandelt und sind nicht über <a href=#341>Forward&Back-Annotation</a>
|
|
verbunden.
|
|
<p>
|
|
Solch ein Attribut könnte zum Beispiel der Autor der Zeichnung sein, und kann
|
|
im Schriftfeld des Zeichnungsrahmens verwendet werden. Es wird dann auf jeder
|
|
Schaltplan-Seite angezeigt, die einen Zeichnungsrahmen enthält in dem sich
|
|
eine gleichnamige <a href=#99>Text Variable</a> befindet.
|
|
<h2>Layer auswählen</h2>
|
|
Im Gegensatz zu anderen Befehlen (wie etwa WIRE) merkt sich der ATTRIBUTE-Befehl
|
|
den zuletzt verwendeten Layer selbst. Das hat den Vorteil, dass Attribute immer
|
|
im richtigen Layer landen, egal welche Layer andere Befehle verwenden. Der
|
|
Nachteil ist, dass die übliche Vorgehensweise, den Layer in einem Script auszuwählen,
|
|
wie etwa
|
|
<pre>
|
|
LAYER <i>Layer</i>;
|
|
WIRE (1 2) (3 4);
|
|
</pre>
|
|
hier nicht funktioniert. Der Layer muss gewählt werden, wenn der ATTRIBUTE-Befehl
|
|
bereits aktiv ist. Dies kann folgendermaßen geschehen:
|
|
<pre>
|
|
ATTRIBUTE <i>Parameter</i>
|
|
LAYER <i>Layer</i>
|
|
<i>weitere Parameter</i>;
|
|
</pre>
|
|
Beachten Sie, dass die ATTRIBUTE-Zeile <b>nicht</b> mit einem <tt>';'</tt>
|
|
abgeschlossen ist, und dass der LAYER-Befehl in einer neuen Zeile beginnt.<br>
|
|
Die Befehle
|
|
<pre>
|
|
ATTRIBUTE
|
|
LAYER <i>Layer</i>;
|
|
</pre>
|
|
setzen den Layer für nachfolgende ATTRIBUTE-Befehle.
|
|
<h2>Beispiele</h2>
|
|
Zuerst müssen das Package und die Technology (falls es mehr als eine gibt) gewählt werden,
|
|
dann können die Attribute für diese Technology definiert werden:
|
|
<pre>
|
|
PACKAGE N;
|
|
TECHNOLOGY LS;
|
|
ATTRIBUTE PartNo '12345-ABC';
|
|
ATTRIBUTE Temp '100K' constant;
|
|
ATTRIBUTE Remark 'mount manually';
|
|
</pre>
|
|
|
|
|
|
<a name=33>
|
|
<h1>AUTO</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
<a href=#131>Autorouter</a> aktivieren.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>AUTO;</tt><br>
|
|
<tt>AUTO signal_name..;</tt><br>
|
|
<tt>AUTO ! signal_name..;</tt><br>
|
|
<tt>AUTO •..;</tt><br>
|
|
<tt>AUTO FOLLOWME</tt><br>
|
|
<tt>AUTO LOAD|SAVE filename;</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#94>SIGNAL</a>,
|
|
<a href=#89>ROUTE</a>,
|
|
<a href=#106>WIRE</a>,
|
|
<a href=#81>RATSNEST</a>,
|
|
<a href=#92>SET</a>
|
|
<p>
|
|
Der AUTO-Befehl aktiviert den integrierten Autorouter. Werden Signalnamen
|
|
angegeben oder Signale mit der Maus selektiert, werden nur diese Signale
|
|
verlegt. Ohne weitere Parameter verlegt der Autorouter alle Signale.
|
|
Das Zeichen "!" gibt an, dass alle Signale ausser den angegebenen zu
|
|
routen sind. Es muss vor allen Signalnamen stehen und darf nur einmal
|
|
vorkommen.
|
|
<p>
|
|
Die Optionen <tt>LOAD</tt> und <tt>SAVE</tt> können dazu verwendet werden die
|
|
Autorouter-Parameter aus der angegebenen Datei zu laden bzw. sie in diese zu speichern.
|
|
Falls <i>filename</i> nicht die Extension <tt>".ctl"</tt> hat wird diese automatisch
|
|
angefügt.
|
|
<p>
|
|
Ohne Parameter (oder wenn das abschließende <tt>';'</tt> nicht angegeben wird),
|
|
öffnet der AUTO-Befehl einen Dialog, in dem die Steuerparameter für den
|
|
Routing-Algorithmus eingestellt werden können. Die spezielle Option <tt>FOLLOWME</tt>
|
|
öffnet diesen Dialog in einem Modus, in dem nur die für den <a href=#89>Follow-me-Router</a>
|
|
maßgeblichen Parameter verändert werden können.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
AUTO ! GND VCC;
|
|
</pre>
|
|
Der abschließende Strichpunkt ist in jedem Fall erforderlich, es sei
|
|
denn, der Autorouter wird vom Menü aus mit "Start" gestartet.
|
|
Die Aktivitäten des Autorouters können Sie am Bildschirm mitverfolgen.
|
|
<p>
|
|
Das Menü des Autorouter-Befehls erscheint nach Eingabe von AUTO ohne
|
|
abschließenden Strichpunkt.
|
|
<h2>Platzhalter</h2>
|
|
Falls der <tt>signal_name</tt>-Parameter angegeben wurde, so sind die Zeichen <tt>'*'</tt>, <tt>'?'</tt>
|
|
und <tt>'[]'</tt> <i>Platzhalter</i> und haben folgende Bedeutung:
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>*</tt> </td><td width=20><td>steht für eine beliebige Anzahl beliebiger Zeichen</td></tr>
|
|
<tr><td><tt>?</tt> </td><td width=20><td>steht für genau ein Zeichen</td></tr>
|
|
<tr><td><tt>[...]</tt></td><td width=20><td>steht für irgend eines der Zeichen zwischen den Klammern</td></tr>
|
|
</table>
|
|
<p>
|
|
Soll eines dieser Zeichen genau so gesucht werden, wie es ist, so muss es in eckige Klammern
|
|
eingeschlossen werden. Zum Beispiel findet <tt>abc[*]ghi</tt> die Zeichenfolge <tt>abc*ghi</tt>,
|
|
aber nicht <tt>abcdefghi</tt>.
|
|
<p>
|
|
Ein Bereich von Zeichen kann als <tt>[a-z]</tt> angegeben werden, was für eines der Zeichen
|
|
aus dem Bereich <tt>'a'</tt>...<tt>'z'</tt> steht.
|
|
<h2>Polygone</h2>
|
|
Beim Starten des Autorouters werden alle <a href=#77>Polygone</a> neu
|
|
freigerechnet.
|
|
<h2>Protokolldatei</h2>
|
|
Informationen zum Routing-Vorgang enthält die Datei name.pro, die
|
|
ebenfalls automatisch angelegt wird.
|
|
<h2>Routing-Fläche</h2>
|
|
Der Autorouter legt ein umschließendes Rechteck um alle Objekte des Boards
|
|
und nimmt die Größe dieses Rechtecks als maximale
|
|
Route-Fläche. Wires im Dimension-Layer stellen für den Autorouter
|
|
Sperrlinien dar. Das heisst, mit geschlossenen Linienzügen in diesem Layer kann man
|
|
den Route-Bereich begrenzen.
|
|
<h2>Signale</h2>
|
|
Als Signale erkennt der Autorouter Wires und Polygone in den Layern Top, Bottom und
|
|
Route2...15, sowie die mit SIGNAL definierten Luftlinien.
|
|
<h2>Sperrflächen</h2>
|
|
Objekte in den Layern bRestrict, tRestrict und
|
|
vRestrict werden als Sperrflächen für Löt- und Bestückungsseite sowie
|
|
für Durchkontaktierungen (Vias) behandelt.
|
|
<p>
|
|
Falls der Autorouter keine Signale in einem Layer verlegen soll, ist
|
|
in das Feld für die Vorzugsrichtung 0 einzutragen.
|
|
<h2>Wahl des Rasters</h2>
|
|
Bei der Wahl des Rasters ist zu beachten, dass möglichst keine Pads für
|
|
den Router "unsichtbar" werden. Das heisst, jedes Pad soll mindestens
|
|
einen Routing-Rasterpunkt belegen, sonst kann es passieren, dass der
|
|
Autorouter eine Verbindung nicht legen kann, die ansonsten ohne
|
|
Probleme zu verlegen wäre - einfach weil er das entsprechende Pad
|
|
nicht auf seinem Raster darstellen kann.
|
|
<h2>Abbruch</h2>
|
|
Wird der Autorouter durch einen Klick auf den STOP-Button abgebrochen, so
|
|
werden die bis dahin noch nicht verlegten Luftlinien nicht automatisch neu
|
|
berechnet. Benutzen hierzu Sie den <a href=#81>RATSNEST</a>-Befehl.
|
|
|
|
|
|
<a name=34>
|
|
<h1>BOARD</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Erzeugt eine Board-Datei aus einem Schaltplan.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>BOARD [ grid ]</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#47>EDIT</a>
|
|
<p>
|
|
Der BOARD-Befehl erzeugt eine Layout-Datei aus einem Schaltplan.
|
|
<p>
|
|
Wenn die Platine bereits existiert, wird sie in ein Layout-Editor-Fenster
|
|
geladen.
|
|
<p>
|
|
Wenn die Platine nicht existiert, werden Sie gefragt, ob Sie eine
|
|
neue Datei anlegen wollen.
|
|
Wird der <tt>grid</tt> Parameter angegeben, so werden die Bauteile in dem
|
|
angegebenen Raster platziert, wie in
|
|
<pre>
|
|
BOARD 5mm
|
|
</pre>
|
|
womit die Bauteile in einem 5mm Raster platziert würden (Default ist
|
|
50mil). Die Zahl muss mit Einheit angegeben werden und der Maximalwert
|
|
ist 10mm.
|
|
<p>
|
|
Der BOARD-Befehl überschreibt niemals eine existierende Platinen-Datei.
|
|
Wenn eine Datei mit diesem Namen existiert, muss sie erst mit
|
|
<a href=#84>REMOVE</a> gelöscht werden, bevor der
|
|
BOARD-Befehl sie neu anlegen kann.
|
|
<h2>Platine aus Schaltplan erzeugen</h2>
|
|
Wird eine Platine zum erstenmal geladen, prüft das Programm, ob im
|
|
selben Verzeichnis ein Schaltplan mit demselben Namen existiert. Wenn
|
|
ja, fragt das Programm, ob aus dem Schaltplan die Platine erstellt
|
|
werden soll.<br>
|
|
Wenn ein Schaltplan geladen ist, können Sie die zugehörige Platine
|
|
erzeugen, indem Sie
|
|
<pre>
|
|
edit .brd
|
|
</pre>
|
|
in die Kommandozeile des Editor-Fensters eintippen.
|
|
<p>
|
|
Alle relevanten Daten der Schaltplan-Datei (name.sch) werden dann in eine
|
|
Board-Datei (name.brd) konvertiert. Das neue Board wird automatisch mit
|
|
einer Größe von 160x100mm
|
|
(<a href=#347>Light Edition</a>: 100x80mm)
|
|
angelegt.
|
|
Alle Packages mit den im
|
|
Schaltplan definierten Verbindungen sind links neben der leeren Platine
|
|
plaziert. Power-Pins sind bereits verbunden
|
|
(siehe <a href=#75>PIN</a>-Befehl).
|
|
<p>
|
|
Falls Sie andere als die standardmäßig angelegten Platinenumrisse benötigen,
|
|
brauchen Sie einfach nur die entsprechenden Linien zu löschen und die
|
|
gewünschten Umrisse mit dem <a href=#106>WIRE</a>-Befehl in den
|
|
Layer <i>Dimension</i> zu zeichnen. Wählen Sie dazu bitte eine
|
|
Strichbreite von 0, da es sich hierbei nur um Hilfslinien handelt.
|
|
<p>
|
|
Eine Board-Datei kann nicht angelegt werden:
|
|
<ul>
|
|
<li>Wenn sich Gates im Schaltplan befinden, die aus einem Device ohne
|
|
Package stammen (Fehlermeldung: "Bauteil ... hat kein Package!"). Ausnahme:
|
|
wenn nur Pins mit Direction "Sup" enthalten sind (Supply-Symbole).
|
|
<li>Wenn sich Gates im Schaltplan befinden, die aus einem Device
|
|
stammen, für das nicht allen Pins ein Gehäuse-Pad zugeordnet ist
|
|
(Fehlermeldung: "... hat nicht angeschlossene Pins"). Ausnahme:
|
|
Device ohne Pins (z. B. Zeichnungsrahmen).
|
|
</ul>
|
|
|
|
|
|
<a name=35>
|
|
<h1>BUS</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Zeichnen von Bussen im Schaltplan.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>BUS [bus_name] • [curve | @radius] •..</tt>
|
|
<dt>
|
|
<b>Maustasten</b>
|
|
<dd>
|
|
<mb>Rechte</mb> ändert den Knickwinkel (siehe <a href=#92>SET Wire_Bend</a>).<br>
|
|
<mb>Shift+Rechte</mb> kehrt die Richtung des Weiterschaltens des Knickwinkels um.<br>
|
|
<mb>Ctrl+Rechte</mb> schaltet zwischen korrespondierenden Knickwinkeln hin und her.
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#69>NET</a>,
|
|
<a href=#68>NAME</a>,
|
|
<a href=#92>SET</a>
|
|
<p>
|
|
Mit dem Befehl BUS zeichnet man Busse in den Bus-Layer eines Schaltplans.
|
|
Der Busname hat die Form
|
|
<pre>
|
|
SYNONYM:Teilbus,Teilbus,..
|
|
</pre>
|
|
wobei SYNONYM ein beliebiger Name sein darf.
|
|
Teilbus ist entweder ein Netzname oder ein Busname mit Index in der Form:
|
|
<pre>
|
|
Name[LowestIndex..HighestIndex]
|
|
</pre>
|
|
Folgende Bedingungen müssen erfüllt sein:
|
|
<p>
|
|
0 <= LowestIndex <= HighestIndex <= 511
|
|
<p>
|
|
Wird ein Teilbus mit einem Index verwendet, darf der Name nicht mit einer
|
|
Zahl enden, da sonst nicht klar wäre, welche Zahl zum Namen und welche zum
|
|
Index gehörten.
|
|
<p>
|
|
Wenn der Bus auf einem anderen Bus abgesetzt wird, endet die Linie an dieser
|
|
Stelle. Dieses Verhalten kann über "<tt>SET AUTO_END_NET OFF;</tt>" oder
|
|
durch Deselektieren der Option "Netze und Busse automatisch beenden" unter "Optionen/Einstellungen/Verschiedenes"
|
|
abgeschaltet werden.
|
|
<p>
|
|
Wird der <i>curve</i> oder <i>@radius</i> Parameter angegeben, so kann ein Kreisbogen als Teil des Busses
|
|
gezeichnet werden (siehe die ausführliche Beschreibung beim <a href=#106>WIRE</a>-Befehl).
|
|
<h2>Beispiele für Busnamen</h2>
|
|
<pre>
|
|
A[0..15]
|
|
RESET
|
|
DB[0..7],A[3..4]
|
|
ATBUS:A[0..31],B[0..31],RESET,CLOCK,IOSEL[0..1]
|
|
</pre>
|
|
Gibt man keinen Busnamen an, wird ein Name der Form B$1 automatisch
|
|
vergeben. Dieser Name lässt sich zu jeder Zeit mit dem NAME-Befehl
|
|
verändern. Die Breite der Linien, die einen Bus darstellen, lässt
|
|
sich z. B. mit
|
|
<pre>
|
|
SET BUS_WIRE_WIDTH 40;
|
|
</pre>
|
|
auf 40 Mil einstellen (Default: 30 Mil).
|
|
<h2>Negierte Signale</h2>
|
|
Der Name eines negierten Signals ("active low") kann überstrichen dargestellt werden,
|
|
wenn ihm ein Ausrufezeichen (<tt>'!'</tt>) vorangestellt wird, wie in
|
|
<pre>
|
|
ATBUS:A[0..31],B[0..31],!RESET,CLOCK,IOSEL[0..1]
|
|
</pre>
|
|
was als
|
|
<pre>
|
|
_____
|
|
ATBUS:A[0..31],B[0..31],RESET,CLOCK,IOSEL[0..1]
|
|
</pre>
|
|
dargestellt würde.
|
|
Einzelheiten hierzu finden Sie in der Beschreibung des <a href=#99>TEXT</a>-Befehls.
|
|
|
|
|
|
<a name=36>
|
|
<h1>CHANGE</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Ändern von Parametern.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>CHANGE option • •..</tt>
|
|
<dt>
|
|
<b>Maustasten</b>
|
|
<dd>
|
|
<mb>Ctrl+Rechte</mb> ändert Parameter der Gruppe.
|
|
</dl>
|
|
Der CHANGE-Befehl dient generell dazu, Eigenschaften von Objekten
|
|
zu ändern oder voreinzustellen. Objekte, die schon in der Zeichnung
|
|
vorhanden sind, werden einfach der Reihe nach mit der Maus selektiert,
|
|
nachdem der Befehl und der entsprechende Parameter vorher eingegeben
|
|
(bzw. aus einem Menü mit der Maus ausgewählt) wurden.
|
|
<p>
|
|
Nachfolgend plazierte Objekte erhalten die mit CHANGE geänderten
|
|
Eigenschaften. Damit ist es möglich, mit diesem Befehl Parameter
|
|
voreinzustellen.
|
|
<p>
|
|
Alle Zahlenangaben beziehen sich auf die aktuelle Maßeinheit (siehe GRID).
|
|
<h2>Gruppe ändern</h2>
|
|
Will man den CHANGE-Befehl auf eine Gruppe ausführen, definiert
|
|
man zuerst die Gruppe mit dem <a href=#54>GROUP</a>-Befehl, dann gibt man den CHANGE-Befehl
|
|
mit den entsprechenden Parametern ein und klickt die Gruppe anschließend
|
|
mit der rechten Maustaste an.
|
|
<h2>Möglichkeiten des CHANGE-Befehls</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td>Layer wechseln </td><td width=20><td><tt>CHANGE LAYER name | number</tt></td></tr>
|
|
<tr><td>Text ändern </td><td width=20><td><tt>CHANGE TEXT [ text ]</tt></td></tr>
|
|
<tr><td>Texthöhe </td><td width=20><td><tt>CHANGE SIZE value</tt></td></tr>
|
|
<tr><td>Textstärke </td><td width=20><td><tt>CHANGE RATIO ratio</tt></td></tr>
|
|
<tr><td>Text Font </td><td width=20><td><tt>CHANGE FONT VECTOR | PROPORTIONAL | FIXED</tt></td></tr>
|
|
<tr><td>Wire-Breite </td><td width=20><td><tt>CHANGE WIDTH value</tt></td></tr>
|
|
<tr><td>Wire-Linientyp </td><td width=20><td><tt>CHANGE STYLE value</tt></td></tr>
|
|
<tr><td>Arc-Ende </td><td width=20><td><tt>CHANGE CAP ROUND | FLAT</tt></td></tr>
|
|
<tr><td>Pad-Form </td><td width=20><td><tt>CHANGE SHAPE SQUARE | ROUND | OCTAGON | LONG | OFFSET</tt></td></tr>
|
|
<tr><td>Pad-/Via-/Smd-Flags </td><td width=20><td><tt>CHANGE STOP | CREAM | THERMALS | FIRST OFF | ON</tt></td></tr>
|
|
<tr><td>Pad-/Via-Durchmesser </td><td width=20><td><tt>CHANGE DIAMETER diameter</tt></td></tr>
|
|
<tr><td>Pad-/Via/Hole-Bohrd. </td><td width=20><td><tt>CHANGE DRILL value</tt></td></tr>
|
|
<tr><td>Via Layer </td><td width=20><td><tt>CHANGE VIA from-to</tt></td></tr>
|
|
<tr><td>Smd-Maße </td><td width=20><td><tt>CHANGE SMD width height</tt></td></tr>
|
|
<tr><td>Pin-Parameter </td><td width=20><td><tt>CHANGE DIRECTION NC | IN | OUT | I/O | OC | HIZ | SUP | PAS | PWR | SUP</tt></td></tr>
|
|
<tr><td> </td><td width=20><td><tt>CHANGE FUNCTION NONE | DOT | CLK | DOTCLK</tt></td></tr>
|
|
<tr><td> </td><td width=20><td><tt>CHANGE LENGTH POINT | SHORT | MIDDLE | LONG</tt></td></tr>
|
|
<tr><td> </td><td width=20><td><tt>CHANGE VISIBLE BOTH | PAD | PIN | OFF</tt></td></tr>
|
|
<tr><td> </td><td width=20><td><tt>CHANGE SWAPLEVEL number</tt></td></tr>
|
|
<tr><td>Polygon-Parameter </td><td width=20><td><tt>CHANGE THERMALS OFF | ON</tt></td></tr>
|
|
<tr><td> </td><td width=20><td><tt>CHANGE ORPHANS OFF | ON</tt></td></tr>
|
|
<tr><td> </td><td width=20><td><tt>CHANGE ISOLATE distance</tt></td></tr>
|
|
<tr><td> </td><td width=20><td><tt>CHANGE POUR SOLID | HATCH</tt></td></tr>
|
|
<tr><td> </td><td width=20><td><tt>CHANGE RANK value</tt></td></tr>
|
|
<tr><td> </td><td width=20><td><tt>CHANGE SPACING distance</tt></td></tr>
|
|
<tr><td>Gate-Parameter </td><td width=20><td><tt>CHANGE SWAPLEVEL number</tt></td></tr>
|
|
<tr><td> </td><td width=20><td><tt>CHANGE ADDLEVEL NEXT | MUST | ALWAYS | CAN | REQUEST</tt></td></tr>
|
|
<tr><td>Netzklasse </td><td width=20><td><tt>CHANGE CLASS number | name</tt></td></tr>
|
|
<tr><td>Package-Variante </td><td width=20><td><tt>CHANGE PACKAGE part_name [device_name] | 'device_name' [part_name]</tt></td></tr>
|
|
<tr><td>Technologie </td><td width=20><td><tt>CHANGE TECHNOLOGY part_name [device_name] | 'device_name' [part_name]</tt></td></tr>
|
|
<tr><td>Attribute-Anzeige </td><td width=20><td><tt>CHANGE DISPLAY OFF | VALUE | NAME | BOTH</tt></td></tr>
|
|
<tr><td>Frame-Parameter </td><td width=20><td><tt>CHANGE COLUMS value</tt></td></tr>
|
|
<tr><td> </td><td width=20><td><tt>CHANGE ROWS value</tt></td></tr>
|
|
<tr><td> </td><td width=20><td><tt>CHANGE BORDER NONE | BOTTOM | RIGHT | TOP | LEFT | ALL</tt></td></tr>
|
|
<tr><td>Label </td><td width=20><td><tt>CHANGE XREF OFF | ON</tt></td></tr>
|
|
</table>
|
|
|
|
|
|
<a name=37>
|
|
<h1>CIRCLE</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Kreis in eine Zeichnung einfügen.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>CIRCLE • •.. </tt>[Kreismitte, Radius]<br>
|
|
<tt>CIRCLE width • •..</tt>
|
|
<dt>
|
|
<b>Maustasten</b>
|
|
<dd>
|
|
<mb>Mittlere</mb> wählt den Layer.
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#36>CHANGE</a>,
|
|
<a href=#106>WIRE</a>
|
|
<p>
|
|
Mit dem CIRCLE-Befehl zeichnet man Kreise in den aktiven Layer.
|
|
<p>
|
|
Der CIRCLE-Befehl in den Layern tRestrict, bRestrict
|
|
und vRestrict dient zum Anlegen von Sperrflächen. Dabei
|
|
sollte eine Linienstärke (width) von 0 gewählt werden.
|
|
<p>
|
|
Der Parameter "width" gibt die Strichstärke des Kreises an.
|
|
Er entspricht demselben Parameter des WIRE-Befehls und kann mit dem
|
|
Befehl
|
|
<pre>
|
|
CHANGE WIDTH breite;
|
|
</pre>
|
|
geändert bzw. voreingestellt werden. Dabei ist <i>breite</i> der
|
|
gewünschte Wert in der gegenwärtigen Einheit.
|
|
<p>
|
|
Kreise mit Strichstärke 0 werden gefüllt dargestellt.
|
|
<h2>Beispiel für Parameterangabe in Textform</h2>
|
|
<pre>
|
|
GRID inch 1;
|
|
CIRCLE (0 0) (1 0);
|
|
</pre>
|
|
erzeugt einen Kreis mit einem Radius von 1 Zoll um den Ursprung (0 0).
|
|
|
|
|
|
<a name=38>
|
|
<h1>CLASS</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Definieren und Wählen von Netzklassen.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>CLASS</tt><br>
|
|
<tt>CLASS number|name</tt><br>
|
|
<tt>CLASS number [ name [ width [ clearance [ drill ] ] ] ] [ number:clearance .. ]</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#133>Design Rules</a>,
|
|
<a href=#69>NET</a>,
|
|
<a href=#94>SIGNAL</a>,
|
|
<a href=#36>CHANGE</a>
|
|
<p>
|
|
Der CLASS-Befehl wird zur Definition von Netzklassen verwendet.
|
|
<p>
|
|
Ohne Angabe von Parametern, wird ein Dialog geöffnet, der es erlaubt Netzklassen festzulegen.
|
|
<p>
|
|
Wird nur <tt>number</tt> oder <tt>name</tt> angegeben, wählt man die Netzklasse mit der
|
|
entsprechenden Nummer bzw. dem Namen für die folgenden NET- und SIGNAL-Befehle vor.
|
|
<p>
|
|
Wird <tt>number</tt> und <tt>name</tt> angegeben, werden dieser Netzklasse
|
|
die folgenden Werte für die Parameter zugeordnet. Diese
|
|
Netzklasse ist gleichzeitig für die folgenden NET- und SIGNAL-Befehle vorgewählt.
|
|
Werden nach <tt>name</tt> nicht alle Parameter angegeben, gelten die Werte
|
|
der Reihe nach für width, clearance, drill bzw. interspace. Soll beispielsweise nur drill geändert
|
|
werden, müssen also auch die Parameter für width und clearance angegeben werden.
|
|
<p>
|
|
Wird <tt>number</tt> negativ gewählt, löscht man die Netzklasse mit dem Absolutwert
|
|
der angegebenen <tt>number</tt>.
|
|
Die Default-Netzklasse <tt>0</tt> kann man nicht löschen.
|
|
<p>
|
|
Bei den Namen der Netzklassen wird nicht zwischen Groß- und Kleinbuchstaben unterschieden.
|
|
SUPPLY hat z. B. dieselbe Bedeutung wie Supply oder SuPpLy.
|
|
<p>
|
|
Werden mehrere Netzklassen in einer Zeichnung verwendet, braucht
|
|
der Autorouter länger um seine Arbeit zu erledigen. Daher ist es sinnvoll nur soviele
|
|
Netzklassen wie unbedingt nötig zu verwenden (die Anzahl der tatsächlich benutzten Netzklassen
|
|
ist ausschlaggebend, nicht die Anzahl der definierten Netzklassen).
|
|
<p>
|
|
Um Probleme bei CUT-und-PASTE-Aktionen zwischen verschiedenen Zeichnungen zu
|
|
vermeiden, ist es sinnvoll den unterschiedlichen Netzklassen in verschiedenen
|
|
Zeichnungen dieselben Nummern zu geben.
|
|
<p>
|
|
Der Autorouter verlegt die Signal in der Reihenfolge der benötigten Breite (width +
|
|
clearance), beginnend mit denen, die am meisten Platz benötigen. Der Bus-Router
|
|
verlegt nur Signale mit Netzklasse <tt>0</tt>.
|
|
<p>
|
|
Für bestehende Netze/Signale kann CLASS mit dem CHANGE-Befehl geändert werden.
|
|
Änderungen der Netzklassen mit dem CLASS-Befehl werden nicht im UNDO/REDO-Puffer gespeichert.
|
|
<h2>Width</h2>
|
|
Der <i>width</i>-Parameter bestimmt die Mindestbreite, die alle Objekte in dieser
|
|
Netzklasse haben müssen.
|
|
<h2>Clearance</h2>
|
|
Der <i>clearance</i>-Parameter bestimmt den Mindestabstand zwischen Objekten
|
|
verschiedener Signale in dieser Netzklasse zu Objekten in anderen Netzklassen.
|
|
<h2>Drill</h2>
|
|
Der <i>drill</i>-Parameter bestimmt den Mindest-Bohrdurchmesser, den alle Objekte
|
|
in dieser Netzklasse haben müssen (bezieht sich nur auf Objekte, die auch tatsächlich
|
|
einen <i>drill</i>-Parameter haben, wie etwa Pads und Vias).
|
|
<h2>Clearance zwischen Netzklassen</h2>
|
|
Wird eine Clearance in der Form <tt>number:clearance</tt> angegeben, so definiert
|
|
sie den Mindestabstand zwischen Signalen in dieser Netzklasse und solchen in der
|
|
Netzklasse mit der angegebenen <tt>number</tt>. Der Befehl
|
|
<pre>
|
|
CLASS 3 1:0.6mm 2:0.8mm
|
|
</pre>
|
|
definiert einen Mindestabstand von 0.6mm zwischen Signalen in den Netzklassen 1 und 3,
|
|
sowie einen von 0.8mm zwischen Signalen in den Netzklassen 2 und 3. Beachten Sie bitte,
|
|
dass die Nummern in <tt>number:clearance</tt> kleiner oder gleich der Nummer der
|
|
Netzklasse selbst (<tt>'3'</tt> im obigen Beispiel) sein müssen. Demnach wäre
|
|
<pre>
|
|
CLASS 3 1:0.6mm 2:0.8mm 3:0.2mm
|
|
</pre>
|
|
ebenfalls gültig, während
|
|
<pre>
|
|
CLASS 3 1:0.6mm 2:0.8mm 3:0.2mm 4:0.5mm
|
|
</pre>
|
|
nicht erlaubt ist
|
|
|
|
|
|
<a name=39>
|
|
<h1>CLOSE</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Schließt ein Editor-Fenster.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>CLOSE</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#70>OPEN</a>,
|
|
<a href=#47>EDIT</a>,
|
|
<a href=#107>WRITE</a>,
|
|
<a href=#91>SCRIPT</a>
|
|
<p>
|
|
Der CLOSE-Befehl schließt ein Editor-Fenster. Wenn die geladene Datei
|
|
verändert worden ist, werden Sie gefragt, ob sie abgespeichert werden
|
|
soll.
|
|
<p>
|
|
Dieser Befehl ist in erster Linie für Script-Dateien erforderlich.
|
|
|
|
|
|
<a name=40>
|
|
<h1>CONNECT</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Zuordnung von Pins und Pads.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>CONNECT</tt><br>
|
|
<tt>CONNECT symbol_name.pin_name pad_name..</tt><br>
|
|
<tt>CONNECT pin_name pad_name..</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#78>PREFIX</a>,
|
|
<a href=#70>OPEN</a>,
|
|
<a href=#39>CLOSE</a>,
|
|
<a href=#91>SCRIPT</a>
|
|
<p>
|
|
Dieser Befehl wird im Device-Editier-Modus angewendet. Er dient dazu,
|
|
den Pins des Schaltplan-Symbols (Device), das gegenwärtig bearbeitet
|
|
wird, die entsprechenden Pads des zugehörigen Gehäuses zuzuweisen.
|
|
Zuvor muss mit dem PACKAGE-Befehl festgelegt worden sein, welches
|
|
Package für das Device verwendet werden soll.
|
|
<p>
|
|
Wird der CONNECT-Befehl ohne Parameter aufgerufen, so erscheint ein
|
|
Dialog in dem die Pad/Pin-Zuweisungen interaktiv definiert werden können.
|
|
<h2>Device hat ein Symbol</h2>
|
|
Ist im Device nur ein Symbol vorhanden, kann der Parameter symbol_name
|
|
entfallen, z.B.
|
|
<pre>
|
|
CONNECT gnd 1 rdy 2 phi1 3 !irq 4 nc1 5 ...
|
|
</pre>
|
|
<h2>Device hat mehrere Symbole</h2>
|
|
Sind im Device mehrere Symbole vorhanden, sind als Parameter symbol_name
|
|
und pin_name (mit Punkt als Trennzeichen) sowie pad_name anzugeben,
|
|
z.B.:
|
|
<pre>
|
|
CONNECT A.I1 1 A.I2 2 A.O 3;
|
|
CONNECT B.I1 4 B.I2 5 B.O 6;
|
|
CONNECT C.I1 13 C.I2 12 C.O 11;
|
|
CONNECT D.I1 10 D.I2 9 D.O 8;
|
|
CONNECT PWR.GND 7;
|
|
CONNECT PWR.VCC 14;
|
|
</pre>
|
|
In diesem Fall werden die Anschlüsse der vier NAND-Gatter eines
|
|
7400 zugewiesen. Das Device enthält fünf Symbole mit den Bezeichnungen
|
|
A, B, C, D, PWR. Die Eingänge der Gatter heißen im Schaltplan
|
|
I1 und I2; der Ausgang heisst O.
|
|
<p>
|
|
Der CONNECT-Befehl kann beliebig oft ausgeführt werden. Er kann
|
|
alle Pin/Pad-Zuweisungen enthalten oder nur einen Teil davon. Jeder
|
|
neue CONNECT-Befehl überschreibt die bisherigen Definitionen.
|
|
<h2>Gate- oder Pin-Namen mit Punkten</h2>
|
|
Soll ein Gate- oder ein Pin-Name einen Punkt enthalten, kann dieser ohne
|
|
weiteres verwendet werden. Es sind keine besonderen Zeichen (Esc-Character
|
|
oder Anführungszeichen) nötig.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
ed 6502.dev;
|
|
prefix 'IC';
|
|
package dil40;
|
|
connect gnd 1 rdy 2 phi1 3 !irq 4 nc1 5 !nmi 6 \
|
|
sync 7 vcc 8 a0 9 a1 10 a2 11 a3 12 a4 \
|
|
13 a5 14 a6 15 a7 16 a8 17 a9 18 a10 19 \
|
|
a11 20 p$0 21 a12 22 a13 23 a14 24 a15 \
|
|
25 d7 26 d6 27 d5 28 d4 29 d3 30 d2 31 \
|
|
d1 32 d0 33 r/w 34 nc2 35 nc3 36 phi0 37 \
|
|
so 38 phi2 39 !res 40;
|
|
</pre>
|
|
Hier sorgt das Zeichen "\" am Zeilenende dafür, dass
|
|
am Beginn der nächsten Zeile keine Zeichenfolge mit einem Befehl
|
|
verwechselt werden kann. Als Bestandteil eines Pin-Namens drückt
|
|
das Zeichen "!" aus, dass es sich um ein
|
|
invertiertes Signal handelt (z.B. "!irq").
|
|
<p>
|
|
Eine Verwechslung mit Befehlen kann man auch vermeiden, indem man
|
|
Parameter in Hochkommas einschließt.
|
|
|
|
|
|
<a name=41>
|
|
<h1>COPY</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Kopieren von Objekten.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>COPY • •..</tt><br>
|
|
<tt>COPY deviceset@library [name]</tt><br>
|
|
<tt>COPY package@library [name]</tt>
|
|
<dt>
|
|
<b>Maustasten</b>
|
|
<dd>
|
|
<mb>Ctrl+Linke</mb> selektiert ein Objekt an seinem Aufhängepunkt.<br>
|
|
<mb>Ctrl+Rechte</mb> selektiert die Gruppe.<br>
|
|
<mb>Mittlere</mb> spiegelt das selektierte Objekt bzw. die Gruppe.<br>
|
|
<mb>Rechte</mb> dreht das selektierte Objekt bzw. die Gruppe.<br>
|
|
<mb>Shift+Rechte</mb> kehrt die Richtung der Drehung um.
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#54>GROUP</a>,
|
|
<a href=#42>CUT</a>,
|
|
<a href=#74>PASTE</a>,
|
|
<a href=#29>ADD</a>,
|
|
<a href=#58>INVOKE</a>,
|
|
<a href=#77>POLYGON</a>
|
|
<p>
|
|
Mit dem COPY-Befehl lassen sich Objekte selektieren und
|
|
anschließend an eine andere Stelle derselben Zeichnung kopieren.
|
|
Beim Kopieren von Bauteilen generiert EAGLE einen neuen Namen und
|
|
behält den Wert (Value) bei. Beim Kopieren von Signalen (Wires),
|
|
Bussen und Netzen wird der Name beibehalten. In allen anderen Fällen
|
|
wird ein neuer Name generiert.
|
|
<h2>Leitungen kopieren</h2>
|
|
Kopiert man Wires oder Polygone, die zu einem Signal gehören, dann
|
|
gehört die Kopie zum selben Signal. Bitte beachten Sie, dass aus diesem
|
|
Grund der DRC keinen Fehler feststellt, wenn z. B. zwei Wires mit COPY
|
|
überlappend plaziert werden. Wird ein Netz- oder Bus-Wire im Schaltplan kopiert, so
|
|
gehört dieser zum gleichen Segment wie der ursprüngliche Wire, selbst
|
|
wenn optisch keine Verbindung zu erkennen ist. Dies kann zu unerwarteten
|
|
Effekten führen, zum Beispiel bei einem späteren Umbenennen. COPY sollte
|
|
daher auf Netz- bzw. Bus-Wires nicht angewendet werden.
|
|
<h2>Bauteile kopieren</h2>
|
|
Beim Kopieren eines Bauteils in einem Schaltplan wird immer eine komplette
|
|
neue Instanz dieses Bauteils hinzugefügt, auch wenn nur ein einzelnes Gatter
|
|
eines aus mehreren Gattern bestehenden Bauteils selektiert wurde. Zusätzlich
|
|
zu dem selektierten Gatter werden all jene Gatter des zugehörigen Devices,
|
|
welche Add-Level MUST oder ALWAYS haben, automatisch auch hinzugefügt.
|
|
<p>
|
|
Wenn Sie lediglich ein weiteres Gatter eines aus mehreren Gattern bestehenden
|
|
Bauteils verwenden wollen, sollten Sie stattdessen den
|
|
<a href=#58>INVOKE</a>-Befehl benutzen.
|
|
<h2>Bibliothekselemente kopieren</h2>
|
|
Durch Angabe von <tt>COPY deviceset@library</tt> oder <tt>COPY package@library</tt>
|
|
kann ein Device-Set oder ein Package aus einer gegebenen Bibliothek in die aktuell
|
|
geladene Bibliothek kopiert werden. Wird zusätzlich noch <tt>name</tt> angegeben,
|
|
so erhält das kopierte Objekt den angegebenen Namen.
|
|
Dies kann ebenso über das <a href=#13>Kontext-Menü</a> der
|
|
Bibliotheksobjekte oder über <i>Drag&Drop</i> aus der Baumansicht des Control
|
|
Panels erfolgen.
|
|
<p>
|
|
<b>Beachten Sie bitte, dass etwaige existierende Bibliotheksobjekte (Device-Sets,
|
|
Symbole oder Packages), die von dem kopierten Bibliotheksobjekt verwendet werden,
|
|
automatisch upgedatet werden.</b>
|
|
<h2>Eine Gruppe kopieren</h2>
|
|
Das Kopieren einer Gruppe durch Anklicken mit der rechten Maustaste wird durch
|
|
eine implizite <a href=#42>CUT</a>-Operation, gefolgt von einem
|
|
<a href=#74>PASTE</a> realisiert.
|
|
|
|
|
|
<a name=42>
|
|
<h1>CUT</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Gruppe in den Paste-Puffer laden.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>CUT •</tt><br>
|
|
<tt>CUT;</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#74>PASTE</a>,
|
|
<a href=#54>GROUP</a>
|
|
<p>
|
|
Teile einer Zeichnung (z. B. auch eine ganze Platine) lassen sich
|
|
mit Hilfe der Befehle GROUP, CUT und PASTE in andere Zeichnungen
|
|
übernehmen.
|
|
<p>
|
|
Zuerst definiert man eine Gruppe (GROUP). Dann aktiviert man den Befehl
|
|
CUT, gefolgt von einem Referenzpunkt (Mausklick oder Angabe einer
|
|
Koordinate (x y)) der den Paste-Puffer mit den selektierten Objekten lädt.
|
|
<tt>CUT;</tt> setzt den Referenzpunkt automatisch etwa in der Mitte der
|
|
selektierten Objekte (genauer: am nächstgelegenen Rasterpunkt).
|
|
Jetzt kann man die Platine oder die Bibliothek wechseln
|
|
und mit PASTE den Pufferinhalt in die neue Zeichnung kopieren. Falls
|
|
erforderlich, werden neue Namen generiert. Der Pufferinhalt bleibt
|
|
erhalten und kann mit weiteren PASTE-Befehlen erneut kopiert werden.
|
|
<h2>Referenzpunkt</h2>
|
|
Wird beim CUT-Befehl mit der Maus ein Punkt angeklickt, dann befindet
|
|
sich beim PASTE-Befehl der Mauszeiger an dieser Stelle der Gruppe
|
|
(genauer: am nächstgelegenen Rasterpunkt). Ansonsten befindet
|
|
sich der Mauszeiger bei PASTE etwa in der Mitte der Gruppe.
|
|
<h2>Hinweis</h2>
|
|
Im Gegensatz zu anderen (Windows-) Programmen entfernt der
|
|
CUT-Befehl von EAGLE die markierte Gruppe nicht physikalisch aus der
|
|
Zeichnung, sondern kopiert die Gruppe lediglich in den Paste-Buffer.
|
|
|
|
|
|
<a name=43>
|
|
<h1>DELETE</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Löschen von Objekten.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>DELETE •..</tt><br>
|
|
<tt>DELETE name ..</tt><br>
|
|
<tt>DELETE SIGNALS</tt>
|
|
<dt>
|
|
<b>Maustasten</b>
|
|
<dd>
|
|
<mb>Shift+Linke</mb> löscht das übergeordnete Objekt in der Hierarchie.<br>
|
|
<mb>Ctrl+Linke</mb> löscht die Verbindungsstelle zweier Wires.<br>
|
|
<mb>Ctrl+Rechte</mb> löscht die Gruppe.
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#87>RIPUP</a>,
|
|
<a href=#46>DRC</a>,
|
|
<a href=#54>GROUP</a>
|
|
<p>
|
|
Der DELETE-Befehl löscht das selektierte Objekt aus der Zeichnung.
|
|
<p>
|
|
Bauteile, Pads, Smds, Pins und Gatter lassen sich
|
|
auch mit ihrem Namen selektieren. Das ist vor allem dann nützlich,
|
|
wenn sich das Objekt ausserhalb des gerade dargestellten Bildausschnitts
|
|
befindet. Beim Selektieren eines aus mehreren Gattern bestehenden Bauteils
|
|
im Schaltplan muss der volle, aus dem Bauteil- und dem jeweiligen Gatternamen
|
|
bestehende Name angegeben werden.
|
|
<p>
|
|
Attribute von Bauteilen können dadurch selektiert werden, dass die Kombination
|
|
aus Bauteilname und Attributname angegeben wird, wie etwa <tt>R5>VALUE</tt>.
|
|
<p>
|
|
Mit der rechten Maustaste wird eine zuvor mit <a href=#54>GROUP</a>
|
|
definierte Gruppe gelöscht.
|
|
<p>
|
|
Nach dem Löschen einer Gruppe können Luftlinien, die durch das Entfernen
|
|
von Bauelementen neu entstanden sind, "übrigbleiben", da diese nicht in der
|
|
ursprünglich definierten Gruppe enthalten waren. In solchen Fällen sollte
|
|
mit <a href=#81>RATSNEST</a> eine Neuberechnung der Luftlinien
|
|
durchgeführt werden.
|
|
<p>
|
|
Bei aktiver <a href=#341>Forward&Back-Annotation</a> können
|
|
im Board keine Wires oder Vias aus Signalen gelöscht werden, die an
|
|
Bauelemente angeschlossen sind. Ebenso können keine Bauelemente gelöscht
|
|
werden, an die Signale angeschlossen sind. Änderungen dieser Art müssen
|
|
im Schaltplan vorgenommen werden.
|
|
<p>
|
|
Um eine bereits verlegte Verbindung im Board wieder in eine Luftlinie
|
|
zu verwandeln, verwenden Sie den <a href=#87>RIPUP</a>-Befehl.
|
|
<p>
|
|
Der DELETE-Befehl wirkt nur auf sichtbare Layer (siehe
|
|
DISPLAY-Befehl).
|
|
<h2>Löschen von Wire-Verbindungsstellen</h2>
|
|
Wird der DELETE-Befehl mit gedrückter <tt>Ctrl</tt>-Taste auf die Verbindungsstelle
|
|
zweier Wires angewendet, so werden diese zu einem einzelnen, geradlinigen Wire
|
|
zusammengefasst. Die beiden Wires müssen dazu im gleichen Layer liegen, die gleiche
|
|
Breite, den gleichen Linien-Typ und runde Enden (im Falle von Kreisbögen) haben.
|
|
<h2>Löschen von Polygon-Kanten</h2>
|
|
Bei Polygonen löscht der DELETE-Befehl jeweils eine Ecke. Sind
|
|
nur noch drei Ecken vorhanden, wird das ganze Polygon gelöscht.
|
|
<h2>Löschen von Bauelementen</h2>
|
|
Bauelemente auf der Top-Seite lassen sich nur löschen, wenn der
|
|
tOrigins-Layer sichtbar ist und wenn (bei aktiver
|
|
<a href=#341>Forward&Back-Annotation</a>) keine Signale
|
|
mit dem Element verbunden sind (siehe auch
|
|
<a href=#86>REPLACE</a>). Entsprechend lassen sich
|
|
Bauelemente auf der Bottom-Seite nur löschen, wenn der bOrigins-Layer
|
|
eingeblendet ist.
|
|
<h2>Löschen von Junction-Punkten, Netzen und Bussen</h2>
|
|
Es gelten folgende Regeln:
|
|
<ul>
|
|
<li>Zerfällt ein Bus-Segment in zwei Teilsegmente, so behalten beide
|
|
den ursprünglichen Namen.
|
|
<li>Zerfällt ein Netz-Segment in zwei Teilsegmente,
|
|
so behält das größere der beiden Teilsegmente den ursprünglichen
|
|
Namen, während das kleinere einen (neuen) generierten Namen erhält.
|
|
<li>Labels gehören nach der Trennung zum jeweils nächstgelegenen
|
|
Segment.
|
|
<li>Wird ein Junction-Punkt gelöscht, so wird das Netz an dieser
|
|
Stelle aufgetrennt. Prüfen Sie im Zweifelsfall mit SHOW nach,
|
|
welches Segment welchen Namen erhalten hat; falls die umgekehrte Namensgebung
|
|
gewünscht wird, lässt sie sich mit dem NAME-Befehl leicht
|
|
erreichen.
|
|
</ul>
|
|
<h2>Löschen von Supply-Symbolen</h2>
|
|
Wird das letzte Supply-Symbol einer gegebenen Versorgungsspannung von einem
|
|
Netzsegment, das den Namen dieses Supply-Symbols trägt, gelöscht, erhält dieses
|
|
Netzsegment einen neuen, automatisch generierten Namen (sofern kein anderes
|
|
Supply-Symbol mehr diesem Segment zugeordnet ist) oder den Namen eines noch
|
|
verbleibenden anderen Supply-Symbols.
|
|
<h2>Löschen von Signalen</h2>
|
|
Selektiert man mit dem DELETE-Befehl Wires oder Vias, die zu
|
|
einem Signal gehören, dann sind drei Fälle zu unterscheiden:
|
|
<ul>
|
|
<li>Das Signal wurde aufgetrennt und zerfällt in zwei Teile. EAGLE
|
|
vergibt dann intern für das kleinere Teilsignal einen neuen Namen
|
|
und behält den bisherigen Namen für das größere Teilsignal
|
|
bei.
|
|
<li>Das Signal wurde von einem Ende her gelöscht. Das verbleibende
|
|
Teilsignal behält seinen bisherigen Namen.
|
|
<li>Das Signal bestand nur noch aus einer Verbindung. Es ist dann ganz
|
|
gelöscht, und der bisherige Name existiert nicht mehr.
|
|
</ul>
|
|
Werden Wires oder Vias eines Signals gelöscht, das Polygone enthält, dann
|
|
bleiben alle Polygone in dem Teil des Signals, der den ursprünglichen
|
|
Namen behält (normalerweise der "größere" Teil).
|
|
<h2>Alle Signale löschen</h2>
|
|
<p>
|
|
DELETE SIGNALS kann dazu verwendet werden, alle Signale aus einer
|
|
Platine zu entfernen, um z. B. eine neue oder geänderte Netzliste
|
|
einzulesen. Es werden nur solche Signale entfernt, die an Pads angeschlossen
|
|
sind. Andere (wie z.B. Eckwinkel im Top- und Bottom-Layer, die intern
|
|
auch als Signal behandelt werden) bleiben unberührt.
|
|
<p>
|
|
Falls ein Bauteil gelöscht werden soll, das den Namen SIGNALS trägt,
|
|
so muss dieser in einfache Hochkommas gesetzt werden.
|
|
<h2>Löschen von übergeordneten Objekten</h2>
|
|
Wird ein Objekt mit gedrückter <tt>Shift</tt>-Taste angeklickt, so wird das in der Hierarchie
|
|
nächsthöhere Objekt gelöscht. Im Einzelnen gilt dies für folgende Objekte:
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>Gatter</tt> </td><td width=20><td>Löscht das gesamte Bauteil, in dem sich dieses Gatter befindet (auch wenn die Gatter auf mehrere Schaltplan-Seiten verteilt sind). Bei aktiver Forward&Backannotation werden die Leiterbahnen, die an dem Bauteil im Board angeschlossen sind, nicht in Luftlinien umgewandelt (was beim Löschen einzelner Gatter geschehen würde), ausgenommen die Fälle wo ein Pin des gelöschten Bauteils nur direkt mit genau einem anderen Pin und keinem Net-Wire verbunden ist</td></tr>
|
|
<tr><td><tt>Polygon Wire</tt> </td><td width=20><td>Löscht das gesamte Polygon</td></tr>
|
|
<tr><td><tt>Net/Bus Wire</tt> </td><td width=20><td>Löscht das gesamte Netz- bzw. Bus-Segment</td></tr>
|
|
</table>
|
|
<p>
|
|
Der DRC erzeugt unter Umständen Fehlerpolygone, die man nicht mit DELETE
|
|
löschen kann, sondern mit DRC Clear.
|
|
|
|
|
|
<a name=44>
|
|
<h1>DESCRIPTION</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Definiert die Beschreibung eines Devices, Packages oder einer Bibliothek.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>DESCRIPTION</tt><br>
|
|
<tt>DESCRIPTION description_string;</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#40>CONNECT</a>,
|
|
<a href=#72>PACKAGE</a>,
|
|
<a href=#103>VALUE</a>
|
|
<p>
|
|
Mit diesem Befehl erzeugt oder editiert man die Beschreibungstexte eines Devices,
|
|
eines Packages oder einer Bibliothek im Bibliotheks-Editor.
|
|
<p>
|
|
<tt>Description_string</tt> kann <a href=#339>HTML</a>-Steuerzeichen enthalten.
|
|
<p>
|
|
Die erste nicht leere Zeile von <tt>description_string</tt> wird als Kurzbeschreibung
|
|
(<i>headline</i>) im Control Panel angezeigt.
|
|
<p>
|
|
Der DESCRIPTION-Befehl ohne Angabe von Parametern öffnet einen Dialog, der das
|
|
Editieren des Textes erlaubt. Der obere Teil des Dialogs zeigt den formatierten Text,
|
|
sofern er Steuerzeichen des <a href=#339>HTML</a>-Formats enthält,
|
|
während der untere Teil für die Eingabe des Textes genutzt wird. Ganz oben im Dialog
|
|
sehen Sie das Feld <i>headline</i>. In diesem wird die Kurzbeschreibung ohne
|
|
HTML-Steuerzeichen angezeigt.
|
|
<p>
|
|
Die Beschreibung der Bibliothek kann von der Kommandozeile aus nur editiert werden, wenn die Bibliothek neu
|
|
geöffnet und bisher kein Device, Symbol oder Package editiert wurde. Sie kann aber jederzeit
|
|
über das Pulldown-Menü "Bibliothek/Beschreibung..." verändert werden.<br>
|
|
Die Beschreibung eines Devices oder eines Packages kann immer über die Kommandozeile
|
|
oder das Pulldown-Menü "Bearbeitung/Description..." verändert werden.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
DESCRIPTION '<b>Quad NAND</b><p>\nFour NAND gates with 2 inputs each.';
|
|
</pre>
|
|
Das Resultat sieht so aus:
|
|
<p>
|
|
<b>Quad NAND</b><p>
|
|
Four NAND gates with 2 inputs each.
|
|
|
|
|
|
<a name=45>
|
|
<h1>DISPLAY</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Auswählen der sichtbaren Layer.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>DISPLAY</tt><br>
|
|
<tt>DISPLAY [option] layer_number..</tt><br>
|
|
<tt>DISPLAY [option] layer_name..</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#61>LAYER</a>,
|
|
<a href=#79>PRINT</a>
|
|
<p>
|
|
Gültige options sind: ALL, NONE, LAST, ? und ??
|
|
<p>
|
|
Mit dem DISPLAY-Befehl wählt man diejenigen Layer aus, die auf
|
|
dem Bildschirm sichtbar sein sollen. Dabei darf als Parameter die
|
|
Layer-Nummer oder der Layer-Name angegeben werden (auch gemischt).
|
|
Gibt man den Parameter ALL an, werden alle Layer sichtbar. Mit dem
|
|
Parameter NONE kann man alle Layer ausblenden. Beispiel:
|
|
<pre>
|
|
DISPLAY NONE BOTTOM
|
|
</pre>
|
|
Nach diesem Befehl ist nur der Bottom-Layer sichtbar.
|
|
<p>
|
|
Wird der Parameter LAST angegeben, so werden die zuvor sichtbaren Layer dargestellt.
|
|
<p>
|
|
Bitte beachten Sie, dass von den Signal-Layern (1 bis 16) nur diejenigen
|
|
zur Verfügung stehen, die im Layer-Setup in den <a href=#133>Design Rules</a>
|
|
eingetragen sind.
|
|
<p>
|
|
Stellt man dem Layer-Namen oder der Layer-Nummer ein Minuszeichen
|
|
voran, wird er ausgeblendet. Beispiel:
|
|
<pre>
|
|
DISPLAY BOTTOM -TOP -3
|
|
</pre>
|
|
In diesem Fall wird Bottom eingeblendet, und Top sowie der Layer mit
|
|
der Nummer 3 werden ausgeblendet.
|
|
<p>
|
|
Manche Befehle (PAD, SMD, SIGNAL, ROUTE) aktivieren automatisch
|
|
bestimmte Layer.
|
|
<p>
|
|
Wird der DISPLAY-Befehl ohne Parameter aufgerufen, so erscheint ein
|
|
Dialog in dem alle Einstellungen vorgenommen werden können.
|
|
<h2>Nicht definierte Layer</h2>
|
|
Die Optionen '?' und '??' werden verwendet, zu kontollieren, was passiert,
|
|
wenn ein nicht definierter Layer über DISPLAY aufgerufen wird. Jeder nicht
|
|
definierte Layer, der einem '?' folgt, erzeugt eine Warnmeldung, die der Benutzer
|
|
entweder bestätigen kann oder mit Cancel den DISPLAY-Befehl abbrechen kann.
|
|
Nicht definierte Layer, die nach '??' folgen, werden kommentarlos ignoriert.
|
|
Diese Optionen sind besonders beim Schreiben von Script-Dateien nützlich, die
|
|
in der Lage sein sollen beliebige Dateien zu modifizieren, unabhängig davon welche
|
|
Layer in der Datei letztendlich definiert wurden.
|
|
<pre>
|
|
DISPLAY TOP BOTTOM ? MYLAYER1 MYLAYER2 ?? OTHER WHATEVER
|
|
</pre>
|
|
Im Beispiel oben müssen die Layer TOP und BOTTOM definiert sein. Ansonsten wird der
|
|
Befehl mit einer Fehlermeldung abgebrochen. Das Fehlen von MYLAYER1 und MYLAYER2 wird in einer
|
|
Warnung angezeigt. Die Aktion kann vom Benutzer abgebrochen werden. Die Layer OTHER und
|
|
WHATEVER werden angezeigt, wenn vorhanden, ansonsten werden sie einfach ignoriert.
|
|
<p>
|
|
Die Optionen '?' und '??' dürfen in einer Befehlssequenz beliebig oft verwendet werden.
|
|
<h2>Pads und Vias</h2>
|
|
Verwendet man Pads und Vias mit unterschiedlichen Formen in den einzelnen
|
|
Layern, werden alle Formen, die in den sichtbaren (über DISPLAY aktivierten)
|
|
Signal-Layern verwendet werden, übereinander dargestellt.
|
|
<p>
|
|
Wählt man für den Layer 17 (Pads) bzw. 18 (Vias) die Farbe 0 (das entspricht
|
|
der Hintergrundfarbe), werden Pads und Vias in der Farbe
|
|
und dem Füllmuster des jeweiligen Signal-Layers gezeichnet. Ist kein
|
|
Signal-Layer eingeblendet, werden auch keine Pads oder Vias dargestellt.
|
|
<p>
|
|
Wählt man für den Layer 17 (Pads) bzw. 18 (Vias) eine andere Farbe und es ist
|
|
kein Signal-Layer sichtbar, werden Pads und Vias in der Form des obersten
|
|
und untersten Signal-Layers dargestellt.
|
|
<p>
|
|
Das gilt auch für Ausdrucke mit PRINT.
|
|
<h2>Objekte selektieren</h2>
|
|
Um Objekte selektieren zu können (z. B. mit MOVE,
|
|
DELETE) muss der entsprechende Layer sichtbar sein. Elemente in
|
|
Platinen lassen sich nur selektieren, wenn der tOrigins-Layer (bzw.
|
|
bOrigins bei gespiegelten Elementen) sichtbar ist!
|
|
<p>
|
|
Vermeiden Sie die Layer-Namen ALL und NONE, sowie Namen, die mit einem
|
|
Minuszeichen beginnen.
|
|
<h2>Parameter-Aliase</h2>
|
|
Parameter-Aliase können dazu benutzt werden, bestimmte Parameter-Einstellungen des DISPLAY-Befehls
|
|
zu definieren, die später unter einem gegebenen Namen angesprochen werden können.
|
|
Die Aliase können auch benutzt werden indem Sie auf den DISPLAY-Button klicken
|
|
und die Maustaste gedrückt halten bis die Liste erscheint.
|
|
Ein Klick auf den Button mit der rechten Maustaste läßt die Liste ebenfalls erscheinen.
|
|
<p>
|
|
Die Syntax zur Bearbeitung dieser Aliase ist:
|
|
<dl>
|
|
<dt>
|
|
<tt>DISPLAY = <i>name</i> <i>parameter</i></tt>
|
|
<dd>
|
|
Definiert den Alias <i>name</i>, der in die angegebenen <i>parameter</i>
|
|
expandiert wird. Der <i>name</i> darf aus beliebig vielen Buchstaben, Ziffern
|
|
und Unterstrichen bestehen, und Groß-/Kleinschreibung spielt keine Rolle.
|
|
Er muss mit einem Buchstaben oder Unterstrich beginnen und darf keines der
|
|
Options-Schlüsselworte sein.
|
|
<dt>
|
|
<tt>DISPLAY = <i>name</i> @</tt>
|
|
<dd>
|
|
Definiert den Alias <i>name</i>, der in die aktuelle Parameter-Einstellung
|
|
des Befehls expandiert wird.
|
|
<dt>
|
|
<tt>DISPLAY = ?</tt>
|
|
<dd>
|
|
Erfragt vom Benutzer einen Namen zur Definition eines Aliases für
|
|
die aktuelle Parameter-Einstellung des Befehls.
|
|
<dt>
|
|
<tt>DISPLAY = <i>name</i></tt>
|
|
<dd>
|
|
Öffnet den DISPLAY-Dialog und erlaubt es dem Benutzer einen
|
|
Satz von Layern einzustellen, der als Alias unter dem angegebenen
|
|
Namen gespeichert wird.
|
|
<dt>
|
|
<tt>DISPLAY = <i>name</i>;</tt>
|
|
<dd>
|
|
Löscht den Alias mit dem angegebenen Namen.
|
|
<dt>
|
|
<tt>DISPLAY <i>name</i></tt>
|
|
<dd>
|
|
Expandiert den Alias mit dem angegebenen Namen und führt den DISPLAY-Befehl
|
|
mit dem resultierenden Satz von Parametern aus. Der <i>name</i> kann
|
|
abgekürzt werden und es dürfen andere Parameter vor und nach dem
|
|
Alias angegeben werden (auch andere Aliase). Beachten Sie bitte,
|
|
dass im Falle einer abgekürzten Eingabe Aliase Vorrang vor anderen Schlüsselwörtern
|
|
des Befehls haben.
|
|
</dl>
|
|
Beispiel:
|
|
<p>
|
|
<tt>DISPLAY = MyLayers None Top Bottom Pads Vias Unrouted</tt>
|
|
<p>
|
|
Definiert den Alias "MyLayers" der, wenn er wie in
|
|
<p>
|
|
<tt>DISPLAY myl</tt>
|
|
<p>
|
|
benutzt wird, genau die Layer Top, Bottom, Pads, Vias und Unrouted anzeigt
|
|
(ohne den "None"-Parameter würden die angegebenen Layer zusätzlich zu den
|
|
bereits sichbaren angezeigt).
|
|
Beachten Sie bitte die abgekürzte Verwendung des Aliases,
|
|
und dass die Groß-/Kleinschreibung keine Rolle spielt.
|
|
|
|
|
|
<a name=46>
|
|
<h1>DRC</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Design Rule Check (Platine prüfen)
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>DRC</tt><br>
|
|
<tt>DRC • • ;</tt><br>
|
|
<tt>DRC LOAD|SAVE filename;</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#133>Design Rules</a>,
|
|
<a href=#38>CLASS</a>,
|
|
<a href=#92>SET</a>,
|
|
<a href=#48>ERC</a>,
|
|
<a href=#49>ERRORS</a>
|
|
<p>
|
|
Der DRC-Befehl prüft das Layout gegenüber einem gültigen Satz von <a href=#133>Design Rules</a>.
|
|
<p>
|
|
Beachten Sie bitte, dass elektrisch nicht relevante Objekte (Wires in Packages, Rechtecke,
|
|
Kreise und Texte) untereinander nicht auf Mindestabstandsverletzungen ("Clearance")
|
|
geprüft werden.
|
|
<p>
|
|
Die gefundenen Fehler werden als Fehlerpolygone in den zugehörigen Layern dargestellt
|
|
und können mit dem <a href=#49>ERRORS</a>-Befehl bearbeitet werden.
|
|
<p>
|
|
Geben Sie den DRC-Befehl ohne weitere Parameter an, öffnet sich der Design-Rules-Dialog.
|
|
Von hier aus kann man die Design Rules einstellen und die Prüfung starten.
|
|
<p>
|
|
Wird der DRC-Befehl mit zwei Koordinatenpaaren angegeben (oder im DRC-Dialog der
|
|
Button Select angeklickt), prüft der DRC nur innerhalb des angegebenen Rechtecks.
|
|
Es werden nur die Fehler angezeigt, die innerhalb des Rechteck liegen.
|
|
<p>
|
|
Falls Sie DRC-Fehler erhalten, die auch nach einer entsprechenden
|
|
Änderung der <a href=#133>Design Rules</a> nicht verschwinden,
|
|
überprüfen Sie bitte die <a href=#38>Netzklasse</a> des beanstandeten
|
|
Objektes. Möglicherweise wird der Fehler wegen eines der Parameter dieser Klasse
|
|
gemeldet.
|
|
<p>
|
|
Um alle Fehlerpolygone zu löschen verwenden Sie
|
|
<pre>
|
|
ERRORS CLEAR
|
|
</pre>
|
|
<p>
|
|
Die Optionen <tt>LOAD</tt> und <tt>SAVE</tt> können dazu verwendet werden die
|
|
Design Rules aus der angegebenen Datei zu laden bzw. sie in diese zu speichern.
|
|
Falls <i>filename</i> nicht die Extension <tt>".dru"</tt> hat wird diese automatisch
|
|
angefügt.
|
|
<h2>SET-Befehle, die den DRC beeinflussen</h2>
|
|
Der SET-Befehl kann dazu verwendet werden, um das Verhalten des DRC-Befehls
|
|
zu verändern:
|
|
<pre>
|
|
SET DRC_FILL fill_name;
|
|
</pre>
|
|
Legt das für die DRC-Fehlerpolygone verwendete Füllmuster
|
|
fest. Default: LtSlash.
|
|
|
|
|
|
<a name=47>
|
|
<h1>EDIT</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Lade-Befehl.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>EDIT name</tt><br>
|
|
<tt>EDIT name.ext</tt><br>
|
|
<tt>EDIT .ext</tt><br>
|
|
<tt>EDIT .sX [ .sY ]</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#70>OPEN</a>,
|
|
<a href=#39>CLOSE</a>,
|
|
<a href=#34>BOARD</a>
|
|
<p>
|
|
Der EDIT-Befehl wird verwendet, um eine Platine oder einen Schaltplan
|
|
zu editieren bzw. neu anzulegen. Ausserdem dient der Befehl dazu,
|
|
Symbole, Devices und Packages zu laden, wenn man eine Bibliothek bearbeitet.
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>EDIT name.brd</tt> </td><td width=20><td>lädt eine Platine</td></tr>
|
|
<tr><td><tt>EDIT name.sch</tt> </td><td width=20><td>lädt einen Schaltplan</td></tr>
|
|
<tr><td><tt>EDIT name.pac</tt> </td><td width=20><td>lädt ein Package</td></tr>
|
|
<tr><td><tt>EDIT name.sym</tt> </td><td width=20><td>lädt ein Symbol</td></tr>
|
|
<tr><td><tt>EDIT name.dev</tt> </td><td width=20><td>lädt ein Device</td></tr>
|
|
<tr><td><tt>EDIT .s3</tt> </td><td width=20><td>lädt Seite 3 eines Schaltplans</td></tr>
|
|
<tr><td><tt>EDIT .s5 .s2 </tt> </td><td width=20><td>verschiebt Seite 5 vor Seite 2 und lädt sie (falls Seite 5 nicht existiert, wird eine neue Seite vor Seite 2 eingefügt)</td></tr>
|
|
<tr><td><tt>EDIT .s2 .s5 </tt> </td><td width=20><td>verschiebt Seite 2 vor Seite 5 und lädt sie (falls Seite 5 nicht existiert, wird Seite 2 zur letzten Seite)</td></tr>
|
|
</table>
|
|
<p>
|
|
Platzhalter in Namen sind erlaubt (z. B. edit *.brd).
|
|
<p>
|
|
Gibt man EDIT ohne weitere Parameter ein, können Sie die Datei oder
|
|
das Objekt mit Hilfe des sich öffnenden Menüs wählen.
|
|
<p>
|
|
Um von einem Schaltplan zu einer Platine mit dem gleichen Namen zu
|
|
wechseln, kann man den Befehl
|
|
<pre>
|
|
EDIT .brd
|
|
</pre>
|
|
verwenden. Umgekehrt kommt man von der Platine in den entsprechenden
|
|
Schaltplan mit
|
|
<pre>
|
|
EDIT .sch
|
|
</pre>
|
|
Eine andere Seite eines Schaltplans kann man mit
|
|
<pre>
|
|
EDIT .sX
|
|
</pre>
|
|
(X ist die Seitennummer) oder mit Hilfe der Combo-Box in der Action-Toolbar laden.
|
|
Falls die angegebene Seitennummer nicht existiert, wird eine neue Seite angelegt.
|
|
<p>
|
|
Sie können auch zwischen Schaltplanseiten wechseln indem Sie auf ein Icon in
|
|
der Vorschau für Schaltplanseiten klicken. Drag&drop in der Vorschau
|
|
erlaubt es, Seiten umzusortieren. Bitte beachten Sie, dass das Hinzufügen,
|
|
Löschen oder Umsortieren von Schaltplanseiten den Undo-Puffer löscht,
|
|
während das bloße Umschalten zwischen existierenden Seiten dies nicht tut.
|
|
<p>
|
|
Will man Symbole, Devices oder Packages editieren, dann ist zuerst
|
|
eine Bibliothek mit OPEN zu öffnen und dann der entsprechende
|
|
EDIT-Befehl zu geben.
|
|
<h2>Welches Verzeichnis?</h2>
|
|
Der EDIT-Befehl holt Dateien aus dem
|
|
<a href=#14>Projektverzeichnis</a>.
|
|
|
|
|
|
<a name=48>
|
|
<h1>ERC</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Electrical Rule Check (Prüfung auf elektrische Fehler).
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>ERC</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#46>DRC</a>,
|
|
<a href=#49>ERRORS</a>,
|
|
<a href=#342>Konsistenzprüfung</a>
|
|
<p>
|
|
Dieser Befehl prüft Schaltpläne auf elektrische Fehler. Die
|
|
Ergebnisse werden im <a href=#49>ERRORS</a> Dialog angezeigt.
|
|
<h2>Konsistenzprüfung</h2>
|
|
Der ERC-Befehl führt auch eine
|
|
<a href=#342>Konsistenzprüfung</a>
|
|
zwischen Schaltplan und zugehöriger Platine durch, sofern die
|
|
Board-Datei vor dem Start des ERC geladen worden ist. Als Ergebnis des
|
|
ERC wird die automatische
|
|
<a href=#341>Forward&Back-Annotation</a>
|
|
ein- oder ausgeschaltet, abhängig davon, ob die Dateien konsistent
|
|
sind oder nicht.
|
|
<p>
|
|
Bitte beachten Sie, dass der ERC Unterschiede zwischen impliziten Power-Pins und
|
|
Supply-Pins im Schaltplan und den tatsächlichen Signalverbindungen im Layout
|
|
feststellen kann. Solche Unstimmigkeiten können entstehen, wenn Sie die
|
|
Supply-Pins im Schaltplan modifizieren, nachdem Sie mit dem BOARD-Befehl eine
|
|
Platinen-Datei erzeugt haben. Wenn die Power-Pins nur "implizit" verbunden sind,
|
|
können diese Änderungen nicht immer in das Layout übertragen werden.<br>
|
|
Werden solche Fehler festgestellt, bleibt die <a href=#341>Forward&Back-Annotation</a>
|
|
weiterhin erhalten. Allerdings müssen die Supply-Pins überprüft werden!
|
|
|
|
|
|
<a name=49>
|
|
<h1>ERRORS</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Zeigt Fehler, die vom ERC bzw. DRC gefunden wurden.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>ERRORS</tt><br>
|
|
<tt>ERRORS CLEAR</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#48>ERC</a>,
|
|
<a href=#46>DRC</a>
|
|
<p>
|
|
Zur Auswertung der vom ERC bzw. DRC gefundenen Fehler dient der Befehl ERRORS.
|
|
Wird er aktiviert, dann öffnet sich ein Fenster, in dem
|
|
alle gefundenen Fehler aufgelistet sind.
|
|
Wurde für die geladene Zeichnung noch kein ERC bzw. DRC durchgeführt, so wird
|
|
zunächst die entsprechende Prüfung automatisch gestartet.
|
|
<p>
|
|
Die Liste im ERRORS-Dialog besteht aus bis zu vier Abschnitten, die jeweils
|
|
<i>Konsistenzfehler</i>, <i>Fehler</i>, <i>Warnungen</i> bzw. <i>Gebilligte</i>
|
|
Meldungen enthalten.
|
|
<p>
|
|
Selektiert man einen Eintrag aus der Liste,
|
|
wird die jeweilige Meldung durch eine Bezugslinie im Zeichenfenster angezeigt.
|
|
<p>
|
|
Ein Doppelklick auf einen Fehlereintrag zentriert die Zeichenfläche auf die
|
|
Position des Fehlers. Aktivieren Sie die Option "Zentriert", geschieht dies
|
|
automatisch.
|
|
<h2>Eine Meldung als behandelt markieren</h2>
|
|
Der <i>Behandelt</i> Button markiert eine Meldung als behandelt. Sie ist zwar noch
|
|
in der Liste enthalten, aber es erfolgt keine Fehleranzeige im Zeichenfenster mehr
|
|
(ausser wenn der Listeneintrag selektiert wird). Hierdurch können Meldungen nach
|
|
Behebung des jeweiligen Problems als "abgearbeitet" gekennzeichnet werden, ohne
|
|
die Prüfung erneut durchzuführen. Nach dem nächsten ERC bzw. DRC verschwindet die
|
|
Meldung entweder ganz, oder sie wird wieder als unbehandelt markiert, falls das
|
|
Problem immer noch besteht.
|
|
<h2>Eine Meldung billigen</h2>
|
|
Falls ein Fehler bzw. eine Warnung nicht behoben werden kann, aber offensichtlich
|
|
kein wirkliches Problem darstellt (was der Benutzer zu entscheiden hat), kann Sie
|
|
durch Drücken des Buttons <i>Billigen</i> in den Abschnitt <i>Gebilligt</i> verschoben
|
|
werden. Meldungen in diesem Abschnitt erzeugen keine Fehleranzeigen im Zeichenfenster
|
|
(ausser wenn der Listeneintrag selektiert wird) und sind implizit als "behandelt"
|
|
markiert. Falls nach dem nächsten ERC bzw. DRC die entsprechenden Probleme nicht mehr
|
|
bestehen, werden die zugehörigen Meldung in diesem Abschnitt gelöscht.
|
|
Alle gebilligten Meldungen werden in der Zeichnungsdatei mit abgespeichert um zu
|
|
dokumentieren, welche Meldungen vom Benutzer explizit als unproblematisch
|
|
eingestuft wurden. Beachten Sie bitte, dass Konsistenzfehler nicht gebilligt werden
|
|
können - diese müssen auf jeden Fall behoben werden um die
|
|
<a href=#341>Forward&Back-Annotation</a> zu aktivieren.
|
|
<h2>Die Liste löschen</h2>
|
|
Der <i>Alle löschen</i> Button löscht alle Einträge aus der Liste, bis auf die
|
|
gebilligten Meldungen. Hierdurch können die Fehleranzeigen im Zeichenfenster
|
|
abgestellt werden. Der nächste ERC bzw. DRC erzeugt die Meldungen wieder, sofern
|
|
sie dann noch zutreffen.
|
|
<p>
|
|
Die Liste kann auch durch Eingabe des Befehls
|
|
<pre>
|
|
ERRORS CLEAR
|
|
</pre>
|
|
gelöscht werden.
|
|
|
|
|
|
<a name=50>
|
|
<h1>EXPORT</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
ASCII- und Grafik-Dateien erzeugen.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>EXPORT SCRIPT filename;</tt><br>
|
|
<tt>EXPORT NETLIST filename;</tt><br>
|
|
<tt>EXPORT NETSCRIPT filename;</tt><br>
|
|
<tt>EXPORT PARTLIST filename;</tt><br>
|
|
<tt>EXPORT PINLIST filename;</tt><br>
|
|
<tt>EXPORT DIRECTORY filename;</tt><br>
|
|
<tt>EXPORT IMAGE filename|CLIPBOARD [MONOCHROME|WINDOW] resolution;</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#91>SCRIPT</a>,
|
|
<a href=#90>RUN</a>
|
|
<p>
|
|
Der EXPORT-Befehl dient dazu, EAGLE-Daten in Form von Textdateien
|
|
(ASCII-Dateien) zur Verfügung zu stellen oder Grafikdaten aus der
|
|
aktuellen Zeichnung zu erzeugen.
|
|
<p>
|
|
Standardmäßig wird die erzeugte Datei in das <b>Projekt</b>-Verzeichnis
|
|
geschrieben.
|
|
<p>
|
|
Der EXPORT-Befehl erzeugt folgende Textdateien:
|
|
<h2>SCRIPT</h2>
|
|
Die mit OPEN geöffnete Bibliothek
|
|
wird als Script-Datei ausgegeben. Damit besteht die Möglichkeit,
|
|
Bibliotheken mit einem Text-Editor zu bearbeiten und anschließend
|
|
wieder einzulesen.
|
|
<p>
|
|
Wenn mit EXPORT eine Bibliothek in eine Script-Datei verwandelt und
|
|
dieses anschließend wieder eingelesen wird, so sollte dafür
|
|
eine NEUE (leere!) Bibliothek geöffnet werden, da es sonst vorkommen
|
|
kann, dass Objekte mehrfach definiert werden! Der Vorgang des Script-Einlesens
|
|
kann u. U. erheblich beschleunigt werden, wenn vorher
|
|
<pre>
|
|
Set Undo_Log Off;
|
|
</pre>
|
|
eingegeben wird (nicht vergessen, es nachher wieder einzuschalten,
|
|
da sonst kein Undo möglich ist!).
|
|
<h2>NETLIST</h2>
|
|
Gibt eine Netzliste des geladenen Schaltplans oder der geladenen Platine
|
|
aus. Es werden nur Netze berücksichtigt, die mit Elementen verbunden
|
|
sind.
|
|
<h2>NETSCRIPT</h2>
|
|
Gibt die Netzliste des geladenen Schaltplans in Form einer Script-Datei
|
|
aus, das in eine Platine (mit bereits plazierten Elementen bzw. mit
|
|
durch <tt>DELETE SIGNALS</tt> gelöschten Signalen) eingelesen werden
|
|
kann.
|
|
Beachten Sie bitte, dass zum Einlesen des Scripts in die Platine kein
|
|
mit dieser Platine konsistenter Schaltplan geladen sein darf.
|
|
<h2>PARTLIST</h2>
|
|
Gibt eine Bauteile-Liste des Schaltplans oder der Platine aus. Es
|
|
werden nur Bauteile mit Pins/Pads berücksichtigt.
|
|
<h2>PINLIST</h2>
|
|
Gibt eine Liste mit den Pad- und Pin-Namen aller Bauteile aus, die zu
|
|
jedem Pin die Direction sowie den Namen des angeschlossenen Netzes enthält.
|
|
<h2>DIRECTORY</h2>
|
|
Gibt das Inhaltsverzeichnis der gerade geöffneten Bibliothek aus.
|
|
<h2>IMAGE</h2>
|
|
Bei der Ausgabe eines <i>IMAGE</i> wird eine Grafikdatei mit der
|
|
angegebenen Datei-Erweiterung erzeugt. Folgende Formate sind verfügbar:
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>.bmp</tt></td> <td width=20><td>Windows-Bitmap-Datei</td></tr>
|
|
<tr><td><tt>.png</tt></td> <td width=20><td>Portable-Network-Graphics-Datei</td></tr>
|
|
<tr><td><tt>.pbm</tt></td> <td width=20><td>Portable-Bitmap-Datei</td></tr>
|
|
<tr><td><tt>.pgm</tt></td> <td width=20><td>Portable-Grayscale-Bitmap-Datei</td></tr>
|
|
<tr><td><tt>.ppm</tt></td> <td width=20><td>Portable-Pixelmap-Datei</td></tr>
|
|
<tr><td><tt>.tif</tt></td> <td width=20><td>TIFF-Datei</td></tr>
|
|
<tr><td><tt>.xbm</tt></td> <td width=20><td>X-Bitmap-Datei</td></tr>
|
|
<tr><td><tt>.xpm</tt></td> <td width=20><td>X-Pixmap-Datei</td></tr>
|
|
</table>
|
|
<p>
|
|
Der <i>resolution</i>-Parameter definiert die Bildauflösung (in 'dpi').
|
|
<p>
|
|
Ist <i>filename</i> der besondere Name CLIPBOARD (egal ob groß- oder klein geschrieben),
|
|
wird das Bild in die Zwischenablage des Systems kopiert.
|
|
<p>
|
|
Das optionale Schlüsselwort <i>MONOCHROME</i> erzeugt ein schwarz/weißes Bild.
|
|
<p>
|
|
Das optionale Schlüsselwort <i>WINDOW</i> erzeugt ein Bild des momentan im
|
|
Editor-Fenster sichtbaren Ausschnitts. Ohne dieses Schlüsselwort enthält das
|
|
Bild die gesamte Zeichnung.
|
|
|
|
|
|
<a name=51>
|
|
<h1>FRAME</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Rahmen in eine Zeichnung einfügen.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>FRAME [ columns [ rows ] ] [ borders ] • •</tt>
|
|
<dt>
|
|
<b>Maustasten</b>
|
|
<dd>
|
|
<mb>Mittlere</mb> wählt den Layer.
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#60>LABEL</a>
|
|
<p>
|
|
Der FRAME-Befehl erzeugt einen Rahmen mit nummerierten Spalten und Zeilen.
|
|
Die beiden Punkte definieren zwei gegenüberliegende Ecken des Rahmens.
|
|
Mit der mittleren Maustaste können Sie den Layer wählen, in den der
|
|
Rahmen gezeichnet wird.
|
|
<p>
|
|
Der <tt>columns</tt>-Parameter definiert die Zahl der Spalten des Rahmens.
|
|
Es können bis zu 127 Spalten verwendet werden. Standardmäßig werden die
|
|
Spalten von links nach rechts durchnummeriert. Falls der Wert für <tt>columns</tt>
|
|
negativ ist, läuft die Nummerierung von rechts nach links.
|
|
<p>
|
|
Der <tt>rows</tt>-Parameter definiert die Zahl der Zeilen des Rahmens.
|
|
Es können bis zu 26 Zeilen verwendet werden. Die Zeilen werden von oben nach
|
|
unten mit Buchstaben bezeichnet, beginnend mit 'A'. Falls der Wert für <tt>rows</tt>
|
|
negativ ist, läuft die Bezeichnung von unten nach oben. Wird <tt>rows</tt>
|
|
angegeben, so muss vorher auch <tt>columns</tt> angegeben werden.
|
|
<p>
|
|
Wird der <tt>borders</tt>-Parameter angegeben, so legt dieser fest auf welchen
|
|
Seiten des Rahmens ein Rand mit Zahlen bzw. Buchstaben angezeigt wird. Gültige
|
|
Werte hierfür sind <tt>Left</tt>, <tt>Top</tt>, <tt>Right</tt> und <tt>Bottom</tt>.
|
|
Standardmäßig wir der Rand an allen vier Seiten des Rahmens angezeigt. Sobald eine
|
|
dieser Optionen angegeben wird, wird der Rand nur an den gewünschten Seiten
|
|
dargestellt. Die speziellen Werte <tt>None</tt> und <tt>All</tt> können benutzt
|
|
werden um an keiner bzw. allen Seiten einen Rand darzustellen.
|
|
<p>
|
|
Eine Zeichnung kann zwar mehrere Rahmen enthalten, für die Ermittlung der Positionen
|
|
von Bauteilen und Netzen wird aber immer nur der erste benutzt. Diese Positionen
|
|
können zum Beispiel in einem <a href=#138>User Language</a> Programm
|
|
verwendet werden um eine Liste aller Bauteile mit Ihren Positionen im jeweiligen
|
|
Rahmen auszugeben.
|
|
Sie werden auch benutzt zur automatischen Berechnung von Querverweisen
|
|
bei <a href=#60>Labels</a>.
|
|
<p>
|
|
Aufgrund der speziellen Bedeutung des Rahmens hat dieser keine eigene Rotation
|
|
und reagiert auch nicht auf den <a href=#88>ROTATE</a>-Befehl
|
|
<p>
|
|
Ein Rahmen kann direkt in eine Board- oder Schaltplanzeichnung eingefügt werden.
|
|
Normalerweise werden Sie aber eher ein spezielles Symbol bzw. Package erzeugen,
|
|
welches eventuell auch noch ein Schriftfeld enthält, und das Sie dann in allen
|
|
Ihren Zeichnungen verwenden können. Die mitgelieferte Bibliothek "frames" enthält
|
|
bereits einige solcher Zeichnungsrahmen.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
FRAME 10 5 TOP LEFT • •
|
|
</pre>
|
|
erzeugt einen Rahmen mit 10 Spalten (nummeriert von links nach rechts) und
|
|
5 Zeilen (markiert von oben nach unten mit 'A' bis 'E'), bei dem die Spalten-
|
|
und Zeilenmarkierungen nur am oberen und linken Rand dargestellt werden.
|
|
|
|
|
|
<a name=52>
|
|
<h1>GATESWAP</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Äquivalente Gates vertauschen.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>GATESWAP • •..;</tt><br>
|
|
<tt>GATESWAP gate_name gate_name..;</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#29>ADD</a>
|
|
<p>
|
|
Mit diesem Befehl kann man Gates in einem Schaltplan vertauschen.
|
|
Dabei müssen die beiden Gates identisch sein (dieselben Pins haben)
|
|
und in der Device-Definition denselben Swaplevel (größer
|
|
als 0) bekommen haben. Sind diese Bedingungen erfüllt, können
|
|
auch Gates aus unterschiedlichen Devices vertauscht werden.
|
|
<p>
|
|
Der als Parameter anzugebende Name ist der im Schaltplan sichtbare
|
|
Name (z. B. U1A für Gate A im Bauteil U1).
|
|
<p>
|
|
Wird ein Bauteil durch den GATESWAP-Befehl "unbenutzt", wird
|
|
es automatisch aus dem Schaltplan entfernt.
|
|
|
|
|
|
<a name=53>
|
|
<h1>GRID</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Rasterdarstellung und -einheit einstellen.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>GRID option..;</tt><br>
|
|
<tt>GRID;</tt>
|
|
<dt>
|
|
<b>Tastatur</b>
|
|
<dd>
|
|
<tt>F6: GRID;</tt> schaltet das Raster ein bzw. aus.
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#91>SCRIPT</a>
|
|
<p>
|
|
Mit dem GRID-Befehl definiert man, ob und wie das Raster auf dem
|
|
Bildschirm dargestellt wird. Ausserdem legt dieser Befehl die
|
|
verwendete Rastereinheit fest.
|
|
<pre>
|
|
GRID;
|
|
</pre>
|
|
schaltet das Raster ein bzw. aus.
|
|
<p>
|
|
Objekte lassen sich nur auf dem eingestellten Raster
|
|
plazieren. Für Platinen im Zollraster darf deshalb z. B. kein
|
|
mm-Raster verwendet werden.
|
|
<p>
|
|
Folgende options sind möglich:
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>GRID ON;</tt> </td><td width=20><td>Raster darstellen</td></tr>
|
|
<tr><td><tt>GRID OFF;</tt> </td><td width=20><td>Raster ausschalten</td></tr>
|
|
<tr><td><tt>GRID DOTS;</tt> </td><td width=20><td>Raster als Punkte darstellen</td></tr>
|
|
<tr><td><tt>GRID LINES;</tt> </td><td width=20><td>Raster als Linien darstellen</td></tr>
|
|
<tr><td><tt>GRID MIC;</tt> </td><td width=20><td>Rastereinheit ist Mikrometer</td></tr>
|
|
<tr><td><tt>GRID MM;</tt> </td><td width=20><td>Rastereinheit ist mm</td></tr>
|
|
<tr><td><tt>GRID MIL;</tt> </td><td width=20><td>Rastereinheit ist Mil (0.001 Inch)</td></tr>
|
|
<tr><td><tt>GRID INCH;</tt> </td><td width=20><td>Rastereinheit ist Inch (Zoll)</td></tr>
|
|
<tr><td><tt>GRID FINEST;</tt> </td><td width=20><td>Raster auf kleinstmöglichen Wert einstellen (1/10000 mm)</td></tr>
|
|
<tr><td><tt>GRID grid_size;</tt> </td><td width=20><td>Rasterabstand in der aktuellen Einheit</td></tr>
|
|
<tr><td><tt>GRID LAST;</tt> </td><td width=20><td>Setzt die Grid-Parameter auf die zuletzt</td></tr>
|
|
<tr><td> </td><td width=20><td>eingestellten Werte</td></tr>
|
|
<tr><td><tt>GRID DEFAULT;</tt> </td><td width=20><td>Einstellung auf Standardwerte</td></tr>
|
|
<tr><td><tt>GRID grid_size grid_multiple;</tt> </td><td width=20><td></td></tr>
|
|
<tr><td> </td><td width=20><td>grid_size = Rasterabstand</td></tr>
|
|
<tr><td> </td><td width=20><td>grid_multiple = Rasterfaktor</td></tr>
|
|
<tr><td><tt>GRID ALT ...;</tt> </td><td width=20><td>Definiert das alternative Grid</td></tr>
|
|
</table>
|
|
<h2>Beispiele</h2>
|
|
<pre>
|
|
Grid mm;
|
|
Set Diameter_Menu 1.0 1.27 2.54 5.08;
|
|
Grid Last;
|
|
</pre>
|
|
In diesem Fall kann man zur zuletzt eingestellten Grid-Definition
|
|
zurückkehren, ohne sie zu kennen.
|
|
<pre>
|
|
GRID mm 1 10;
|
|
</pre>
|
|
gibt an, dass ein Rasterabstand von 1 mm eingestellt und jede
|
|
zehnte Rasterlinie angezeigt werden soll.
|
|
<p>
|
|
Beim GRID-Befehl sind auch mehrere Parameter zulässig:
|
|
<pre>
|
|
GRID inch 0.05 mm;
|
|
</pre>
|
|
Der erste Zahlenwert im GRID-Befehl entspricht dem
|
|
Rasterabstand, der zweite (falls vorhanden) dem Rasterfaktor.
|
|
<p>
|
|
Hier wird das Raster zunächst auf 0.05 Zoll eingestellt, dann
|
|
wird die Koordinatenanzeige auf mm umgestellt.
|
|
Die Koordinaten werden in diesem Fall zwar in mm angezeigt,
|
|
trotzdem ist das Raster nach wie vor auf 1/20 Zoll eingestellt!
|
|
<pre>
|
|
GRID DEFAULT;
|
|
</pre>
|
|
Setzt das Raster auf den Standardwert für den aktuellen Zeichnungstyp.
|
|
<pre>
|
|
GRID mil 50 2 lines on alt mm 1 mil;
|
|
</pre>
|
|
Definiert ein 50 mil Raster das als Linien dargestellt wird (wobei nur jede zweite Linie sichtbar ist) und setzt das
|
|
alternative Raster auf eine Größe von 1 mm, angezeigt in mil.
|
|
<p>
|
|
Ein Druck auf die <tt>Alt</tt>-Taste schaltet auf das alternative Grid um.
|
|
Dies kann typischerweise ein feineres Raster als das normale sein, wodurch es
|
|
zum Beispiel schnell und einfach möglich ist etwas in einem dicht belegten Gebiet
|
|
fein zu positionieren, wofür das normal Raster zu grob wäre.
|
|
Das alternative Grid bleibt so lange aktiv, wie die <tt>Alt</tt>-Taste gedrückt
|
|
gehalten wird.
|
|
<h2>Parameter-Aliase</h2>
|
|
Parameter-Aliase können dazu benutzt werden, bestimmte Parameter-Einstellungen des GRID-Befehls
|
|
zu definieren, die später unter einem gegebenen Namen angesprochen werden können.
|
|
Die Aliase können auch benutzt werden indem Sie auf den GRID-Button klicken
|
|
und die Maustaste gedrückt halten bis die Liste erscheint.
|
|
Ein Klick auf den Button mit der rechten Maustaste läßt die Liste ebenfalls erscheinen.
|
|
<p>
|
|
Die Syntax zur Bearbeitung dieser Aliase ist:
|
|
<dl>
|
|
<dt>
|
|
<tt>GRID = <i>name</i> <i>parameter</i></tt>
|
|
<dd>
|
|
Definiert den Alias <i>name</i>, der in die angegebenen <i>parameter</i>
|
|
expandiert wird. Der <i>name</i> darf aus beliebig vielen Buchstaben, Ziffern
|
|
und Unterstrichen bestehen, und Groß-/Kleinschreibung spielt keine Rolle.
|
|
Er muss mit einem Buchstaben oder Unterstrich beginnen und darf keines der
|
|
Options-Schlüsselworte sein.
|
|
<dt>
|
|
<tt>GRID = <i>name</i> @</tt>
|
|
<dd>
|
|
Definiert den Alias <i>name</i>, der in die aktuelle Parameter-Einstellung
|
|
des Befehls expandiert wird.
|
|
<dt>
|
|
<tt>GRID = ?</tt>
|
|
<dd>
|
|
Erfragt vom Benutzer einen Namen zur Definition eines Aliases für
|
|
die aktuellen Grid-Parameter.
|
|
<dt>
|
|
<tt>GRID = <i>name</i></tt>
|
|
<dd>
|
|
Öffnet den GRID-Dialog und erlaubt es dem Benutzer einen
|
|
Satz von Parametern einzustellen, der als Alias unter dem angegebenen
|
|
Namen gespeichert wird.
|
|
<dt>
|
|
<tt>GRID = <i>name</i>;</tt>
|
|
<dd>
|
|
Löscht den Alias mit dem angegebenen Namen.
|
|
<dt>
|
|
<tt>GRID <i>name</i></tt>
|
|
<dd>
|
|
Expandiert den Alias mit dem angegebenen Namen und führt den GRID-Befehl
|
|
mit dem resultierenden Satz von Parametern aus. Der <i>name</i> kann
|
|
abgekürzt werden und es dürfen andere Parameter vor und nach dem
|
|
Alias angegeben werden (auch andere Aliase). Beachten Sie bitte,
|
|
dass im Falle einer abgekürzten Eingabe Aliase Vorrang vor anderen Schlüsselwörtern
|
|
des Befehls haben.
|
|
</dl>
|
|
Beispiel:
|
|
<p>
|
|
<tt>GRID = MyGrid inch 0.1 lines on</tt>
|
|
<p>
|
|
Definiert den Alias "MyGrid" der, wenn er wie in
|
|
<p>
|
|
<tt>GRID myg</tt>
|
|
<p>
|
|
benutzt wird, das aktuelle Grid auf die angegebenen Parameter einstellt.
|
|
Beachten Sie bitte die abgekürzte Verwendung des Aliases,
|
|
und dass die Groß-/Kleinschreibung keine Rolle spielt.
|
|
|
|
|
|
<a name=54>
|
|
<h1>GROUP</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Definieren einer Gruppe.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>GROUP •..</tt><br>
|
|
<tt>GROUP ALL</tt><br>
|
|
<tt>GROUP;</tt>
|
|
<dt>
|
|
<b>Maustasten</b>
|
|
<dd>
|
|
<mb>Linke&Ziehen</mb> definiert eine rechteckige Gruppe.<br>
|
|
<mb>Shift+Linke</mb> fügt die neue Gruppe zu einer bestehenden hinzu.<br>
|
|
<mb>Ctrl+Linke</mb> invertiert die Gruppenzugehörigkeit des selektierten Objekts.<br>
|
|
<mb>Ctrl+Shift+Linke</mb> invertiert die Gruppenzugehörigkeit des in der Hierarchie nächsthöheren Objekts.<br>
|
|
<mb>Rechte</mb> schließt das Gruppen-Polygon.
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#36>CHANGE</a>,
|
|
<a href=#42>CUT</a>,
|
|
<a href=#74>PASTE</a>,
|
|
<a href=#65>MIRROR</a>,
|
|
<a href=#43>DELETE</a>
|
|
<p>
|
|
Mit dem GROUP-Befehl definiert man eine Gruppe von Objekten,
|
|
auf die man anschließend bestimmte Befehle anwenden kann. Natürlich
|
|
kann auch eine ganze Zeichnung als Gruppe definiert werden.
|
|
<p>
|
|
Die Objekte selektiert man, indem man nach Aktivieren des
|
|
GROUP-Befehls mit der Maus ein Rechteck aufzieht oder ein Polygon zeichnet, das mit dem Betätigen
|
|
der rechten Maustaste geschlossen wird. In die Gruppe werden nur
|
|
Objekte aus den sichtbaren Layern übernommen.
|
|
<p>
|
|
Das Schlüsselwort <tt>ALL</tt> kann dazu benutzt werden eine Gruppe zu
|
|
definieren, die die gesamte Zeichnungsfläche einschließt.
|
|
<p>
|
|
Zur Gruppe gehören:
|
|
<ul>
|
|
<li>alle Objekte mit einem Aufhängepunkt, deren Aufhängepunkt innerhalb des Polygons liegt;
|
|
<li>alle Objekte mit zwei Aufhängepunkten, von denen mindestens ein Endpunkt innerhalb des Polygons liegt;
|
|
<li>alle Kreise, deren Mittelpunkt innerhalb des Polygons liegt;
|
|
<li>alle Rechtecke, von denen mindestens ein Eckpunkt innerhalb des Polygons liegt.
|
|
</ul>
|
|
<h2>Gruppe bewegen</h2>
|
|
Um eine Gruppe zu bewegen, verwendet man den MOVE-Befehl mit der
|
|
rechten Maustaste. Bewegt werden alle Objekte, die vorher
|
|
mit dem GROUP-Befehl selektiert worden sind. Wires, von denen nur ein
|
|
Eckpunkt innerhalb des Polygons liegt, werden an diesem Ende bewegt,
|
|
während das andere fest bleibt. "Hängt" die Gruppe am Mauszeiger, lässt sie
|
|
sich wiederum mit der rechten Maustaste rotieren.
|
|
<p>
|
|
Die Gruppendefinition bleibt wirksam, bis eine neue Zeichnung geladen
|
|
wird oder bis der Befehl
|
|
<pre>
|
|
GROUP;
|
|
</pre>
|
|
ausgeführt wird.
|
|
<h2>Gruppe erweitern</h2>
|
|
Wenn Sie bei einem beliebigen Mausklick zur Definition einer Gruppe die <tt>Shift</tt>-Taste
|
|
drücken, so wird die neu definierte Gruppe zur bereits vorhandenen hinzugefügt
|
|
(falls es bereits eine gibt).
|
|
<h2>Einzelne Objekte</h2>
|
|
Durch Anklicken eines einzelnen Objekts bei gedrückter <tt>Ctrl</tt>-Taste ist es
|
|
möglich, die Gruppenzugehörigkeit dieses Objekts zu invertieren. Wird dabei zusätzlich
|
|
auch noch die <tt>Shift</tt>-Taste gedrückt, so wird die Gruppenzugehörigkeit
|
|
des in der Hierarchie nächsthöheren Objekts invertiert. Klicken Sie beispielsweise
|
|
mit dem GROUP-Befehl bei gedrückter <tt>Ctrl</tt>- und <tt>Shift</tt>-Taste im
|
|
Schaltpan auf eine Netz-Linie, so wird die Gruppenzugehörigkeit des gesamten Segments
|
|
invertiert.
|
|
|
|
|
|
<a name=55>
|
|
<h1>HELP</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Hilfe-Seite anzeigen.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>HELP</tt><br>
|
|
<tt>HELP command</tt>
|
|
<dt>
|
|
<b>Tastatur</b>
|
|
<dd>
|
|
<tt>F1: HELP</tt> ruft die kontextsensitive Hilfe-Funktion auf.
|
|
</dl>
|
|
Dieser Befehl ruft ein Hilfe-Fenster mit Hinweisen zum Programm auf,
|
|
die vom momentanen Status abhängig sind (kontextsensitiv).
|
|
<p>
|
|
Wird im HELP-Befehl ein Befehlsname (<tt>command</tt>) angegeben, dann erhält
|
|
man die Beschreibung dieses Befehls.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
HELP GRID;
|
|
</pre>
|
|
Es erscheint die Beschreibung des GRID-Befehls.
|
|
|
|
|
|
<a name=56>
|
|
<h1>HOLE</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Bohrloch in Platine oder Package einfügen.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>HOLE drill •..</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#104>VIA</a>,
|
|
<a href=#73>PAD</a>,
|
|
<a href=#36>CHANGE</a>
|
|
<p>
|
|
Mit diesem Befehl definiert man Bohrungen ohne Durchkontaktierung
|
|
in Platinen oder Packages. Der Parameter drill gibt den Bohrdurchmesser
|
|
in der aktuellen Einheit an. Er darf maximal 0.51602 Zoll (ca. 13.1
|
|
mm) betragen.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
HOLE 0.20 •
|
|
</pre>
|
|
Falls die eingestellte Maßeinheit "Inch" ist, hat das
|
|
Hole einen Durchmesser von 0.20 Zoll.
|
|
<p>
|
|
Der eingegebene Bohrdurchmesser (gilt auch für Pads und Vias)
|
|
bleibt für nachfolgende Operationen erhalten. Er kann mit dem
|
|
Befehl
|
|
<pre>
|
|
CHANGE DRILL value •
|
|
</pre>
|
|
verändert werden.
|
|
<p>
|
|
Ein Hole kann nur selektiert werden, wenn der Holes-Layer
|
|
eingeblendet ist (DISPLAY).
|
|
<p>
|
|
Eine Bohrung (Hole) erzeugt das zugehörige Bohrsymbol im Layer Holes
|
|
und einen Kreis mit dem entsprechenden Durchmesser im Layer Dimension.
|
|
Die Zuordnung von Symbolen zu bestimmten Bohrdurchmessern kann im
|
|
"Optionen/Einstellungen/Bohrsymbole" Dialog geändert werden. Der Kreis im Dimension-Layer ist
|
|
besonders für den Autorouter wichtig, der den eingestellten
|
|
Mindestabstand zwischen Vias/Wires und Dimension-Linien damit auch zum
|
|
Bohrloch einhält.
|
|
<p>
|
|
In Versorgungs-Layern erzeugen Holes Annulus-Symbole.
|
|
<p>
|
|
In den Layern tStop und bStop erzeugen Holes die Lötstopmaske, deren
|
|
Durchmesser sich aus den <a href=#133>Design Rules</a> ergibt.
|
|
|
|
|
|
<a name=57>
|
|
<h1>INFO</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Eigenschaften von Objekten anzeigen und verändern.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>INFO •..</tt><br>
|
|
<tt>INFO name ..</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#36>CHANGE</a>,
|
|
<a href=#93>SHOW</a>
|
|
<p>
|
|
Der INFO-Befehl gibt zu einem Objekt umfassende Informationen, z.B. Wire-Breite, Layer und so weiter.
|
|
In diesem Dialog können die Objekt-Eigenschaften auch verändert werden.
|
|
<p>
|
|
Bauteile, Pads, Smds, Pins und Gatter lassen sich
|
|
auch mit ihrem Namen selektieren. Das ist vor allem dann nützlich,
|
|
wenn sich das Objekt ausserhalb des gerade dargestellten Bildausschnitts
|
|
befindet. Beim Selektieren eines aus mehreren Gattern bestehenden Bauteils
|
|
im Schaltplan muss der volle, aus dem Bauteil- und dem jeweiligen Gatternamen
|
|
bestehende Name angegeben werden.
|
|
<p>
|
|
Attribute von Bauteilen können dadurch selektiert werden, dass die Kombination
|
|
aus Bauteilname und Attributname angegeben wird, wie etwa <tt>R5>VALUE</tt>.
|
|
|
|
|
|
<a name=58>
|
|
<h1>INVOKE</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Bestimmte Gates von Bauteilen holen.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>INVOKE • orientation •</tt><br>
|
|
<tt>INVOKE Part_Name Gate_Name orientation •</tt>
|
|
<dt>
|
|
<b>Maustasten</b>
|
|
<dd>
|
|
<mb>Mittlere</mb> spiegelt das Gate.<br>
|
|
<mb>Rechte</mb> dreht das Gate.<br>
|
|
<mb>Shift+Rechte</mb> kehrt die Richtung der Drehung um.
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#41>COPY</a>,
|
|
<a href=#29>ADD</a>
|
|
<p>
|
|
Addlevel und Orientation siehe ADD-Befehl.
|
|
<p>
|
|
Will man gezielt ein bestimmtes Gate eines Bauelements in den Schaltplan
|
|
holen (z.B. ein Power-Gate mit Addlevel Request), dann
|
|
benutzt man den INVOKE-Befehl.
|
|
<p>
|
|
Ein Gate kann man aktivieren, indem man
|
|
<ul>
|
|
<li>den Namen eines Bauelements angibt (etwa INVOKE IC5) und das gewünschte Gate aus einem Popup-Menü auswählt,
|
|
<li>den Elementnamen und den Gate-Namen angibt (etwa INVOKE IC5 POWER),
|
|
<li>das vorhandene Gate mit der Maus anklickt und das gewünschte Gate aus einem Popup-Menü auswählt.
|
|
</ul>
|
|
Mit dem abschließenden Mausklick positioniert man das neue Gate.
|
|
<p>
|
|
Wird im Dialog ein bereits aktiviertes Gate selektiert, so wechselt der Default-Button
|
|
zu "Anzeigen" und ein Klick darauf zoomt das Editor-Fenster auf das selektierte Gate,
|
|
wobei wenn nötig auch auf die entsprechende Seite gewechselt wird.
|
|
<h2>Gates auf verschiedenen Seiten</h2>
|
|
Soll ein Gate aus einem Bauelement geholt werden, das sich auf einer
|
|
anderen Seite des Schaltplans befindet, ist als Parameter der Name
|
|
des Bauelements anzugeben. In diesem Fall zeigt die rechte Spalte
|
|
des Popup-Menüs, auf welcher Seite sich die verwendeten Gates
|
|
befinden. Ein Gate auf der Seite, die gerade in Bearbeitung ist, wird
|
|
durch ein Sternchen in der rechten Spalte des Popup-Menüs gekennzeichnet.
|
|
|
|
|
|
<a name=59>
|
|
<h1>JUNCTION</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Markierungspunkt für zusammengehörige Netze setzen.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>JUNCTION •..</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#69>NET</a>
|
|
<p>
|
|
Löschen von Junctions, siehe DELETE-Befehl.
|
|
<p>
|
|
Mit diesem Befehl lassen sich die Kreuzungspunkte zusammengehöriger
|
|
Netze mit einem Punkt markieren. Ein Junction-Punkt lässt sich
|
|
nur auf einem Netz plazieren. Wird ein Junction-Punkt an einer Stelle
|
|
gesetzt, an der sich unterschiedliche Netze kreuzen, dann wird der
|
|
Benutzer gefragt, ob er die Netze verbinden will.
|
|
<p>
|
|
Wird eine Netzlinie auf einem Punkt abgesetzt auf dem schon mindestens zwei
|
|
weitere Netzlinien und/oder Pins liegen, wird automatisch ein Verbindungspunkt
|
|
(Junction) gesetzt. Diese Funktion kann über "<tt>SET AUTO_JUNCTION OFF;</tt>" oder
|
|
durch Deselektieren des Punkts "Junctions automatisch setzen" im Menü "Optionen/Einstellungen/Verschiedenes" abgeschaltet
|
|
werden.
|
|
<p>
|
|
Auf dem Bildschirm werden Junctions immer mit mindestens fünf
|
|
Pixel Durchmesser dargestellt, damit sie auch in kleinen Zoom-Stufen
|
|
noch sichtbar sind.
|
|
|
|
|
|
<a name=60>
|
|
<h1>LABEL</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Busse und Netze beschriften.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>LABEL [XREF] [orientation] • •..</tt>
|
|
<dt>
|
|
<b>Maustasten</b>
|
|
<dd>
|
|
<mb>Mittlere</mb> wählt den Layer.<br>
|
|
<mb>Rechte</mb> dreht das Label.<br>
|
|
<mb>Shift+Rechte</mb> kehrt die Richtung der Drehung um.
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#68>NAME</a>,
|
|
<a href=#35>BUS</a>
|
|
<p>
|
|
Mit diesem Befehl kann man den Namen eines Busses oder Netzes im Schaltplan an eine beliebige Stelle plazieren. Der erste Mausklick sorgt dafür,
|
|
dass der Name des selektierten Busses oder Netzes "am Mauszeiger
|
|
hängenbleibt". Der Text kann dann mit der rechten Maustaste
|
|
rotiert werden. Mit der mittleren Maustaste wählt man den Ziel-Layer
|
|
für den Label-Text aus. Der zweite Mausklick mit der linken Maustaste
|
|
plaziert den Text an eine beliebige Stelle.
|
|
<p>
|
|
Als Option kann die Schreibrichtung (orientation)
|
|
auch textuell angegeben werden. Das ist vor allem für Script-Dateien
|
|
sinnvoll. Die entsprechenden Schlüsselwörter sind im <a href=#29>ADD</a>-Befehl
|
|
aufgeführt (R0, R90 usw.).
|
|
<p>
|
|
Es können beliebig viele Labels je Bus/Signal plaziert werden.
|
|
<p>
|
|
Label-Texte lassen sich nicht mit CHANGE TEXT ändern.
|
|
<p>
|
|
Labels werden vom Programm wie Texte behandelt, aber ihr "Wert"
|
|
entspricht immer dem Namen des zugehörigen Busses oder Netzes.
|
|
Ändert man den Namen eines Busses/Netzes mit dem NAME-Befehl,
|
|
dann ändern sich automatisch alle zugehörigen Labels.
|
|
<p>
|
|
Selektiert man beim SHOW-Befehl einen Bus, ein Netz oder ein Label,
|
|
dann werden alle zugehörigen Busse, Netze bzw. Labels hell dargestellt.
|
|
<h2>Querverweis-Labels</h2>
|
|
Wird das optionale Schlüsselwort <tt>XREF</tt> angegeben, so wird das Label
|
|
ein "Querverweis-Label". Querverweis-Labels können in Schaltplänen mit
|
|
mehreren Seiten benutzt werden, um anzuzeigen welches die nächste Seite ist,
|
|
auf der ein bestimmtes Netz vorkommt (bitte beachten Sie, dass dies nur für
|
|
Netze gilt, nicht für Busse!).
|
|
Das <tt>XREF</tt>-Schlüsselwort ist hauptsächlich für die Verwendung in Scripts
|
|
gedacht. Normalerweise richtet sich diese Einstellung danach, was vorher mit
|
|
<a href=#36>CHANGE XREF</a> bzw. durch Anklicken der Xref-Schaltfläche
|
|
in der Parameter-Toolbar gewählt wurde.
|
|
<p>
|
|
Das Format, in welchem ein Querverweis-Label angezeigt wird, kann über die
|
|
"Format für Querverweis-Labels" Zeichenfolge im Dialog "Optionen/Einstellungen/Verschiedenes"
|
|
oder über den <a href=#92>SET</a> Befehl festgelegt werden.
|
|
Folgende Platzhalter sind definiert und können in beliebiger Reihenfolge verwendet werden:
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>%F</tt></td> <td width=20><td>aktiviert das Zeichnen eines Rahmens um das Label</td></tr>
|
|
<tr><td><tt>%N</tt></td> <td width=20><td>der Name des Netzes</td></tr>
|
|
<tr><td><tt>%S</tt></td> <td width=20><td>die nächste Seitennummer</td></tr>
|
|
<tr><td><tt>%C</tt></td> <td width=20><td>die Spalte auf der nächsten Seite</td></tr>
|
|
<tr><td><tt>%R</tt></td> <td width=20><td>die Zeile auf der nächsten Seite</td></tr>
|
|
</table>
|
|
<p>
|
|
Das Standard-Format ist <tt>"%F%N/%S.%C%R"</tt>. Neben den definierten Platzhaltern
|
|
können Sie auch beliebige andere ASCII-Zeichen verwenden.
|
|
<p>
|
|
Die Werte für Spalte und Zeile sind nur verfügbar, wenn auf der nächsten Seite,
|
|
auf der das Netz vorkommt, ein <a href=#51>Zeichnungsrahmen</a>
|
|
platziert wurde. Wird <tt>%C</tt> oder <tt>%R</tt> benutzt und es befindet sich
|
|
kein Rahmen auf der Seite, zeigen sie ein Fragezeichen (<tt>'?'</tt>) an.
|
|
<p>
|
|
Bei der Ermittlung der Spalte und Zeile eines Netzes auf einer Schaltplanseite
|
|
wird zunächst die Spalte und dann die Zeile innerhalb dieser Spalte betrachtet.
|
|
Hierbei haben XREF-Labels Vorrang vor normalen Labels, und diese wiederum Vorrang
|
|
vor Netz-Wires.
|
|
Für höhere Seitennummern werden die Rahmen-Koordinaten des am weitesten links oben
|
|
liegenden Feldes genommen, während für niedrigere Nummern die des am weitesten
|
|
rechts unten liegenden Feldes genommen werden.
|
|
<p>
|
|
Die Orientierung eines Querverweis-Labels bestimmt ob es auf eine "höhere" oder
|
|
"niedrigere" Seitennummer verweist. Labels mit einer Orientierung von R0 oder R270
|
|
zeigen zum rechten bzw. unteren Rand der Zeichnung und beziehen sich daher auf
|
|
eine höhere Seitennummer. Entsprechend verweisen Labels mit einer Orientierung
|
|
von R90 oder R180 auf eine niedrigere Seitennummer. Hat ein Label eine Orientierung
|
|
von R0 oder R270, aber das Netz, an dem es hängt, kommt auf keiner höheren Seite
|
|
vor, so wird stattdessen ein Verweis auf die nächst niedrigere Seite angezeigt
|
|
(entsprechendes gilt für R90 und R180).
|
|
Kommt das Netz ausschließlich auf der aktuellen Seite vor, so wird keinerlei
|
|
Querverweis angezeigt, sondern nur der Netzname (mit Rahmen, falls das Format
|
|
den <tt>%F</tt> Platzhalter enthält).
|
|
<p>
|
|
Ein Querverweis-Label, welches auf das Ende eines Netz-Wires platziert wird,
|
|
verbindet sich mit dem Wire, so dass sich der Wire mit dem Label mitbewegt
|
|
und umgekehrt.
|
|
<p>
|
|
Das Format für Querverweis-Labels wird in der Schaltplan-Zeichnung gespeichert.
|
|
<p>
|
|
Ein Querverweis-Label kann entweder mit dem <a href=#36>CHANGE</a>-Befehl
|
|
oder über seinen <i>Eigenschaften</i>-Dialog in ein normales Label verwandelt werden.
|
|
<h2>Layer auswählen</h2>
|
|
Im Gegensatz zu anderen Befehlen (wie etwa WIRE) merkt sich der LABEL-Befehl
|
|
den zuletzt verwendeten Layer selbst. Das hat den Vorteil, dass Labels immer
|
|
im richtigen Layer landen, egal welche Layer andere Befehle verwenden. Der
|
|
Nachteil ist, dass die übliche Vorgehensweise, den Layer in einem Script auszuwählen,
|
|
wie etwa
|
|
<pre>
|
|
LAYER <i>Layer</i>;
|
|
WIRE (1 2) (3 4);
|
|
</pre>
|
|
hier nicht funktioniert. Der Layer muss gewählt werden, wenn der LABEL-Befehl
|
|
bereits aktiv ist. Dies kann folgendermaßen geschehen:
|
|
<pre>
|
|
LABEL <i>Parameter</i>
|
|
LAYER <i>Layer</i>
|
|
<i>weitere Parameter</i>;
|
|
</pre>
|
|
Beachten Sie, dass die LABEL-Zeile <b>nicht</b> mit einem <tt>';'</tt>
|
|
abgeschlossen ist, und dass der LAYER-Befehl in einer neuen Zeile beginnt.<br>
|
|
Die Befehle
|
|
<pre>
|
|
LABEL
|
|
LAYER <i>Layer</i>;
|
|
</pre>
|
|
setzen den Layer für nachfolgende LABEL-Befehle.
|
|
|
|
|
|
<a name=61>
|
|
<h1>LAYER</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Wechseln und Definieren von Layern.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>LAYER layer_number</tt><br>
|
|
<tt>LAYER layer_name</tt><br>
|
|
<tt>LAYER layer_number layer_name</tt><br>
|
|
<tt>LAYER [??] -layer_number</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#45>DISPLAY</a>
|
|
<h2>Zeichenebene auswählen</h2>
|
|
Der LAYER-Befehl mit einem Parameter dient dazu, den (vorhandenen)
|
|
Layer auszuwählen, in den gezeichnet werden soll. Wird der Befehl
|
|
aus dem Menü ausgewählt, öffnet sich ein Popup-Menü,
|
|
in dem man den gewünschten Layer selektieren kann. Bei Eingabe
|
|
über die Tastatur ist als Parameter die Layer-Nummer oder der
|
|
Layer-Name (wie er im Popup-Menü erscheint) zulässig.
|
|
<p>
|
|
Der ROUTE-Befehl ändert den aktiven Layer automatisch.
|
|
<p>
|
|
Bestimmte Layer stehen nicht in allen Betriebsarten zur Verfügung,
|
|
da sie nicht überall einen Sinn haben.
|
|
<p>
|
|
Bitte beachten Sie, dass von den Signal-Layern (1 bis 16) nur diejenigen
|
|
zur Verfügung stehen, die im Layer-Setup in den <a href=#133>Design Rules</a>
|
|
eingetragen sind.
|
|
<h2>Layer definieren</h2>
|
|
Der LAYER-Befehl mit zwei Parametern dient dazu, einen neuen Layer
|
|
zu definieren oder einen vorhandenen umzubenennen.
|
|
Die Eingabe von z.B.:
|
|
<pre>
|
|
LAYER 101 BEISPIEL;
|
|
</pre>
|
|
erzeugt einen neuen Layer mit der Nummer 101 und dem Namen BEISPIEL.
|
|
<p>
|
|
Werden in einer Zeichnung Bibliothekselemente plaziert (mit ADD oder
|
|
REPLACE), die zusätzliche Layer enthalten, dann werden diese Layer
|
|
automatisch in der Zeichnung angelegt.
|
|
<p>
|
|
Die vordefinierten Layer haben spezielle Bedeutung. Man kann zwar
|
|
ihren Namen ändern, aber ihre besondere Funktion bleibt aufgrund
|
|
ihrer Nummer erhalten.
|
|
<p>
|
|
Wenn Sie eigene Layer definieren, sollten Sie nur die
|
|
Layer-Nummern ab 100 verwenden. Bei kleineren Nummern kann es sein,
|
|
dass Sie in späteren EAGLE-Versionen spezielle Bedeutung bekommen.
|
|
<h2>Layer löschen</h2>
|
|
Der LAYER-Befehl mit dem der Layer-Nummer vorangestellten Minuszeichen
|
|
löscht den Layer mit dieser Nummer, z. B.:
|
|
<pre>
|
|
LAYER -103;
|
|
</pre>
|
|
löscht den Layer mit der Nummer 103. Voraussetzung ist, dass
|
|
der Layer leer ist. Ist das nicht der Fall, wird die Fehlermeldung
|
|
<p>
|
|
"layer is not empty: #"
|
|
<p>
|
|
ausgegeben, wobei # die Layer-Nummer repräsentiert.
|
|
Falls Sie jegliche Fehlermeldungen beim Löschen eines Layers
|
|
vermeiden wollen, so können Sie die Option '??' angeben. Das kann
|
|
in Scripts nützlich sein, die bestimmte Layer zu löschen versuchen,
|
|
wo es aber keinen Fehler darstellt wenn ein Layer nicht leer oder
|
|
überhaupt nicht vorhanden ist.
|
|
<p>
|
|
Die vordefinierten Layer lassen sich nicht löschen.
|
|
<h2>Versorgungs-Layer</h2>
|
|
Die Layer 2...15 werden als Versorgungs-Layer (<i>supply layer</i>) betrachtet falls ihr Name
|
|
mit dem <tt>'$'</tt>-Zeichen beginnt und es ein Signal mit dem gleichen Namen (ohne vorangestelltes
|
|
<tt>'$'</tt>) gibt.
|
|
<p>
|
|
Alle zu diesem Signal gehörenden Pads und Vias werden vom <a href=#81>RATSNEST</a>-Befehl
|
|
und dem <a href=#131>Autorouter</a> implizit als verbunden angenommen.
|
|
<p>
|
|
Versorgungs-Layer werden "invertiert" betrachtet, das heisst alle auf einem solchen Layer
|
|
sichtbaren Objekte resultieren in "kupferfreien" Zonen auf der Platine. Das Programm generiert
|
|
automatisch Thermal- und Annulus-Symbole um die Pads und Vias an diese Layer anzuschließen
|
|
bzw. sie davon zu isolieren.
|
|
<p>
|
|
Sie sollten keine zusätzlichen Objekte in einen Versorgungs-Layer zeichnen, ausser zum Beispiel
|
|
Wires entlang der Platinenumrisse, wodurch verhindert wird, dass das Kupfer bis zu den Kanten
|
|
der fertigen Platine reicht (was zu Kurzschlüssen durch metallene Gehäuse oder Befestigungsschrauben
|
|
führen könnte).
|
|
Beachten Sie bitte, dass <b>keine Prüfungen stattfinden, ob ein Versorgungs-Layer auch wirklich alle
|
|
Pads und Vias verbindet</b>.
|
|
Falls zum Beispiel ein vom Benutzer gezeichnetes Objekt ein Pad isoliert, das an diesen
|
|
Versorgungs-Layer angeschlossen werden sollte, wird nicht automatisch eine Luftlinie für diese
|
|
(fehlende) Verbindung erzeugt. Das gleiche gilt wenn mehrere Annulus-Symbole einen "Ring" um ein
|
|
Thermal-Symbol bilden (und dadurch das Pad von seinem Signal isolieren).
|
|
<b>Ebenso ist zu beachten, dass sich die Abmessungen der Annulus-Symbole in einem Supply-Layer
|
|
ausschließlich nach dem in den <a href=#133>Design Rules</a> unter
|
|
"Supply" angegebenen Wert für "Annulus" richten, und dass hier weder die unter
|
|
"Clearance" noch die in den <a href=#38>Netzklassen</a> angegebenen Mindestabstände
|
|
eingehen.</b>
|
|
<p>
|
|
Eine sicherere und flexiblere Methode um Versorgungs-Layer zu realisieren bietet der
|
|
<a href=#77>POLYGON</a>-Befehl.
|
|
<h2>Vordefinierte EAGLE-Layer, nach Layer-Nummern geordnet</h2>
|
|
<h3>Layout</h3>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td>1 Top </td><td width=20><td>Leiterbahnen oben</td></tr>
|
|
<tr><td>2 Route2 </td><td width=20><td>Innenlage (Signal- oder Versorgungs-Layer)</td></tr>
|
|
<tr><td>3 Route3 </td><td width=20><td>Innenlage (Signal- oder Versorgungs-Layer)</td></tr>
|
|
<tr><td>4 Route4 </td><td width=20><td>Innenlage (Signal- oder Versorgungs-Layer)</td></tr>
|
|
<tr><td>5 Route5 </td><td width=20><td>Innenlage (Signal- oder Versorgungs-Layer)</td></tr>
|
|
<tr><td>6 Route6 </td><td width=20><td>Innenlage (Signal- oder Versorgungs-Layer)</td></tr>
|
|
<tr><td>7 Route7 </td><td width=20><td>Innenlage (Signal- oder Versorgungs-Layer)</td></tr>
|
|
<tr><td>8 Route8 </td><td width=20><td>Innenlage (Signal- oder Versorgungs-Layer)</td></tr>
|
|
<tr><td>9 Route9 </td><td width=20><td>Innenlage (Signal- oder Versorgungs-Layer)</td></tr>
|
|
<tr><td>10 Route10 </td><td width=20><td>Innenlage (Signal- oder Versorgungs-Layer)</td></tr>
|
|
<tr><td>11 Route11 </td><td width=20><td>Innenlage (Signal- oder Versorgungs-Layer)</td></tr>
|
|
<tr><td>12 Route12 </td><td width=20><td>Innenlage (Signal- oder Versorgungs-Layer)</td></tr>
|
|
<tr><td>13 Route13 </td><td width=20><td>Innenlage (Signal- oder Versorgungs-Layer)</td></tr>
|
|
<tr><td>14 Route14 </td><td width=20><td>Innenlage (Signal- oder Versorgungs-Layer)</td></tr>
|
|
<tr><td>15 Route15 </td><td width=20><td>Innenlage (Signal- oder Versorgungs-Layer)</td></tr>
|
|
<tr><td>16 Bottom </td><td width=20><td>Leiterbahnen unten</td></tr>
|
|
<tr><td>17 Pads </td><td width=20><td>Pads (bedrahtete Bauteile)</td></tr>
|
|
<tr><td>18 Vias </td><td width=20><td>Vias (durchgehend)</td></tr>
|
|
<tr><td>19 Unrouted </td><td width=20><td>Luftlinien</td></tr>
|
|
<tr><td>20 Dimension </td><td width=20><td>Platinen-Umrisse (und Kreise für Holes)</td></tr>
|
|
<tr><td>21 tPlace </td><td width=20><td>Bestückungsdruck oben</td></tr>
|
|
<tr><td>22 bPlace </td><td width=20><td>Bestückungsdruck unten</td></tr>
|
|
<tr><td>23 tOrigins </td><td width=20><td>Aufhängepunkte oben (Kreuz automatisch generiert)</td></tr>
|
|
<tr><td>24 bOrigins </td><td width=20><td>Aufhängepunkte unten (Kreuz automatisch generiert)</td></tr>
|
|
<tr><td>25 tNames </td><td width=20><td>Servicedruck oben (Bauteile-Namen, NAME)</td></tr>
|
|
<tr><td>26 bNames </td><td width=20><td>Servicedruck unten (Bauteile-Namen, NAME)</td></tr>
|
|
<tr><td>27 tValues </td><td width=20><td>Bauteile-Werte oben (VALUE)</td></tr>
|
|
<tr><td>28 bValues </td><td width=20><td>Bauteile-Werte unten (VALUE)</td></tr>
|
|
<tr><td>29 tStop </td><td width=20><td>Lötstopmaske oben (automatisch generiert)</td></tr>
|
|
<tr><td>30 bStop </td><td width=20><td>Lötstopmaske unten (automatisch generiert)</td></tr>
|
|
<tr><td>31 tCream </td><td width=20><td>Lotpaste oben</td></tr>
|
|
<tr><td>32 bCream </td><td width=20><td>Lotpaste unten</td></tr>
|
|
<tr><td>33 tFinish </td><td width=20><td>Veredelung oben</td></tr>
|
|
<tr><td>34 bFinish </td><td width=20><td>Veredelung unten</td></tr>
|
|
<tr><td>35 tGlue </td><td width=20><td>Klebemaske oben</td></tr>
|
|
<tr><td>36 bGlue </td><td width=20><td>Klebemaske unten</td></tr>
|
|
<tr><td>37 tTest </td><td width=20><td>Test- und Abgleichinformationen oben</td></tr>
|
|
<tr><td>38 bTest </td><td width=20><td>Test- und Abgleichinformationen unten</td></tr>
|
|
<tr><td>39 tKeepout </td><td width=20><td>Sperrflächen für Bauteile oben</td></tr>
|
|
<tr><td>40 bKeepout </td><td width=20><td>Sperrflächen für Bauteile unten</td></tr>
|
|
<tr><td>41 tRestrict </td><td width=20><td>Sperrflächen für Leiterbahnen oben</td></tr>
|
|
<tr><td>42 bRestrict </td><td width=20><td>Sperrflächen für Leiterbahnen unten</td></tr>
|
|
<tr><td>43 vRestrict </td><td width=20><td>Sperrflächen für Vias</td></tr>
|
|
<tr><td>44 Drills </td><td width=20><td>Bohrungen, durchkontaktiert</td></tr>
|
|
<tr><td>45 Holes </td><td width=20><td>Bohrungen, nicht durchkontaktiert</td></tr>
|
|
<tr><td>46 Milling </td><td width=20><td>CNC-Fräser-Daten zum Schneiden der Plat.</td></tr>
|
|
<tr><td>47 Measures </td><td width=20><td>Bemaßungen</td></tr>
|
|
<tr><td>48 Document </td><td width=20><td>allgemeine Dokumentation</td></tr>
|
|
<tr><td>49 Reference </td><td width=20><td>Passermarken</td></tr>
|
|
<tr><td>51 tDocu </td><td width=20><td>Bauteiledokumentation oben</td></tr>
|
|
<tr><td>52 bDocu </td><td width=20><td>Bauteiledokumentation unten</td></tr>
|
|
</table>
|
|
<h3>Schaltplan</h3>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td>91 Nets </td><td width=20><td>Netze</td></tr>
|
|
<tr><td>92 Busses </td><td width=20><td>Busse</td></tr>
|
|
<tr><td>93 Pins </td><td width=20><td>Anschlusspunkte für Schaltplansymbole</td></tr>
|
|
<tr><td> </td><td width=20><td>mit Zusatzinformationen</td></tr>
|
|
<tr><td>94 Symbols </td><td width=20><td>Umrisse der Schaltplansymbole</td></tr>
|
|
<tr><td>95 Names </td><td width=20><td>Namen bei Schaltplansymbolen</td></tr>
|
|
<tr><td>96 Values </td><td width=20><td>Werte/Typenbezeichnung bei Schaltplansymbolen</td></tr>
|
|
<tr><td>97 Info </td><td width=20><td>Allgemeine Informationen</td></tr>
|
|
<tr><td>98 Guide </td><td width=20><td>Hilfslinien</td></tr>
|
|
</table>
|
|
<p>
|
|
Layer können immer mit ihrem Namen oder Nummer angegeben werden.
|
|
|
|
|
|
<a name=62>
|
|
<h1>LOCK</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Verriegelt die Position und Orientierung eines Bauteils im Board.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>LOCK •..</tt><br>
|
|
<tt>LOCK name ..</tt>
|
|
<dt>
|
|
<b>Maustasten</b>
|
|
<dd>
|
|
<mb>Ctrl+Rechte</mb> wirkt auf die Gruppe.<br>
|
|
<mb>Shift+Linke</mb> macht die Verriegelung wieder rückgängig ("entriegelt" das Bauteil).<br>
|
|
<mb>Ctrl+Shift+Rechte</mb> "entriegelt" alle Bauteile in der Gruppe.
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#67>MIRROR</a>,
|
|
<a href=#67>MOVE</a>,
|
|
<a href=#88>ROTATE</a>
|
|
<a href=#95>SMASH</a>
|
|
<p>
|
|
Der LOCK-Befehl kann auf Bauteile in einem Board angewendet werden
|
|
und verhindert, dass diese bewegt, gedreht oder gespiegelt werden können.
|
|
Dies ist nützlich für Dinge wie Steckerleisten, die an einer genau festgelegten
|
|
Stelle montiert werden müssen und nicht unbeabsichtigt verschoben werden
|
|
dürfen.
|
|
<p>
|
|
Der Aufhängepunkt eines verriegelten Bauteils wird als 'x' dargestellt,
|
|
um anzuzeigen, dass das Bauteil verriegelt ist.
|
|
<p>
|
|
Wird eine Gruppe bewegt, die verriegelte Bauteile enthält, so bewegen
|
|
sich diese Bauteile (sowie die an ihren Pads endenden Wires) nicht mit der
|
|
Gruppe mit.
|
|
<p>
|
|
Losgelöste Texte eines verriegelten Bauteils können weiterhin einzeln
|
|
bewegt werden, bewegen sich aber nicht als Teil einer Gruppe mit.
|
|
<p>
|
|
Bauteile lassen sich
|
|
auch mit ihrem Namen selektieren. Das ist vor allem dann nützlich,
|
|
wenn sich das Objekt ausserhalb des gerade dargestellten Bildausschnitts
|
|
befindet.
|
|
<p>
|
|
Ein "verriegeltes" Bauteil kann "entriegelt" werden, indem es bei gedrückter
|
|
<tt>Shift</tt>-Taste (und natürlich aktiviertem LOCK-Befehl) angeklickt wird.
|
|
|
|
|
|
<a name=63>
|
|
<h1>MARK</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Marke in der Zeichenfläche definieren.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>MARK •</tt><br>
|
|
<tt>MARK;</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#53>GRID</a>
|
|
<p>
|
|
Mit dem MARK-Befehl definiert man einen Punkt in der Zeichenfläche,
|
|
der als Bezugspunkt zum Ausmessen von Strecken dienen kann. Die
|
|
Koordinaten relativ zu diesem Punkt werden in der gegenwärtig
|
|
eingestellten Einheit (GRID) links oben auf dem Bildschirm mit
|
|
vorangestelltem 'R' angezeigt. Der Bezugspunkt wird als weißes
|
|
Kreuz dargestellt. Um genau messen zu können, sollten Sie vorher ein
|
|
Raster einstellen das fein genug ist.
|
|
<p>
|
|
Die Eingabe 'MARK;' schaltet die Marke ein oder aus.
|
|
|
|
|
|
<a name=64>
|
|
<h1>MENU</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Text-Menüleiste verändern.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>MENU option ..;</tt><br>
|
|
<tt>MENU;</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#31>ASSIGN</a>,
|
|
<a href=#91>SCRIPT</a>
|
|
<p>
|
|
Mit dem MENU-Befehl kann man das Text-Menü nach eigenen Wünschen
|
|
ändern.
|
|
<p>
|
|
Die vollständige Spezifikation für den <tt>option</tt>-Parameter ist:
|
|
<pre>
|
|
option := command | menu | delimiter
|
|
command := text [ ':' text ]
|
|
menu := text '{' option [ '|' option ] '}'
|
|
delimiter := '---'
|
|
</pre>
|
|
Eine Option des MENU-Befehls kann entweder ein einfacher Befehl sein, wie z. B.
|
|
<pre>
|
|
MENU Display Grid;
|
|
</pre>
|
|
der die Befehle <tt>Display</tt> und <tt>Grid</tt> als Inhalt des Text-Menüs definiert;
|
|
ein selbstdefinierter Befehl sein, wie z. B.
|
|
<pre>
|
|
MENU 'MyDisp : Display None Top Bottom Pads Vias;' 'MyGrid : Grid mil 100 lines on;';
|
|
</pre>
|
|
Das Text-Menü enthält die beiden selbstdefinierten Befehle <tt>MyDisp</tt> und <tt>MyGrid</tt>.
|
|
Nach Anklicken eines Buttons im Menü wird die nach <tt>':'</tt> definierte Befehlssequenz
|
|
der entsprechenden Option ausgeführt;
|
|
oder eine Schaltfläche erzeugen, die Untermenüs enthalten kann, wie z. B.
|
|
<pre>
|
|
MENU 'Grid { Fine : Grid inch 0.001; | Coarse : Grid inch 0.1; }';
|
|
</pre>
|
|
Es wird ein Button mit dem Namen <tt>Grid</tt> erzeugt, der nach dem Anklicken ein
|
|
Untermenü mit den beiden Optionen <tt>Fine</tt> und <tt>Coarse</tt> enthält.
|
|
<p>
|
|
Die besondere Option <tt>'---'</tt> kann man verwenden, um einen Trennstrich im Menü
|
|
zu erzeugen. Das fördert die Übersichtlichkeit im Menü.
|
|
<p>
|
|
Bitte beachten Sie, dass jede <i>option</i>, die mehr als ein Wort oder einen Text,
|
|
der als Befehl interpretiert werden kann, enthält, in einfache Hochkommas eingeschlossen
|
|
werden muss.
|
|
Wenn Sie den MENU-Befehl in einer Script-Datei verwenden, um ein komplexes Text-Menü
|
|
zu definieren und dabei die Menü-Definition zur besseren Lesbarkeit über mehrere Zeilen
|
|
verteilen wollen, ist es notwendig die Zeilen mit einem Backslash (<tt>'\'</tt>) zu beenden,
|
|
wie z. B.
|
|
<pre>
|
|
MENU 'Grid {\
|
|
Fine : Grid inch 0.001; |\
|
|
Coarse : Grid inch 0.1;\
|
|
}';
|
|
</pre>
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
MENU Move Delete Rotate Route ';' Edit;
|
|
</pre>
|
|
erzeugt ein Menü, das die Befehle Move bis Route, den Strichpunkt
|
|
als Befehlsabschlusszeichen und den Edit-Befehl enthält.
|
|
<p>
|
|
Der Befehl
|
|
<pre>
|
|
MENU;
|
|
</pre>
|
|
stellt wieder das Standard-Menü ein.
|
|
<p>
|
|
Beachten Sie, dass der Eintrag ';' immer im Menü enthalten sein sollte.
|
|
Er wird zum Beenden vieler Befehle benötigt.
|
|
|
|
|
|
<a name=65>
|
|
<h1>MIRROR</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Objekte spiegeln.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>MIRROR •..</tt><br>
|
|
<tt>MIRROR name..</tt>
|
|
<dt>
|
|
<b>Maustasten</b>
|
|
<dd>
|
|
<mb>Ctrl+Rechte</mb> spiegelt die Gruppe.
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#88>ROTATE</a>,
|
|
<a href=#62>LOCK</a>,
|
|
<a href=#99>TEXT</a>
|
|
<p>
|
|
Mit dem MIRROR-Befehl können Objekte an der y-Achse gespiegelt
|
|
und damit z.B. auf der Lötseite der Platine plaziert werden.
|
|
<p>
|
|
Bauteile, Pads, Smds und Pins lassen sich
|
|
auch mit ihrem Namen selektieren. Das ist vor allem dann nützlich,
|
|
wenn sich das Objekt ausserhalb des gerade dargestellten Bildausschnitts
|
|
befindet.
|
|
<p>
|
|
Attribute von Bauteilen können dadurch selektiert werden, dass die Kombination
|
|
aus Bauteilname und Attributname angegeben wird, wie etwa <tt>R5>VALUE</tt>.
|
|
<p>
|
|
Das Spiegeln von Packages ist nur mit eingeblendetem tOrigins- bzw.
|
|
bOrigins-Layer möglich.
|
|
<p>
|
|
Beim Spiegeln von Elementen werden die angeschlossenen
|
|
Wires auf den Außenlagen mitgespiegelt (Achtung auf Kurzschlüsse!). Vias werden
|
|
dabei nicht automatisch gesetzt.
|
|
<p>
|
|
Beachten Sie bitte, dass Objekte auf Innenlagen (2...15) beim Spiegeln
|
|
ihren Layer nicht wechseln. Gleiches gilt auch für Vias.
|
|
<p>
|
|
Bauteile können nicht gespiegelt werden, wenn sie <a href=#62>gelockt</a> sind,
|
|
oder wenn eines ihrer angeschlossenen Pads aus der erlaubten Fläche hinausstehen würde
|
|
(falls sie eine <a href=#347>eingeschränkte Version</a> von EAGLE verwenden).
|
|
<h2>Gruppe spiegeln</h2>
|
|
Will man eine Gruppe spiegeln, definiert man zuerst die Gruppe mit
|
|
dem GROUP-Befehl, dann selektiert man den MIRROR-Befehl und klickt
|
|
mit der rechten Maustaste die Gruppe an. Sie wird dann um die senkrechte
|
|
Achse durch den dem Mauszeiger nächstgelegenen Rasterpunkt gespiegelt.
|
|
<p>
|
|
Wires, Circles, Pads und Polygone lassen sich
|
|
nicht explizit spiegeln (als Bestandteile von Gruppen werden sie
|
|
mitgespiegelt).
|
|
<h2>Text spiegeln</h2>
|
|
Text auf der Lötseite (Layer 'Bottom' und 'bPlace') wird automatisch
|
|
gespiegelt, so dass er dann später, wenn man die Platine von der
|
|
Lötseite her betrachtet, richtig lesbar ist.
|
|
<p>
|
|
Im Schaltplan führt das Spiegeln eines Textes dazu, dass er auf der anderen
|
|
Seite seines Aufhängepunktes dargestellt wird; er bleibt aber nach wie vor normal
|
|
lesbar.
|
|
|
|
|
|
<a name=66>
|
|
<h1>MITER</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Wire-Verbindungsstellen abschrägen.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>MITER [radius] •..</tt>
|
|
<dt>
|
|
<b>Maustasten</b>
|
|
<dd>
|
|
<mb>Linke&Ziehen</mb> modifiziert die Abschrägung dynamisch.<br>
|
|
<mb>Rechte</mb> schaltet zwischen runder und gerader Abschrägung hin und her.
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#97>SPLIT</a>,
|
|
<a href=#106>WIRE</a>,
|
|
<a href=#89>ROUTE</a>,
|
|
<a href=#77>POLYGON</a>
|
|
<p>
|
|
Der MITER-Befehl dient dazu die Verbindungsstelle zweier Wires abzuschrägen.
|
|
Die beiden existierenden Wires müssen dazu auf dem gleichen Layer liegen, die
|
|
gleiche Breite und den gleichen Wire-Style haben.
|
|
<h2>Abschrägen eines Punktes</h2>
|
|
Wenn Sie einen Punkt selektieren, an dem sich genau zwei geradlinige Wires treffen,
|
|
so wird ein zusätzlicher Wire zwischen diesen beiden Wires eingefügt, dessen Abmessungen
|
|
sich aus dem angegebenen <i>radius</i> ergeben.
|
|
Wenn sie Click&Drag mit der linken Maustaste an einem solchen Punkt machen, können
|
|
Sie den zur Abschrägung verwendeten Wire dynamisch definieren.
|
|
<h2>Abschrägen eines Wires</h2>
|
|
Wenn sie einen Wire (der auch ein Kreisbogen sein kann) in der Mitte zwischen seinen Endpunkten
|
|
selektieren, und dieser Wire mit genau zwei anderen, geradlinigen Wires (jeweils einer
|
|
an jedem Ende) verbunden ist, so werden die Abmessungen dieses Wires gemäß dem
|
|
angegebenen <i>radius</i> neu berechnet.
|
|
Wenn sie Click&Drag mit der linken Maustaste an einem solchen Wire machen, können
|
|
Sie den zur Abschrägung verwendeten Wire dynamisch definieren.
|
|
<h2>Geradlinige und runde Abschrägung</h2>
|
|
Ist der <i>radius</i> positiv, so ist der eingefügte Wire ein Kreisbogen mit dem gegebenen
|
|
Radius; falls er negativ ist wird ein geradliniger Wire eingefügt (stellen Sie sich
|
|
das <tt>'-'</tt> Zeichen als Indikator für "geradlinig" vor). Durch Drücken der rechten
|
|
Maustaste können Sie zwischen runder und geradliniger Abschrägung hin und her schalten.
|
|
<h2>Miter-Radius und Wire-Knickwinkel</h2>
|
|
Der <i>radius</i>, den Sie mit dem MITER-Befehl einstellen, wird auch in allen anderen
|
|
Befehlen verwendet, die Wires zeichnen, falls der Knickwinkel einer der 90- bzw. 45-Grad
|
|
Winkel ist. Bei runder Abschrägung betrifft dies sowohl 90- als auch 45-Grad Winkel,
|
|
bei geradliniger Abschrägung nur die 90-Grad Winkel.
|
|
|
|
|
|
<a name=67>
|
|
<h1>MOVE</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Bewegen von Objekten.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>MOVE • •..</tt><br>
|
|
<tt>MOVE name •..</tt>
|
|
<dt>
|
|
<b>Maustasten</b>
|
|
<dd>
|
|
<mb>Ctrl+Linke</mb> selektiert ein Objekt an seinem Aufhängepunkt bzw. verändert es (siehe Anmerkung).<br>
|
|
<mb>Ctrl+Rechte</mb> selektiert die Gruppe.<br>
|
|
<mb>Linke&Ziehen</mb> bewegt das Objekt sofort.<br>
|
|
<mb>Ctrl+Rechte&Ziehen</mb> bewegt die Gruppe sofort.<br>
|
|
<mb>Mittlere</mb> spiegelt das Objekt bzw. die Gruppe.<br>
|
|
<mb>Rechte</mb> dreht das selektierte Objekt bzw. die Gruppe.<br>
|
|
<mb>Shift+Rechte</mb> kehrt die Richtung der Drehung um.
|
|
<dt>
|
|
<b>Tastatur</b>
|
|
<dd>
|
|
<tt>F7: MOVE</tt> aktiviert den MOVE-Befehl.
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#54>GROUP</a>,
|
|
<a href=#62>LOCK</a>,
|
|
<a href=#81>RATSNEST</a>
|
|
<p>
|
|
Der MOVE-Befehl bewegt das Objekt, das dem Mauszeiger bzw. dem angegebenen
|
|
Koordinatenpunkt am nächsten liegt.
|
|
<p>
|
|
Bauteile, Pads, Smds, Pins und Gatter lassen sich
|
|
auch mit ihrem Namen selektieren. Das ist vor allem dann nützlich,
|
|
wenn sich das Objekt ausserhalb des gerade dargestellten Bildausschnitts
|
|
befindet. Beim Selektieren eines aus mehreren Gattern bestehenden Bauteils
|
|
im Schaltplan muss der volle, aus dem Bauteil- und dem jeweiligen Gatternamen
|
|
bestehende Name angegeben werden.
|
|
<p>
|
|
Attribute von Bauteilen können dadurch selektiert werden, dass die Kombination
|
|
aus Bauteilname und Attributname angegeben wird, wie etwa <tt>R5>VALUE</tt>.
|
|
<p>
|
|
Das Bewegen von Elementen ist nur mit eingeblendetem tOrigins- bzw.
|
|
bOrigins-Layer möglich.
|
|
<p>
|
|
Der MOVE-Befehl wirkt nur auf sichtbare Layer (siehe DISPLAY).
|
|
<p>
|
|
Wires, die an einem Element hängen, lassen sich an diesem Ende
|
|
nicht bewegen. Beim Bewegen von Elementen bewegen sich die angeschlossenen
|
|
Wires mit, sofern sie Bestandteil eines Signals sind, (Achtung
|
|
auf Kurzschlüsse!).
|
|
<p>
|
|
Wird ein Objekt mit der linken Maustaste angeklickt und die Taste danach
|
|
nicht wieder losgelassen, so kann das Objekt sofort bewegt werden ("Click&Drag").
|
|
Gleiches gilt für Gruppen bei Verwendung der rechten Maustaste.
|
|
Es ist dann allerdings nicht möglich das Objekt während des Bewegens zu
|
|
drehen oder zu spiegeln.
|
|
<p>
|
|
Bauteile können nicht bewegt werden, wenn sie <a href=#62>gelockt</a> sind,
|
|
oder wenn eines ihrer angeschlossenen Pads aus der erlaubten Fläche hinausstehen würde
|
|
(falls sie eine <a href=#347>eingeschränkte Version</a> von EAGLE verwenden).
|
|
<h2>Leitungen bewegen</h2>
|
|
Bewegt man mit MOVE Wires übereinander, dann werden diese Wires
|
|
nicht zu einem Signal verbunden (Kurzschluss, den der DRC-Befehl
|
|
feststellt).
|
|
<h2>Gruppe bewegen</h2>
|
|
Will man eine Gruppe bewegen, definiert man zuerst die Gruppe mit
|
|
dem GROUP-Befehl, dann selektiert man den MOVE-Befehl und klickt mit
|
|
der rechten Maustaste die Gruppe an. Jetzt lässt sich die ganze
|
|
Gruppe bewegen und mit der rechten Maustaste (um den Mauszeiger) rotieren.
|
|
<h2>Hinweise für den Schaltplan</h2>
|
|
Wird ein Supply-Pin (Pin-Direction Sup)
|
|
auf ein Netz plaziert, erhält dieses Netz-Segment den Namen des
|
|
Supply-Pins. Werden Pins direkt aufeinander plaziert (ohne explizite
|
|
Netz-Linie), sind sie verbunden.
|
|
<p>
|
|
Wird ein Element bewegt, werden beim Absetzen offene Pins dieses Elements
|
|
an eventuell vorhandene Netze bzw. andere Pins angeschlossen.
|
|
<p>
|
|
Bewegt man ein Netz auf einen Pin, werden Netz und Pin nicht logisch
|
|
verbunden, obwohl sie optisch verbunden sind.
|
|
<h2>Objekte an ihrem Aufhängepunkt selektieren</h2>
|
|
Normalerweise bleibt ein selektiertes Objekt in dem Raster, in dem es ursprünglich
|
|
plaziert wurde. Wird beim Selektieren eines Objektes <tt>Ctrl</tt> gedrückt,
|
|
so wird der Punkt, an dem das Objekt selektiert wurde, an den Mauszeiger
|
|
gezogen und schnappt in das aktuelle Raster.
|
|
<p>
|
|
Wird ein <i>Wire</i> in der Mitte (nicht an einem seiner Endpunkte) mit gedrückter
|
|
<tt>Ctrl</tt>-Taste selektiert, so bleiben die Endpunkte fixiert und der Wire kann
|
|
gebogen werden, wodurch er zum Kreisbogen wird. Auf die gleiche Weise kann die Krümmung eines
|
|
Kreisbogens (der im Grunde nichts anderes als ein Wire ist) verändert werden.
|
|
<p>
|
|
Wird ein <i>Rechteck</i> an einer seiner Ecken mit gedrückter <tt>Ctrl</tt>-Taste
|
|
selektiert, so kann die Größe des Rechtecks sowohl in der Breite als auch in der Höhe
|
|
verändert werden. Beim Selektieren einer Kante mit gedrückter <tt>Ctrl</tt>-Taste
|
|
läßt sich nur die Breite bzw. die Höhe verändern. Selektiert man das Rechteck an
|
|
seinem Mittelpunkt mit gedrückter <tt>Ctrl</tt>-Taste, so wird dieser an den Mauszeiger
|
|
gezogen und in das aktuelle Raster geschnappt.
|
|
<p>
|
|
Wird ein <i>Kreis</i> mit gedrückter <tt>Ctrl</tt>-Taste an seinem Umfang selektiert,
|
|
so bleibt sein Mittelpunkt fix und der Durchmesser kann verändert werden. Wird
|
|
der Mittelpunkt auf diese Weise selektiert, so wird dieser an den Mauszeiger
|
|
gezogen und in das aktuelle Raster geschnappt.
|
|
<h2>Teile einer Seite auf eine andere Seite verschieben</h2>
|
|
Sie können Teile einer Seite auf eine andere Seite des gleichen Schaltplans
|
|
verschieben, ohne die Platine zu beeinflussen (falls <a href=#341>Forward&Back Annotation</a>
|
|
aktiviert ist), indem Sie eine <a href=#54>Gruppe</a> definieren, die die
|
|
zu verschiebenden Objekte enthält, diese mit dem MOVE-Befehl selektieren und dann
|
|
auf die gewünscht Seite umschalten, wobei der MOVE-Befehl immer noch aktiv sein und
|
|
die Gruppe am Mauszeiger hängen muss. In der neuen Seite ist dann der MOVE-Befehl wieder aktiv
|
|
und hat die vorher definierte Gruppe am Mauszeiger. Platzieren Sie die Gruppe jetzt
|
|
wie üblich, so werden alle betroffenen Objekte von der ursprünglichen Seite auf die
|
|
aktuelle Seite verschoben. Falls die aktuelle Seite gleich der ursprünglichen ist,
|
|
passiert nichts.
|
|
<p>
|
|
Beachten Sie, das nur solche Wires verschoben werden, die beide Enden in der Gruppe
|
|
haben, und dass Bauteile, die verschoben werden, alle ihre elektrischen Verbindungen
|
|
mitnehmen, auch wenn ein an einem Pin angeschlossener Net-Wire nicht verschoben wird,
|
|
da sein anderes Ende nicht in der Gruppe liegt.
|
|
Falls ein Pin auf der neuen Seite eine elektrische Verbindung hat, aber kein anderer
|
|
Pin, Wire oder Junction daran angeschlossen ist um dies sichtbar zu machen, so
|
|
wird automatisch eine Junction an dieser Stelle generiert.
|
|
<p>
|
|
Dieser Vorgang kann sogar in einem Script ausgeführt werden. Zum Beispiel würde
|
|
<pre>
|
|
edit .s1
|
|
group (1 1) (1 2) (2 2) (2 1) (1 1)
|
|
move (> 0 0)
|
|
edit .s2
|
|
(0 0)
|
|
</pre>
|
|
auf die erste Seite schalten, eine Gruppe definieren, diese mit MOVE selektieren,
|
|
auf die zweite Seite schalten und die Gruppe absetzen. Die Koordinaten <tt>(0 0)</tt>
|
|
am Schluss sind für den implizit gestarteten MOVE-Befehl.
|
|
<p>
|
|
Falls Sie lediglich die Reihenfolge der Seiten verändern wollen, so können Sie
|
|
das mit dem <a href=#47>EDIT</a>-Befehl tun.
|
|
|
|
|
|
<a name=68>
|
|
<h1>NAME</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Anzeigen und Ändern von Namen.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>NAME •..</tt><br>
|
|
<tt>NAME new_name •</tt><br>
|
|
<tt>NAME old_name new_name</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#93>SHOW</a>,
|
|
<a href=#95>SMASH</a>,
|
|
<a href=#103>VALUE</a>
|
|
<p>
|
|
Mit den NAME-Befehl kann man den Namen
|
|
des selektierten Objektes anzeigen und
|
|
(in einem Popup-Menü) ändern.
|
|
<p>
|
|
Bauteile, Pads, Smds, Pins und Gatter lassen sich
|
|
auch mit ihrem Namen selektieren. Das ist vor allem dann nützlich,
|
|
wenn sich das Objekt ausserhalb des gerade dargestellten Bildausschnitts
|
|
befindet.
|
|
<h2>Bibliothek</h2>
|
|
Im Bibliotheks-Editier-Modus gilt das gleiche für Pad-, Smd-,
|
|
Pin- und Gate(Symbol)-Namen.
|
|
<h2>Automatische Namensvergabe</h2>
|
|
EAGLE vergibt automatisch Namen (E$.. für Elemente; S$.. für
|
|
Signale; P$.. für Pads, Pins und Smds; G$.. für Gates). Zumindest
|
|
in Packages und Symbolen sollte man die Pad- und Pin-Bezeichnungen
|
|
durch gängige Namen (z.B. 1..14 bei einem 14pol. DIL-Gehäuse)
|
|
bzw. die Signalbezeichnung ersetzen.
|
|
<h2>Schaltplan</h2>
|
|
Beim Umbenennen von Netzen und Bussen in Schaltplänen werden drei
|
|
verschiedene Fälle unterschieden, da Netze und Busse aus mehreren
|
|
(nicht explizit verbundenen) Segmenten bestehen und über mehrere
|
|
Seiten verteilt sein können. Das in einem solchen Fall erscheinende Menü
|
|
ermöglicht die Auswahl, ob
|
|
<p>
|
|
nur das selektierte Segment,<br>
|
|
alle Segmente auf dieser Seite,<br>
|
|
alle Segmente auf allen Seiten
|
|
<p>
|
|
mit der Maus oder durch Eingabe des entsprechenden Hot-Keys
|
|
umbenannt werden sollen. Je nachdem ob das Netz bzw. der
|
|
Bus nur auf dieser Seite definiert ist oder aus einem oder mehreren
|
|
Segmenten besteht, entfallen einzelne Punkte des Menüs bzw. das
|
|
gesamte Menü. Existiert der neue Name bereits (auf dieser oder
|
|
einer anderen Seite), wird vorher noch abgefragt, ob die beiden Netze
|
|
bzw. Busse verbunden werden sollen.
|
|
<h2>Polygon</h2>
|
|
Beim Umbenennen eines Signal-Polygons in einem Board kann ausgewählt werden,
|
|
ob nur dieses Polygon umbenannt (und damit Bestandteil eines anderen Signals)
|
|
werden soll, oder ob das gesamte Signal einen anderen Namen erhalten soll.
|
|
|
|
|
|
<a name=69>
|
|
<h1>NET</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Zeichnen von Netzen im Schaltplan.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>NET [net_name] • [curve | @radius] •..</tt>
|
|
<dt>
|
|
<b>Maustasten</b>
|
|
<dd>
|
|
<mb>Rechte</mb> ändert den Knickwinkel (siehe <a href=#92>SET Wire_Bend</a>).<br>
|
|
<mb>Shift+Rechte</mb> kehrt die Richtung des Weiterschaltens des Knickwinkels um.<br>
|
|
<mb>Ctrl+Rechte</mb> schaltet zwischen korrespondierenden Knickwinkeln hin und her.
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#35>BUS</a>,
|
|
<a href=#68>NAME</a>,
|
|
<a href=#38>CLASS</a>,
|
|
<a href=#92>SET</a>
|
|
<p>
|
|
Mit dem NET-Befehl zeichnet man Einzelverbindungen (Netze) in den
|
|
Net-Layer eines Schaltplans. Der erste Mausklick gibt den Startpunkt
|
|
des Netzes an, der zweite setzt die Linie ab.
|
|
Zwei Mausklicks am selben Punkt beenden das Netz.
|
|
<p>
|
|
Wird ein Netz an einem Punkt abgesetzt, an dem schon ein anderes Netz,
|
|
ein Bus oder ein Pin liegt, endet die Netzlinie hier.
|
|
Diese Funktion kann über "<tt>SET AUTO_END_NET OFF;</tt>" oder durch
|
|
Deselektieren der Option "Netze und Busse automatisch beenden" im Menü "Optionen/Einstellungen/Verschiedenes"
|
|
abgeschaltet werden.
|
|
<p>
|
|
Wird eine Netzlinie an einem Punkt abgesetzt an dem mindestens zwei
|
|
Netzlinien und/oder Pins liegen, wird automatisch ein Verknüpfungspunkt
|
|
(Junction) gesetzt.
|
|
Diese Funktion kann über "<tt>SET AUTO_JUNCTION OFF;</tt>" oder durch
|
|
Deselektieren der Option "Junctions automatisch setzen" im Menü "Optionen/Einstellungen/Verschiedenes"
|
|
abgeschaltet werden.
|
|
<p>
|
|
Wird der <i>curve</i> oder <i>@radius</i> Parameter angegeben, so kann ein Kreisbogen als Teil des Netzes
|
|
gezeichnet werden (siehe die ausführliche Beschreibung beim <a href=#106>WIRE</a>-Befehl).
|
|
<h2>Bussignal auswählen</h2>
|
|
Startet man das Netz auf einem Bus, öffnet sich ein Popup-Menü,
|
|
aus dem man ein Signal des Busses auswählen kann. Das Netz erhält
|
|
dann den entsprechenden Namen und gehört damit zu diesem Signal.
|
|
Enthält der Bus mehrere Teilbusse, öffnet sich erst ein Popup-Menü,
|
|
in dem man den gewünschten Teilbus auswählen kann.
|
|
<h2>Netz-Namen</h2>
|
|
Gibt man einen Namen im NET-Befehl an, dann
|
|
erhält das Netz diesen Namen.
|
|
<p>
|
|
Gibt man keinen Namen im NET-Befehl an und startet man auch nicht
|
|
auf einem Bus, dann wird ein Name der Form N$1 für das Netz automatisch
|
|
vergeben.
|
|
<p>
|
|
Netze oder Teile davon, die auf verschiedenen Seiten eines Schaltplans liegen und denselben
|
|
Namen haben, sind miteinander verbunden.
|
|
<p>
|
|
Netznamen sollten kein Komma (<tt>','</tt>) enthalten, da dieses das Trennzeichen
|
|
für <a href=#35>Busse</a> ist.
|
|
<h2>Linienbreite</h2>
|
|
Die Breite der Linien, die ein Netz darstellen, lässt sich
|
|
mit dem Befehl
|
|
<pre>
|
|
SET NET_WIRE_WIDTH width;
|
|
</pre>
|
|
voreinstellen (Default: 6 Mil).
|
|
<h2>Negierte Signale</h2>
|
|
Der Name eines negierten Signals ("active low") kann überstrichen dargestellt werden,
|
|
wenn ihm ein Ausrufezeichen (<tt>'!'</tt>) vorangestellt wird, wie in
|
|
<pre>
|
|
!RESET
|
|
</pre>
|
|
was als
|
|
<pre>
|
|
_____
|
|
RESET
|
|
</pre>
|
|
dargestellt würde.
|
|
Einzelheiten hierzu finden Sie in der Beschreibung des <a href=#99>TEXT</a>-Befehls.
|
|
|
|
|
|
<a name=70>
|
|
<h1>OPEN</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Öffnen einer Bibliothek.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>OPEN library_name</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#39>CLOSE</a>,
|
|
<a href=#102>USE</a>,
|
|
<a href=#47>EDIT</a>,
|
|
<a href=#91>SCRIPT</a>
|
|
<p>
|
|
Der OPEN-Befehl öffnet eine existierende Bibliothek oder legt
|
|
eine neue an, falls noch keine mit dem angegebenen Namen existiert.
|
|
Danach kann ein existierendes oder ein neues Symbol, Device oder Package
|
|
editiert werden.
|
|
<p>
|
|
Dieser Befehl ist in erster Linie für Script-Dateien erforderlich.
|
|
|
|
|
|
<a name=71>
|
|
<h1>OPTIMIZE</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Zusammenfassen von Wire-Segmenten.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>OPTIMIZE;</tt><br>
|
|
<tt>OPTIMIZE signal_name ..</tt><br>
|
|
<tt>OPTIMIZE •..</tt>
|
|
<dt>
|
|
<b>Maustasten</b>
|
|
<dd>
|
|
<mb>Ctrl+Rechte</mb> optimiert die Gruppe.
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#92>SET</a>,
|
|
<a href=#97>SPLIT</a>,
|
|
<a href=#67>MOVE</a>,
|
|
<a href=#89>ROUTE</a>
|
|
<p>
|
|
Der OPTIMIZE-Befehl fasst Wire-Segmente, die
|
|
in einer Linie liegen, zu einem Segment zusammen. Voraussetzung dafür
|
|
ist, dass sich die Segmente im selben Layer befinden und dass
|
|
Sie dieselbe Breite haben.
|
|
<p>
|
|
Werden Signalnamen angegeben oder wird ein Signal selektiert, so wirkt der
|
|
Befehl nur auf die entsprechenden Signale.
|
|
<h2>Automatische Optimierung</h2>
|
|
Diese Wire-Optimierung geschieht auch automatisch nach dem MOVE-,
|
|
SPLIT und ROUTE-Befehl für den damit selektieren Wire, es sei
|
|
denn, sie wurde mit dem Befehl
|
|
<pre>
|
|
SET OPTIMIZING OFF;
|
|
</pre>
|
|
abgeschaltet, oder beim SPLIT-Befehl wurden zwei Mausklicks auf
|
|
denselben Punkt eines Wires gesetzt.
|
|
<p>
|
|
Der OPTIMIZE-Befehl arbeitet unabhängig von der Einstellung der
|
|
Set-Variablen Optimizing, d.h. er funktioniert auch, wenn
|
|
<pre>
|
|
SET OPTIMIZING OFF;
|
|
</pre>
|
|
eingegeben wurde.
|
|
|
|
|
|
<a name=72>
|
|
<h1>PACKAGE</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Zuweisung einer Package-Variante für ein Device.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>PACKAGE</tt><br>
|
|
<tt>PACKAGE pname vname</tt><br>
|
|
<tt>PACKAGE pname@lname vname</tt><br>
|
|
<tt>PACKAGE name</tt><br>
|
|
<tt>PACKAGE -old_name new_name</tt><br>
|
|
<tt>PACKAGE -name</tt><br>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#40>CONNECT</a>,
|
|
<a href=#98>TECHNOLOGY</a>,
|
|
<a href=#78>PREFIX</a>
|
|
<p>
|
|
Dieser Befehl wird im Device-Editor verwendet um eine Gehäuse-Variante
|
|
zu definieren, zu löschen oder umzubenennen.
|
|
Im Schaltplan- oder Board-Editor verhält sich der PACKAGE-Befehl genau so
|
|
wie "<a href=#36>CHANGE PACKAGE</a>".
|
|
<p>
|
|
Ohne Angabe von Parametern öffnet sich ein Dialog, der es erlaubt ein Gehäuse zu
|
|
wählen und dessen Varianten-Namen zu definieren.
|
|
<p>
|
|
Die Parameter <tt>pname vname</tt> verknüpfen das Gehäuse <tt>pname</tt> mit
|
|
der neuen Variante <tt>vname</tt>.
|
|
<p>
|
|
In der Schreibweise <tt>pname@lname vname</tt> wird das Package <tt>pname</tt>
|
|
aus der Bibliothek <tt>lname</tt> geholt und eine neue Gehäuse-Variante erzeugt.
|
|
Dies kann ebenso über das <a href=#13>Kontext-Menü</a> der
|
|
Bibliotheksobjekte oder über <i>Drag&Drop</i> aus der Baumansicht des Control
|
|
Panels erfolgen.
|
|
<p>
|
|
Der einzelne Parameter <tt>name</tt> ruft die schon vorhandene Package-Variante
|
|
auf. Wurde bisher noch keine Package-Variante definiert und existiert ein
|
|
Package mit dem angegebenen Namen in der Bibliothek, wird mit diesem Package eine neue
|
|
Package-Variante mit Namen '' (ein "leerer" Name) erzeugt (aus Kompatibilitätsgründen
|
|
zu Version 3.5 notwendig).
|
|
<p>
|
|
Gibt man <tt>-old_name new_name</tt> an, wird die Package-Variante <tt>old_name</tt>
|
|
umbenannt in <tt>new_name</tt>.
|
|
<p>
|
|
Der einzelne Parameter <tt>-name</tt> löscht die angegebene Package-Variante.
|
|
<p>
|
|
Der Name der Package-Variante wird dem Device-Set-Namen hinzugefügt, so dass ein
|
|
eindeutiger Device-Name entsteht. Enthält der Device-Set-Name das Zeichen <tt>'?'</tt>,
|
|
wird dieser Platzhalter durch den Package-Varianten-Namen ersetzt.
|
|
Bitte beachten Sie, dass die Package-Variante erst nach der Technology-Funktion
|
|
bearbeitet wird. Wenn der Device-Set-Name weder <tt>'*'</tt> noch <tt>'?'</tt> enthält,
|
|
setzt sich der Device-Name aus <i>Device-Set-Name</i><tt>+</tt><i>Technology</i><tt>+</tt><i>Package-Variante</i> zusammen.
|
|
<p>
|
|
Anschließend ist der CONNECT-Befehl zu verwenden, damit festgelegt
|
|
werden kann, welcher Pin (im Schaltplan-Symbol) welchem Pad des Gehäuses
|
|
entspricht.
|
|
<p>
|
|
Die maximale Anzahl von Package-Varianten pro Device-Set ist 254.
|
|
<p>
|
|
Führt man im Schaltplan-Modus den <a href=#34>BOARD</a>-Befehl aus,
|
|
so entsteht für jedes Device dasjenige Package, das mit dem
|
|
PACKAGE-Befehl festgelegt wurde.
|
|
|
|
|
|
<a name=73>
|
|
<h1>PAD</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Plazieren von Pads in Packages.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>PAD [diameter] [shape] [orientation] [flags] ['name'] •..</tt>
|
|
<dt>
|
|
<b>Maustasten</b>
|
|
<dd>
|
|
<mb>Rechte</mb> dreht das Pad.<br>
|
|
<mb>Shift+Rechte</mb> kehrt die Richtung der Drehung um.
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#96>SMD</a>,
|
|
<a href=#36>CHANGE</a>,
|
|
<a href=#45>DISPLAY</a>,
|
|
<a href=#92>SET</a>,
|
|
<a href=#68>NAME</a>,
|
|
<a href=#104>VIA</a>,
|
|
<a href=#133>Design Rules</a>
|
|
<p>
|
|
Ein Pad ist ein Bauelemente-Anschluss mit Durchkontaktierung.
|
|
<p>
|
|
Der PAD-Befehl plaziert ein Pad in einem Package. Die Eingabe eines
|
|
Durchmessers vor dem Plazieren ändert die Größe des Pads.
|
|
Der Durchmesser wird in der aktuellen Maßeinheit angegeben. Er darf
|
|
maximal 0.51602 Zoll (ca. 13.1 mm) betragen.
|
|
<p>
|
|
Pads erzeugen Bohrsymbole im Layer Drills und die Lötstopmaske in den
|
|
Layern tStop/bStop.
|
|
<p>
|
|
Die <tt>orientation</tt> (siehe Beschreibung bei <a href=#29>ADD</a>)
|
|
darf jeder Winkel im Bereich <tt>R0</tt>...<tt>R359.9</tt> sein. Das <tt>S</tt>-
|
|
bzw. <tt>M</tt>-Flag kann hier nicht benutzt werden.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
PAD 0.06 •
|
|
</pre>
|
|
Falls die eingestellte Maßeinheit "Inch" ist, hat das Pad einen
|
|
Durchmesser von 0.06 Zoll. Die eingegebene Größe bleibt für nachfolgende
|
|
Operationen erhalten.
|
|
<h2>Pad-Formen</h2>
|
|
Ein Pad kann eine der folgenden Formen (<i>shape</i>) haben:
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td>Square </td><td width=20><td>quadratisch</td></tr>
|
|
<tr><td>Round </td><td width=20><td>rund</td></tr>
|
|
<tr><td>Octagon </td><td width=20><td>achteckig</td></tr>
|
|
<tr><td>Long </td><td width=20><td>länglich</td></tr>
|
|
<tr><td>Offset </td><td width=20><td>länglich mit Versatz</td></tr>
|
|
</table>
|
|
<p>
|
|
Diese Formen gelten nur für die Aussenlagen (Top bzw. Bottom).
|
|
In den Innenlagen ist die Form immer "rund".
|
|
<p>
|
|
Bei den länglichen Pads ist der kleinere der beiden Durchmesser
|
|
als Parameter anzugeben. Das Seitenverhältnis wird über den Parameter
|
|
Shapes/Elongation in den <a href=#133>Design Rules</a> des Boards
|
|
festgelegt (Default ist 100%, also ein Seitenverhältnis von 2:1).
|
|
<p>
|
|
Die Pad-Form kann entweder (wie der Durchmesser) eingegeben werden,
|
|
während der Pad-Befehl aktiv ist, oder sie kann mit dem CHANGE-Befehl
|
|
verändert werden, z. B.:
|
|
<pre>
|
|
CHANGE SHAPE OCTAGON •
|
|
</pre>
|
|
Die eingegebene Form bleibt für nachfolgende Operationen erhalten.
|
|
<p>
|
|
Da die Darstellung verschiedener Pad-Formen und der Bohrlöcher
|
|
den Bildaufbau etwas verlangsamt, kann mit dem Befehl
|
|
<pre>
|
|
SET DISPLAY_MODE REAL | NODRILL;
|
|
</pre>
|
|
von realer auf schnelle Darstellung umgeschaltet werden.
|
|
<p>
|
|
Beachten Sie bitte, dass die tatsächlichen Werte für Pad-Form und -Durchmesser durch die
|
|
<a href=#133>Design Rules</a> des Boards bestimmt werden, in dem das Bauteil
|
|
verwendet wird.
|
|
<h2>Pad-Namen</h2>
|
|
Pad-Namen werden vom Programm automatisch erzeugt und können mit
|
|
dem NAME-Befehl geändert werden.
|
|
Der Name kann als Parameter auch im PAD-Befehl mit angegeben werden
|
|
(muss in Hochkommas eingeschlossen sein).
|
|
<p>
|
|
Die Namen der Pads kann man mit dem Befehl
|
|
<pre>
|
|
SET PAD_NAMES ON/OFF
|
|
</pre>
|
|
ein- bzw. ausblenden. Die Änderung wird erst nach dem nächsten
|
|
Bildaufbau sichtbar.
|
|
<h2>Flags</h2>
|
|
Folgende <i>flags</i> können dazu benutzt werden, das Erscheinungsbild eines Pads zu
|
|
beeinflussen:
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>NOSTOP</tt> </td><td width=20><td>keine Lötstopmaske generieren</td></tr>
|
|
<tr><td><tt>NOTHERMALS</tt> </td><td width=20><td>keine Thermals generieren</td></tr>
|
|
<tr><td><tt>FIRST</tt> </td><td width=20><td>dies ist das "erste" Pad (und kann mit einer speziellen Form dargestellt werden)</td></tr>
|
|
</table>
|
|
<p>
|
|
Standardmäßig generieren Pads automatisch Lötstopmaske und Thermals.
|
|
In speziellen Fällen kann es jedoch erwünscht sein, dass einzelne Pads dies nicht tun.
|
|
Die objgen <tt>NO...</tt>-Flags können benutzt werden um diese Eigenschaften zu
|
|
unterdrücken.<br>
|
|
Falls die <a href=#133>Design Rules</a> eines Boards definieren, dass
|
|
das "erste Pad" eines Bauteils in einer speziellen Form dargestellt werden soll, so
|
|
wird das mit <tt>FIRST</tt> markierte Pad auf diese Weise dargestellt.<br>
|
|
Ein neu gestarteter PAD-Befehl setzt alle Flags auf ihre Standardwerte zurück.
|
|
Sobald ein Flag in der Kommandozeile angegeben wird, gilt es für alle nachfolgend
|
|
in diesem PAD-Befehl plazierten Pads (ausgenommen <tt>FIRST</tt>, welches nur für
|
|
das unmittelbar dieser Option folgende Pad gilt).
|
|
<h2>Einzelne Pads</h2>
|
|
Einzelne Pads in Platinen müssen als Package definiert und in
|
|
die Platine geladen werden. Durchkontaktierungen lassen sich aber
|
|
mit dem VIA-Befehl direkt in Platinen plazieren. Solche Durchkontaktierungen
|
|
haben aber keinen Elementnamen und können deshalb auch nicht in
|
|
der Netzliste geführt werden.
|
|
<h2>Package verändern</h2>
|
|
Es ist nicht möglich, in einem Package, das schon in einem Device
|
|
verwendet wird, nachträglich ein Pad hinzuzufügen oder zu
|
|
löschen, da dies die im Device definierten Pin-/Pad-Zuordnungen
|
|
(CONNECT-Befehl) verändern würde.
|
|
|
|
|
|
<a name=74>
|
|
<h1>PASTE</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Inhalt des PASTE-Puffers einfügen.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>PASTE [ orientation ] •</tt>
|
|
<dt>
|
|
<b>Maustasten</b>
|
|
<dd>
|
|
<mb>Mittlere</mb> spiegelt den PASTE-Puffer-Inhalt.<br>
|
|
<mb>Rechte</mb> dreht den PASTE-Puffer-Inhalt.<br>
|
|
<mb>Shift+Rechte</mb> kehrt die Richtung der Drehung um.
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#42>CUT</a>,
|
|
<a href=#54>GROUP</a>
|
|
<p>
|
|
Orientation siehe <a href=#29>ADD</a>-Befehl.
|
|
<p>
|
|
Mit CUT und PASTE lassen sich Teile einer Zeichnung/Bibliothek kopieren,
|
|
auch in eine andere Zeichnung/Bibliothek.
|
|
<p>
|
|
Dabei ist folgendes zu beachten:
|
|
<ul>
|
|
<li>Von und nach Devices ist kein CUT/ PASTE möglich.
|
|
<li>Elemente und Signale können nur von Platine zu Platine kopiert werden.
|
|
<li>Elemente, Busse und Netze können nur von Schaltplan zu Schaltplan kopiert werden.
|
|
<li>Pads und Smds können nur von Package zu Package kopiert werden.
|
|
<li>Pins können nur von Symbol zu Symbol kopiert werden.
|
|
<li>Elemente, Signale, Pads, Smds und Pins erhalten einen neuen Namen, falls ihr bisheriger Name in der neuen Zeichnung (bzw. im Symbol oder Package) schon existiert.
|
|
<li>Busse behalten ihren Namen.
|
|
<li>Netze behalten ihren Namen, falls es ein Label oder ein Supply-Symbol an einem der Netz-Segmente gibt. Andernfalls wird ein neuer Name generiert, sofern der bisherige Name schon vorhanden ist.
|
|
</ul>
|
|
Befinden sich in der mit PASTE einzufügenden Zeichnung modifizierte Devices oder Packages,
|
|
die in einer älteren Version schon im Schaltplan oder im Layout verwendet wurden, wird
|
|
automatisch ein <a href=#101>Library-Update</a> gestartet, um die Elemente
|
|
durch die neueren aus dem PASTE-Puffer zu ersetzen.
|
|
<b>Achtung: Nach einem Library Update sollten Sie immer einen <a href=#46>Design Rule Check</a> (DRC)
|
|
und einen <a href=#48>Electrical Rule Check</a> (ERC) durchführen!</b>
|
|
|
|
|
|
<a name=75>
|
|
<h1>PIN</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Anschlusspunkte in Symbolen definieren.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>PIN 'name' options •..</tt>
|
|
<dt>
|
|
<b>Maustasten</b>
|
|
<dd>
|
|
<mb>Rechte</mb> dreht den Pin.<br>
|
|
<mb>Shift+Rechte</mb> kehrt die Richtung der Drehung um.
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#68>NAME</a>,
|
|
<a href=#93>SHOW</a>,
|
|
<a href=#36>CHANGE</a>
|
|
<h2>Options</h2>
|
|
Die options teilen sich in folgende Gruppen auf:
|
|
<p>
|
|
Direction<br>
|
|
Function<br>
|
|
Length<br>
|
|
Orientation<br>
|
|
Visible<br>
|
|
Swaplevel
|
|
<h3>Direction</h3>
|
|
Die logische Richtung des Signalflusses. Sie ist für den Electrical
|
|
Rule Check (siehe ERC-Befehl) und für die automatische Verdrahtung
|
|
der Stromversorgungs-Pins von Bedeutung. Möglich sind:
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td>NC </td><td width=20><td>not connected</td></tr>
|
|
<tr><td>In </td><td width=20><td>Eingang</td></tr>
|
|
<tr><td>Out </td><td width=20><td>Ausgang (totem-pole)</td></tr>
|
|
<tr><td>I/O </td><td width=20><td>Ein-/Ausgang (bidirektional)</td></tr>
|
|
<tr><td>OC </td><td width=20><td>Open Collector oder Open Drain</td></tr>
|
|
<tr><td>Hiz </td><td width=20><td>High-Impedance(3-State)-Ausgang</td></tr>
|
|
<tr><td>Pas </td><td width=20><td>passiv (für Widerstände, Kondensatoren etc.)</td></tr>
|
|
<tr><td>Pwr </td><td width=20><td>Power-Pin (Vcc, Gnd, Vss ...), Stromversorgungs-Eingang</td></tr>
|
|
<tr><td>Sup </td><td width=20><td>Stromversorgungs-Ausgang, z.B. Massesymbol.</td></tr>
|
|
</table>
|
|
<p>
|
|
Default: I/O
|
|
<p>
|
|
Wenn Pwr-Pins in einem Symbol vorhanden sind und im Schaltplan ein
|
|
entsprechender Sup-Pin existiert, werden die Netze automatisch
|
|
eingefügt. Sup-Pins werden nicht in Bauelementen verwendet.
|
|
<h3>Function</h3>
|
|
Die grafische Darstellung des Pins. Möglich sind:
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td>None </td><td width=20><td>keine spezielle Funktion</td></tr>
|
|
<tr><td>Dot </td><td width=20><td>Invertier-Symbol</td></tr>
|
|
<tr><td>Clk </td><td width=20><td>Taktsymbol</td></tr>
|
|
<tr><td>DotClk </td><td width=20><td>Invertiertes Taktsymbol</td></tr>
|
|
</table>
|
|
<p>
|
|
Default: None
|
|
<h3>Length</h3>
|
|
Die Länge des Pin-Symbols. Möglich sind:
|
|
<p>
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td>Point </td><td width=20><td>Pin wird ohne Linie und Beschriftung dargestellt</td></tr>
|
|
<tr><td>Short </td><td width=20><td>Linie ist 0.1 Zoll lang</td></tr>
|
|
<tr><td>Middle </td><td width=20><td>Linie ist 0.2 Zoll lang</td></tr>
|
|
<tr><td>Long </td><td width=20><td>Linie ist 0.3 Zoll lang</td></tr>
|
|
</table>
|
|
<p>
|
|
Default: Long
|
|
<h3>Orientation</h3>
|
|
Die Lage des Pins. Beim Plazieren lassen sich Pins mit der rechten
|
|
Maustaste rotieren. Der Parameter "orientation" ist für
|
|
die textuelle Eingabe des Pin-Befehls erforderlich, z. B. in Script-Dateien.
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td>R0 </td><td width=20><td>Pin-Symbol rechts</td></tr>
|
|
<tr><td>R90 </td><td width=20><td>Pin-Symbol oben</td></tr>
|
|
<tr><td>R180 </td><td width=20><td>Pin-Symbol links</td></tr>
|
|
<tr><td>R270 </td><td width=20><td>Pin-Symbol unten</td></tr>
|
|
</table>
|
|
<p>
|
|
Default: R0
|
|
<h3>Visible</h3>
|
|
Dieser Parameter bestimmt, ob der Pin- und/oder Pad-Name im Schaltplan
|
|
sichtbar sein soll.
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td>Both </td><td width=20><td>Pin- und Pad-Name sind im Schaltplan sichtbar</td></tr>
|
|
<tr><td>Pad </td><td width=20><td>nur der Pad-Name ist im Schaltplan sichtbar</td></tr>
|
|
<tr><td>Pin </td><td width=20><td>nur der Pin-Name ist im Schaltplan sichtbar</td></tr>
|
|
<tr><td>Off </td><td width=20><td>weder Pin- noch Pad-Name im Schaltplan sichtbar</td></tr>
|
|
</table>
|
|
<p>
|
|
Default: Both
|
|
<h3>Swaplevel</h3>
|
|
Zahl zwischen 0 und 255. Die Zahl 0 bedeutet, dass der Pin nicht
|
|
gegen einen anderen desselben Gates ausgetauscht werden darf. Jede
|
|
Zahl, die größer als 0 ist, bedeutet, dass der Pin mit
|
|
solchen Pins ausgetauscht werden kann, die den gleichen Swaplevel
|
|
haben und im selben Symbol definiert sind. Beispiel: Die Eingangs-Pins
|
|
eines NAND-Gatters können beide denselben Swaplevel bekommen,
|
|
da sie äquivalent sind.
|
|
<p>
|
|
Default: 0
|
|
<h2>Anwendung des PIN-Befehls</h2>
|
|
Der PIN-Befehl dient dazu, in einem Symbol die Anschlusspunkte
|
|
für Netze (Pins) zu definieren. Pins werden im Symbols-Layer dargestellt.
|
|
Zusätzliche Informationen erscheinen im Pins-Layer. Mit den options
|
|
lassen sich jedem Pin individuelle Eigenschaften mitgeben. Die options
|
|
dürfen in jeder beliebigen Reihenfolge eingegeben werden, man
|
|
kann sie aber auch ganz weglassen.
|
|
<p>
|
|
Gibt man im PIN-Befehl einen Namen an, dann muss er in Hochkommas
|
|
eingeschlossen sein. Pin-Namen kann man im Symbol-Editier-Modus mit
|
|
dem NAME-Befehl ändern.
|
|
<h2>Namen "hochzählen"</h2>
|
|
Will man beispielsweise Pins mit den Namen D0 bis D7 in einem Symbol
|
|
plazieren, dann setzt man den ersten Pin mit dem Befehl
|
|
<pre>
|
|
PIN 'D0' •
|
|
</pre>
|
|
und alle weiteren nur noch mit je einem Mausklick ab. Der numerische
|
|
Teil des Namens wird dann automatisch weitergezählt.
|
|
<h2>Options mit CHANGE einstellen</h2>
|
|
Alle options lassen sich auch mit dem CHANGE-Befehl voreinstellen.
|
|
Sie bleiben so lange erhalten, bis sie entweder mit dem PIN- oder
|
|
dem CHANGE-Befehl wieder geändert werden.
|
|
<p>
|
|
Der SHOW-Befehl zeigt den Namen des Pins sowie Direction und
|
|
Swaplevel an.
|
|
<h2>Pin rotieren</h2>
|
|
Bewegt man einen Pin mit dem MOVE-Befehl, dann rotiert die rechte
|
|
Maustaste den Pin.
|
|
<h2>Gleiche Pin-Namen</h2>
|
|
Wenn Sie Bausteine definieren wollen, die mehrere Pins mit gleichem
|
|
Namen haben, dann gehen Sie folgendermaßen vor:
|
|
<p>
|
|
Drei Pins sollen z.B. GND heißen. Sie geben den Pins bei der
|
|
Symbol-Definition die Namen GND@1, GND@2 und GND@3. Im Schaltplan sind
|
|
nur die Zeichen vor dem "@" sichtbar, und die Pins werden dort auch so
|
|
behandelt, als hießen Sie GND.
|
|
<p>
|
|
Es ist nicht möglich, in einem Symbol, das in einem Device verwendet
|
|
wird, nachträglich einen Pin hinzuzufügen oder zu löschen,
|
|
da dies die im Device definierten Pin-/Pad-Zuordnungen (CONNECT-Befehl)
|
|
verändern würde.
|
|
<h2>Pin-Beschriftung</h2>
|
|
Die Position der Pin- und Pad-Namen in einem Schaltplansymbol ist
|
|
relativ zum Pin-Aufhängepunkt festgelegt und kann nicht verändert
|
|
werden. Ebenso ist die Schrifthöhe für Pin- und Pad-Namen
|
|
fest eingestellt (60 Mil). Bitte orientieren Sie sich beim Definieren
|
|
neuer Symbole an den Größenverhältnissen der in den mitgelieferten
|
|
Bibliotheken vorhandenen Bausteine.
|
|
<h2>Negierte Pins</h2>
|
|
Der Name eines negierten Pins ("active low") kann überstrichen dargestellt werden,
|
|
wenn ihm ein Ausrufezeichen (<tt>'!'</tt>) vorangestellt wird, wie in
|
|
<pre>
|
|
!RESET
|
|
</pre>
|
|
was als
|
|
<pre>
|
|
_____
|
|
RESET
|
|
</pre>
|
|
dargestellt würde.
|
|
Einzelheiten hierzu finden Sie in der Beschreibung des <a href=#99>TEXT</a>-Befehls.
|
|
|
|
|
|
<a name=76>
|
|
<h1>PINSWAP</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Äquivalente Pins/Pads vertauschen.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>PINSWAP • •..</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#75>PIN</a>
|
|
<p>
|
|
In einem Schaltplan kann man mit diesem Befehl Pins vertauschen, die
|
|
zum selben Device gehören und bei der Symbol-Definition denselben
|
|
Swaplevel erhalten haben (Swaplevel > 0). Swaplevel siehe PIN-Befehl.
|
|
Ist eine Platine über die
|
|
<a href=#341>Back-Annotation</a>
|
|
einem Schaltplan verbunden,
|
|
dann lassen sich Pads nur dann vertauschen, wenn die zugehörigen Pins
|
|
vertauscht werden können.
|
|
<p>
|
|
In einer Platine, zu der es keinen Schaltplan gibt, lassen sich mit
|
|
zwei Pads desselben Package vertauschen. Der Swaplevel
|
|
wird dabei nicht geprüft.
|
|
<p>
|
|
Die an den vertauschten Pads angeschlossenen Leitungen wandern
|
|
mit, so dass es zu Kurzschlüssen kommen kann. Bitte DRC durchführen
|
|
und, falls erforderlich, Fehler korrigieren.
|
|
|
|
|
|
<a name=77>
|
|
<h1>POLYGON</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Zeichnen von Polygonflächen.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>POLYGON [signal_name] [width] • [curve | @radius] • •..</tt>
|
|
<dt>
|
|
<b>Maustasten</b>
|
|
<dd>
|
|
<mb>Mittlere</mb> wählt den Layer.<br>
|
|
<mb>Rechte</mb> ändert den Knickwinkel (siehe <a href=#92>SET Wire_Bend</a>).
|
|
<mb>Shift+Rechte</mb> kehrt die Richtung des Weiterschaltens des Knickwinkels um.<br>
|
|
<mb>Ctrl+Rechte</mb> schaltet zwischen korrespondierenden Knickwinkeln hin und her.<br>
|
|
<mb>Ctrl+Linke</mb> beim Absetzen eines Wire-Endpunktes definiert den Kreisbogen-Radius.<br>
|
|
<mb>Linke</mb> zweimal an der gleichen Stelle schließt das Polygon.
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#36>CHANGE</a>,
|
|
<a href=#43>DELETE</a>,
|
|
<a href=#81>RATSNEST</a>,
|
|
<a href=#87>RIPUP</a>,
|
|
<a href=#106>WIRE</a>,
|
|
<a href=#66>MITER</a>
|
|
<p>
|
|
Der POLYGON-Befehl dient zum Zeichnen von Polygonflächen. Polygone
|
|
in den Layern Top, Bottom und Route2..15 werden als Signale behandelt.
|
|
Polygone in den Layern t/b/vRestrict sind Sperrflächen für den Autorouter.
|
|
<p>
|
|
Wird der <i>curve</i> oder <i>@radius</i> Parameter angegeben, so kann ein Kreisbogen als Teil der Polygondefinition
|
|
gezeichnet werden (siehe die ausführliche Beschreibung beim <a href=#106>WIRE</a>-Befehl).
|
|
<h2>Anmerkung</h2>
|
|
Sie sollten es vermeiden, sehr kleine Werte für die <i>width</i> eines
|
|
Polygons zu verwenden, da dies zu extrem großen Datenmengen führen kann,
|
|
wenn die Zeichnung mit dem <a href=#113>CAM Prozessor</a>
|
|
ausgegeben wird.<br>
|
|
Die Polygon-<i>width</i> sollte immer größer sein als die physikalische
|
|
Auflösung des Ausgabegeräts. Zum Beispiel sollte bei einem Gerber
|
|
Fotoplotter mit einer typischen Auflösung von 1 Mil die Polygon <i>width</i>
|
|
nicht kleiner als zum Beispiel 6 Mil gewählt werden. Im allgemeinen sollte
|
|
die Polygon <i>width</i> in der selben Größenordnung liegen wie die
|
|
der übrigen Wires.
|
|
<p>
|
|
Falls Sie dem Polygon einen Namen geben wollen, der mit einer Ziffer beginnt
|
|
(zum Beispiel <tt>0V</tt>), so müssen Sie diesen Namen in Hochkommas einschließen,
|
|
um ihn von einem <i>width</i>-Wert zu unterscheiden.
|
|
<p>
|
|
Die Parameter <tt>Isolate</tt> und <tt>Rank</tt> sind nur für Polygone in den Signallayern
|
|
Top...Bottom relevant.
|
|
<h2>Urzustand und freigerechneter Zustand</h2>
|
|
Für Polygone, die Bestandteil eines Signals sind, gibt es zwei verschiedene
|
|
Zustände:
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td>1. Outlines: </td><td width=20><td>"Urzustand", also die Form in der sie vom Benutzer definiert worden sind (Umrisslinien)</td></tr>
|
|
<tr><td>2. Real mode: </td><td width=20><td>"freigerechneter" Zustand, also die Form wie sie vom Programm berechnet wird.</td></tr>
|
|
</table>
|
|
<p>
|
|
Im "Urzustand" werden Polygone mit gepunkteten Wires dargestellt, um sie von
|
|
anderen Wires unterscheiden zu können.
|
|
In der Board-Datei (name.brd) ist nur der Urzustand abgespeichert.
|
|
<p>
|
|
Standardmäßig werden alle Polygone am Bildschirm im Urzustand
|
|
dargestellt, da das Freirechnen ein rechenintensiver und damit
|
|
zeitaufwendiger Vorgang ist. Es werden dabei nur die vom Benutzer
|
|
definierten Umrisslinien dargestellt.
|
|
<p>
|
|
Bei der Ausgabe mit dem CAM-Prozessor werden auf jeden Fall alle
|
|
Polygone freigerechnet.
|
|
<p>
|
|
Das Freirechnen der Polygone wird mit dem
|
|
<a href=#81>RATSNEST</a>-Befehl ausgelöst
|
|
(mit <tt><a href=#92>SET</a> POLYGON_RATSNEST OFF;</tt> kann das
|
|
verhindert werden).
|
|
Ein Klick auf das Stop-Icon bricht das Freirechnen ab.
|
|
Alle bis dahin freigerechneten Polygone liegen dann im freigerechneten Zustand vor,
|
|
alle anderen (auch das gerade in der Berechnung befindliche!) liegen
|
|
im Urzustand vor.
|
|
<p>
|
|
Ein freigerechnetes Polygon kann durch Anklicken mit dem
|
|
<a href=#87>RIPUP</a>-Befehl
|
|
wieder in den Urzustand zurückversetzt werden.
|
|
<p>
|
|
Bei CHANGE-Operationen wird ein Polygon neu freigerechnet, wenn es vor
|
|
dem CHANGE bereits freigerechnet war.
|
|
<h2>Andere Befehle und Polygone</h2>
|
|
Polygone werden an den Kanten selektiert (wie normale Wires)
|
|
<p>
|
|
SPLIT: fügt neue Polygonkanten ein.
|
|
<p>
|
|
DELETE: löscht eine Polygon-Ecke (falls nur noch drei Ecken vorhanden
|
|
sind, wird das ganze Polygon gelöscht).
|
|
<p>
|
|
CHANGE LAYER: ändert den Layer des gesamten Polygons.
|
|
<p>
|
|
CHANGE WIDTH: ändert den Parameter Width des gesamten Polygons.
|
|
<p>
|
|
MOVE: bewegt Polygonkante oder -ecke (wie bei normalen Wire-Zügen).
|
|
<p>
|
|
COPY: kopiert ganzes Polygon.
|
|
<p>
|
|
NAME: Falls das Polygon in einem Signal-Layer liegt, wird der Name
|
|
des Signals geändert.
|
|
<h2>Polygon-Parameter</h2>
|
|
<h3>Width</h3>
|
|
Linienbreite der Polygonkanten. Wird auch zum Ausfüllen
|
|
verwendet.
|
|
<h3>Layer</h3>
|
|
Polygone können in jeden Layer gezeichnet werden.
|
|
Polygone in Signal-Layern sind Bestandteil eines Signals und werden
|
|
'freigestellt', d.h. potentialfremde Anteile werden 'abgezogen'.
|
|
Polygone in Signallayern gehören zu einem Signal und halten Mindestabstände zu anderen
|
|
Signalen, die in den Design Rules oder über die Netzklasse definiert wurden, ein.
|
|
Von Polygonen im Top-Layer werden auch Objekte im Layer tRestrict
|
|
abgezogen (entsprechendes gilt für Bottom und bRestrict). Damit ist es
|
|
z. B. möglich, eine negative Beschriftung innerhalb einer Massefläche
|
|
zu erzeugen.
|
|
<h3>Pour</h3>
|
|
Füllmodus (Solid = ganz gefüllt [Default], Hatch
|
|
= schraffiert).
|
|
<h3>Rank</h3>
|
|
Legt fest wie Polygone voneinander subtrahiert werden. Polygone mit einem
|
|
niedrigeren 'Rank' "erscheinen zuerst" (haben eine höhere Priorität) und werden somit
|
|
von Polygonen mit einem höheren 'Rank' abgezogen.<br>
|
|
Für Polygone in Signallayern (im Layout gezeichnet) sind die Werte <tt>1..6</tt> erlaubt,
|
|
für Polygone in Packages die Werte <tt>0</tt> oder <tt>7</tt>.
|
|
Polygone mit gleichem Rank werden vom <a href=#46>Design Rule Check</a> gegeneinander
|
|
geprüft. Der Parameter 'Rank' ist nur für Polygone in Signallayern (<tt>1..16</tt>) relevant
|
|
und wird von Polygonen in anderen Layern ignoriert. Der Standardwert ist <tt>1</tt> für
|
|
Signal-Polygone und <tt>7</tt> für Package-Polygone.
|
|
<h3>Thermals</h3>
|
|
Bestimmt wie potentialgleiche Pads und Smds angeschlossen werden
|
|
(On = es werden Thermals generiert [default], Off = keine Thermals).
|
|
<h3>Spacing</h3>
|
|
Abstand der Füll-Linien bei Pour=Hatch (Default:
|
|
50 Mil).
|
|
<h3>Isolate</h3>
|
|
Abstand der freigestellten Polygonkanten zu potentialfremdem
|
|
Kupfer bzw. Objekten im Dimension-Layer (default: 0). Dieser Wert ist nur dann
|
|
maßgeblich, wenn er größer ist als der jeweilige Wert in den Design Rules.
|
|
Siehe auch <a href=#133>Design Rules</a> unter <b>Distance</b> bzw. <b>Supply</b>.
|
|
<h3>Orphans</h3>
|
|
Beim Freistellen von Polygonen kann es passieren,
|
|
dass das ursprüngliche Polygon in mehrere Teile zerfällt.
|
|
Falls sich in einem solchen Teil kein Aufhängepunkt eines Objektes des zugehörigen
|
|
Signals befindet, entsteht eine 'Insel' ohne elektrische Verbindung
|
|
zum zugehörigen Signal. Sollen solche Inseln (oder 'verwaiste'
|
|
Flächen) erhalten bleiben, ist der Parameter Orphans auf
|
|
On zu setzen. Bei Orphans = Off [default] werden sie eliminiert.
|
|
Besteht ein Signal nur aus Polygonen und hat keine anderen, elektrisch angeschlossenen
|
|
Objekte, so werden alle Teile unabhängig von der Einstellung des Parameters Orphans
|
|
dargestellt.
|
|
<p>
|
|
Unter gewissen Umständen, insbesondere mit Orphans = Off, kann ein
|
|
Polygon vollständig verschwinden.
|
|
In diesem Fall werden auf dem Bildschirm die Linien im Urzustand
|
|
dargestellt um es dem Benutzer zu ermöglichen, das Polygon zu löschen
|
|
oder anderweitig zu verändern.
|
|
Mit dem Drucker oder dem CAM-Prozessor werden diese Linien nicht ausgegeben,
|
|
um keine Kurzschlüsse zu verursachen.
|
|
Ein Polygon wird auch dann in seinem Urzustand dargestellt, wenn das Signal
|
|
andere nicht-Polygon-Objekte enthält, von denen keines mit dem Polygon verbunden
|
|
ist.
|
|
<h2>Stegbreite bei Thermals</h2>
|
|
Die Breite der Stege bei Thermals ist:
|
|
<ul>
|
|
<li>bei Pads gleich dem halben Bohrdurchmesser des Pads,
|
|
<li>bei Smds gleich der Hälfte der kleineren Kante,
|
|
<li>mindestens gleich der Linienbreite (Width) des Polygons,
|
|
<li>maximal zweimal die Linienbreite (Width) des Polygons.
|
|
</ul>
|
|
<h2>Konturdaten</h2>
|
|
Der Signalname _OUTLINES_ gibt dem Polygon besondere Eigenschaften,
|
|
die man zur Erzeugung von <a href=#130>Konturdaten</a> (z. B.
|
|
zum Fräsen von Prototypen) benötigt. Dieser Name sollte ansonsten nicht
|
|
verwendet werden.
|
|
<h2>Schraffierte Polygone und Luftlinien</h2>
|
|
Abhängig vom Wert des <i>spacing</i>-Parameters können Pads, Smds, Vias und Wires
|
|
innerhalb eines schraffierten Polygons, die zum selben Signal gehören wie das
|
|
Polygon, durch das Raster fallen, und erhalten daher Luftlinien um Ihre Verbindung
|
|
zu dem Signal anzuzeigen.
|
|
<p>
|
|
Bei der Beurteilung, ob ein solches Objekt tatsächlich eine solide Verbindung
|
|
zum schraffierten Polygon hat, wird das Objekt auf einige "Kontrollpunkte" reduziert.
|
|
Für ein rundes Pad wären das zum Beispiel der nördliche, östliche, westliche
|
|
und südliche Punkt auf seinem Umfang. Für einen Wire wären es seine beiden
|
|
Endpunkte. Eine solide Verbindung besteht dann, wenn es im berechneten Polygon
|
|
mindestens eine Linie (Umriß- oder Schraffurlinie) gibt, deren Mittellinie durch
|
|
diese Punkte verläuft.
|
|
<p>
|
|
Thermal- und Annulus-Ringe innerhalb eines schraffierten Polygons, die
|
|
keinen soliden Kontakt zu den Polygon-Linien haben, werden nicht erzeugt.
|
|
|
|
|
|
<a name=78>
|
|
<h1>PREFIX</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Präfix für Schaltzeichen festlegen.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>PREFIX prefix_string;</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#40>CONNECT</a>,
|
|
<a href=#72>PACKAGE</a>,
|
|
<a href=#103>VALUE</a>
|
|
<p>
|
|
Dieser Befehl wird im Device-Editier-Modus angewendet. Er legt fest,
|
|
mit welchem Zeichen oder welcher Zeichenfolge der automatisch
|
|
vergebene Name beginnen soll, wenn das Element mit dem ADD-Befehl
|
|
im Schaltplan plaziert wird.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
PREFIX U;
|
|
</pre>
|
|
Wird dieser Befehl ausgeführt, während man das Device 7400
|
|
editiert, dann bekommen später die mit ADD im Schaltplan plazierten
|
|
NAND-Gatter die Namen U1, U2, U3 und so weiter. Diese Namen lassen
|
|
sich mit dem NAME-Befehl ändern.
|
|
|
|
|
|
<a name=79>
|
|
<h1>PRINT</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Druckt eine Zeichnung auf dem System-Drucker aus.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>PRINT [factor] [-limit] [options] [;]</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#113>CAM-Prozessor</a>,
|
|
<a href=#109>Drucken auf dem System-Drucker</a>
|
|
<p>
|
|
Der PRINT-Befehl druckt die gerade editierte Zeichnung auf dem
|
|
System-Drucker aus.
|
|
<p>
|
|
Farben und Füllmuster werden aus dem Editor-Fenster übernommen, falls
|
|
nicht die Optionen <tt>SOLID</tt> oder <tt>BLACK</tt> angegeben werden.
|
|
Als Farbpalette wird beim Ausdruck immer diejenige für weißen Hintergrund verwendet.
|
|
<p>
|
|
Wenn Sie Pads und Vias "ausgefüllt" drucken wollen (ohne sichtbare Bohrlöcher),
|
|
benutzen Sie den Befehl
|
|
<pre>
|
|
<a href=#92>SET</a> DISPLAY_MODE NODRILL;
|
|
</pre>
|
|
<b>Bitte beachten Sie, dass Polygone in Platinen beim Ausdrucken mit dem
|
|
PRINT-Befehl nicht automatisch freigerechnet werden! Es werden lediglich die
|
|
Umrisse dargestellt. Um die Polygone freigerechnet auszudrucken führen Sie
|
|
bitte vorher den <a href=#81>RATSNEST</a>-Befehl aus</b>.
|
|
<p>
|
|
Es kann ein <tt>factor</tt> angegeben werden um die Ausgabe zu skalieren.
|
|
<p>
|
|
Mit dem Parameter <tt>limit</tt> kann die maximale Anzahl von Blättern
|
|
angegeben werden, die für die Ausgabe verwendet werden soll.
|
|
Diese Zahl muss mit einem vorangestellten <tt>'-'</tt> angegeben werden,
|
|
um sie vom <tt>factor</tt> unterscheiden zu können.
|
|
Sollte die Zeichnung nicht auf die vorgegebene Anzahl von Blättern passen,
|
|
so wird der <tt>factor</tt> so lange verkleinert, bis sie gerade noch passt.
|
|
Setzen Sie diesen Parameter auf <tt>-0</tt> um beliebig viele Blätter zuzulassen
|
|
(und damit sicherzustellen, dass der Ausdruck genau mit dem angegebenen Faktor
|
|
skaliert wird).
|
|
<p>
|
|
Wird der PRINT-Befehl nicht mit einem <tt>';'</tt> abgeschlossen, so
|
|
erscheint ein <a href=#110>Druck-Dialog</a> in dem
|
|
alle Druck-Optionen eingestellt werden können.
|
|
Bitte beachten Sie, dass Optionen, die über die Kommandozeile eingegeben wurden,
|
|
nur dann dauerhaft in den Druckeinstellungen gespeichert werden, wenn sie über
|
|
den <a href=#110>Druck-Dialog</a> bestätigt wurden (d.h. wenn der
|
|
Befehl nicht mit einem <tt>';'</tt> abgeschlossen wurde).
|
|
<p>
|
|
Folgende <tt>options</tt> stehen zur Verfügung:
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>MIRROR</tt> </td><td width=20><td>spiegelt die Ausgabe</td></tr>
|
|
<tr><td><tt>ROTATE</tt> </td><td width=20><td>dreht die Ausgabe um 90°</td></tr>
|
|
<tr><td><tt>UPSIDEDOWN</tt> </td><td width=20><td>dreht die Ausgabe um 180°. Zusammen mit <tt>ROTATE</tt>, wird die Zeichnung um insgesamt 270° gedreht</td></tr>
|
|
<tr><td><tt>BLACK</tt> </td><td width=20><td>ignoriert die Farbeinstellungen der Layer und zeichnet alles in Schwarz</td></tr>
|
|
<tr><td><tt>SOLID</tt> </td><td width=20><td>ignoriert die Füllmuster der Layer und zeichnet alles voll ausgefüllt</td></tr>
|
|
<tr><td><tt>CAPTION</tt> </td><td width=20><td>druckt eine Bildunterschrift</td></tr>
|
|
<tr><td><tt>FILE</tt> </td><td width=20><td>leitet die Ausgabe in eine Datei um; der Dateiname muss unmittelbar nach dieser Option folgen</td></tr>
|
|
<tr><td><tt>PRINTER</tt> </td><td width=20><td>druckt auf einen bestimmten Drucker; der Druckername muss unmittelbar nach dieser Option folgen</td></tr>
|
|
<tr><td><tt>PAPER</tt> </td><td width=20><td>druckt auf das angegebene Papierformat; das Papierformat muss unmittelbar nach dieser Option folgen</td></tr>
|
|
<tr><td><tt>SHEETS</tt> </td><td width=20><td>druckt den angegebenen Bereich von Schaltplanseiten; der Bereich (von-bis) muss unmittelbar nach dieser Option folgen</td></tr>
|
|
<tr><td><tt>WINDOW</tt> </td><td width=20><td>druckt den momentan sichtbaren Ausschnitt der Zeichnung</td></tr>
|
|
<tr><td><tt>PORTRAIT</tt> </td><td width=20><td>druckt in Hochformat</td></tr>
|
|
<tr><td><tt>LANDSCAPE</tt> </td><td width=20><td>druckt in Querformat</td></tr>
|
|
</table>
|
|
<p>
|
|
Wird einer der <tt>options</tt> <tt>MIRROR</tt>...<tt>CAPTION</tt> ein <tt>'-'</tt> vorangestellt, so wird diese Option ausgeschaltet,
|
|
falls sie zur Zeit eingeschaltet ist (von einem vorhergehenden PRINT).
|
|
Ein <tt>'-'</tt> allein schaltet alle <tt>options</tt> aus.
|
|
<h2>Drucken in eine Datei</h2>
|
|
Die <tt>FILE</tt> Option kann dazu benutzt werden in eine Datei zu drucken.
|
|
Falls diese Option angegeben wird, muss der Dateiname unmittelbar nach ihr folgen.
|
|
<p>
|
|
Hat der Dateiname die Extension <tt>".pdf"</tt> (wobei die Groß-/Kleinschreibung keine Rolle spielt),
|
|
so wird eine PDF-Datei erzeugt. Eine PDF-Datei kann auch durch Auswahl von "In Datei drucken (PDF)"
|
|
aus der "Drucker" Combo-Box im <a href=#110>Druck-Dialog</a> erzeugt werden.
|
|
Texte in einer PDF-Datei können in einem PDF-Betrachter durchsucht werden, solange
|
|
sie nicht den Vektor-Font verwenden.
|
|
<p>
|
|
Hat der Dateiname die Extension <tt>".ps"</tt> (wobei die Groß-/Kleinschreibung keine Rolle spielt),
|
|
so wird eine Postscript-Datei erzeugt.
|
|
<p>
|
|
Besteht der Dateiname nur aus einem <tt>"*"</tt> oder <tt>"*.ext"</tt> (ein Stern gefolgt von einer
|
|
Extension, wie etwa <tt>"*.pdf"</tt>), so wird ein Datei-Dialog geöffnet über den der Benutzer
|
|
den tatsächlichen Dateinamen auswählen oder eingeben kann.
|
|
<p>
|
|
Besteht der Dateiname nur aus einer Extension, wie etwa <tt>".pdf"</tt>, so wird der Name
|
|
der Ausgabedatei aus dem Namen der Zeichnungsdatei gebildet, indem dessen Extension durch
|
|
den angegebenen String ersetzt wird.
|
|
<p>
|
|
Der Dateiname kann einen oder mehrere der folgenden Platzhalter enthalten, die
|
|
durch den entsprechenden Text ersetzt werden:
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>%E</tt> </td><td width=20><td>die Extension der geladenen Datei (ohne den <tt>'.'</tt>)</td></tr>
|
|
<tr><td><tt>%N</tt> </td><td width=20><td>der Name der geladenen Datei (ohne Pfad und Extension)</td></tr>
|
|
<tr><td><tt>%P</tt> </td><td width=20><td>Verzeichnis-Pfad der geladenen Datei (ohne Dateinamen)</td></tr>
|
|
<tr><td><tt>%%</tt> </td><td width=20><td>das Zeichen <tt>'%'</tt></td></tr>
|
|
</table>
|
|
<p>
|
|
Zum Beispiel würde der Dateiname
|
|
<p>
|
|
<tt>%N.cmp.pdf</tt>
|
|
<p>
|
|
den Namen <tt><i>boardname</i>.cmp.pdf</tt> erzeugen.
|
|
<p>
|
|
Wurde sowohl die <tt>FILE</tt> als auch die <tt>PRINTER</tt> Option angegeben, so wird
|
|
nur die zuletzt angegebene berücksichtigt.
|
|
<h2>Auf eine bestimmte Papiergröße drucken</h2>
|
|
Die <tt>PAPER</tt>-Option gibt an, auf welche Papiergröße gedruckt werden soll.
|
|
Ihr muss unmittelbar einer der Namen für Papiergrößen folgen, die in der Combo-Box
|
|
<i>Papier</i> des Drucken-Dialogs aufgelistet sind, wie etwa <tt>A4</tt>, <tt>Letter</tt> etc.
|
|
Soll eine benutzerdefinierte Papiergröße benutzt werden, so muss diese im Format
|
|
<pre>
|
|
Breite x Höhe Einheit
|
|
</pre>
|
|
(ohne Leerzeichen) angegeben werden, wie in
|
|
<pre>
|
|
PRINT PAPER 200x300mm
|
|
PRINT PAPER 8.0x11.5inch
|
|
</pre>
|
|
<i>Breite</i> und <i>Höhe</i> können Dezimalzahlen sein, und die <i>Einheit</i>
|
|
ist entweder <tt>mm</tt> oder <tt>inch</tt> (letztere kann abgekürzt werden als <tt>in</tt>).
|
|
Papiernamen müssen vollständig angegeben werden, wobei die Groß-/Kleinschreibung keine Rolle spielt.
|
|
Wird sowohl die <tt>PRINTER</tt>- als auch die <tt>PAPER</tt>-Option benutzt, muss die <tt>PRINTER</tt>-Option
|
|
zuerst angegeben werden.
|
|
Benutzerdefinierte Papiergrößen funktionieren nicht unbedingt mit allen Druckern. Sie sind hauptsächlich
|
|
für die Ausgabe in Postscript- bzw. PDF-Dateien gedacht.
|
|
<h2>Einen Bereich von Schaltplanseiten drucken</h2>
|
|
Mit der <tt>SHEETS</tt> Option kann ein ausgewählter Bereich von Schaltplanseiten
|
|
gedruckt werden.
|
|
Der Bereich wird in Form von zwei Zahlen angegeben, die durch <tt>'-'</tt>
|
|
getrennt werden, etwa <tt>2-15</tt>.
|
|
Ohne diese Option wird nur die aktuell im Editor befindliche Seite gedruckt.
|
|
Um alle Seiten auszudrucken, kann der Bereich <tt>ALL</tt> benutzt werden (wobei
|
|
Groß-/Kleinschreibung egal ist, das Wort aber voll ausgeschrieben werden muss).
|
|
Ein Bereich kann auch aus einer einzelnen Zahl bestehen, etwa <tt>42</tt>, wodurch
|
|
genau diese Seite gedruckt wird.
|
|
Ist kein Schaltplan geladen, so hat diese Option keine Bedeutung.
|
|
<h2>Beispiele</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>PRINT</tt> </td><td width=20><td>öffnet den <a href=#110>Print Dialog</a> für die Eingabe der Druckeinstellungen</td></tr>
|
|
<tr><td><tt>PRINT;</tt> </td><td width=20><td>druckt die Zeichnung ohne weiteren Dialog, mit default Einstellungen</td></tr>
|
|
<tr><td><tt>PRINT - MIRROR BLACK SOLID;</tt> </td><td width=20><td>druckt die Zeichnung gespiegelt, alles in Schwarz und voll ausgefüllt</td></tr>
|
|
<tr><td><tt>PRINT 2.5 -1;</tt> </td><td width=20><td>druckt die Zeichnung um den Faktor 2.5 vergrößert, wobei aber sichergestellt wird, dass nicht mehr als <b>ein</b> Blatt verwendet wird</td></tr>
|
|
<tr><td><tt>PRINT FILE .pdf;</tt> </td><td width=20><td>druckt die Zeichnung in eine PDF-Datei mit dem gleichen Namen wie die Zeichnungsdatei</td></tr>
|
|
<tr><td><tt>PRINT SHEETS 2-15 FILE .pdf;</tt> </td><td width=20><td>druckt die Seiten 2 bis 15 in eine PDF-Datei mit dem gleichen Namen wie die Zeichnungsdatei</td></tr>
|
|
</table>
|
|
|
|
|
|
<a name=80>
|
|
<h1>QUIT</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Beendet die Arbeit mit EAGLE
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>QUIT</tt>
|
|
</dl>
|
|
Dieser Befehl beendet die Arbeit mit EAGLE. Sind seit dem letzten
|
|
Abspeichern der Zeichnung oder der Bibliothek Änderungen vorgenommen
|
|
worden, erscheint ein Popup-Menü, das nachfragt, ob die die Zeichnung
|
|
vorher abgespeichert werden soll. Beantwortet man diese Frage mit
|
|
no (n), dann wird das Programm ohne Abspeichern der Zeichnung
|
|
beendet. Bei Cancel bleibt man im Programm.
|
|
<p>
|
|
Sie können das Programm von jeder Stelle aus mit <i>Alt+X</i> verlassen.
|
|
|
|
|
|
<a name=81>
|
|
<h1>RATSNEST</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Neuberechnen der Luftlinien und Polygone.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>RATSNEST</tt><br>
|
|
<tt>RATSNEST signal_name ..</tt><br>
|
|
<tt>RATSNEST ! signal_name ..</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#94>SIGNAL</a>,
|
|
<a href=#67>MOVE</a>,
|
|
<a href=#77>POLYGON</a>,
|
|
<a href=#87>RIPUP</a>
|
|
<p>
|
|
Der RATSNEST-Befehl berechnet die Luftlinien neu, damit man z. B.
|
|
nach einer Änderung der Bauelemente-Plazierung wieder die kürzesten
|
|
Verbindungen erhält. Auch nach dem Einlesen einer Netzliste (mit
|
|
dem SCRIPT-Befehl) ist es sinnvoll, den RATSNEST-Befehl aufzurufen,
|
|
da dabei im allgemeinen nicht die kürzesten Luftlinien entstehen.
|
|
<p>
|
|
Der RATSNEST-Befehl berechnet auch alle Polygone neu, die zu einem
|
|
Signal gehören. Dies ist notwendig, damit für bereits durch
|
|
Polygonflächen verbundene Pads keine Luftlinien mehr erzeugt werden.
|
|
Alle zugehörigen Polygonflächen sind dann in realer Darstellung zu sehen.
|
|
Auf Umriss-Darstellung kann mit
|
|
dem RIPUP-Befehl gewechselt werden.
|
|
Die automatische Berechnung der Polygone kann mit
|
|
<pre>
|
|
<a href=#92>SET</a> POLYGON_RATSNEST OFF;
|
|
</pre>
|
|
ausgeschaltet werden.<br>
|
|
RATSNEST berechnet keine Luftlinien für Signale, für die es
|
|
einen eigenen Versorgungs-Layer gibt (z.B. Layer $GND für Signal GND),
|
|
es sei denn für Smd-Bauelemente, die an das nächstgelegene GND-Pad
|
|
angeschlossen werden.
|
|
<p>
|
|
Beachten Sie bitte, dass RATSNEST die Board-Zeichnung nicht als verändert
|
|
kennzeichnet, da die berechneten Polygon-Daten (falls vorhanden) nicht
|
|
in der Datei abgespeichert werden, und die neuberechneten Luftlinien
|
|
keine wirkliche Veränderung der Zeichnung darstellen.
|
|
<h2>Luftlinien der Länge Null</h2>
|
|
Enden zwei oder mehr Wires desselben Signals am selben Punkt, aber auf
|
|
unterschiedlichen Layern, und sind die Signale nicht über eine
|
|
Durchkontaktierung verbunden, dann wird eine
|
|
<i>Luftline der Länge Null</i> erzeugt und als X-förmiges Kreuz im Unrouted-Layer
|
|
dargestellt. Dasselbe gilt für gegenüberliegende SMDs (auf Top-
|
|
und Bottom-Layer), die zum selben Signal gehören.
|
|
<p>
|
|
Solche <i>Luftlinen der Länge Null</i> können mit dem
|
|
<a href=#89>ROUTE</a>-Befehl wie andere Luftlinien
|
|
angeklickt werden. Top- und Bottom-Seite können an diesen Stellen auch
|
|
durch Plazieren eines
|
|
<a href=#104>Vias</a> verbunden werden.
|
|
<h2>Überprüfen, ob alles geroutet ist</h2>
|
|
Wenn kein unverdrahtetes Signal mehr vorhanden ist, gibt der
|
|
RATSNEST-Befehl die Meldung
|
|
<pre>
|
|
Ratsnest: Nichts zu tun!
|
|
</pre>
|
|
aus. Andernfalls erscheint die Meldung
|
|
<pre>
|
|
Ratsnest: Luftlinien: xx
|
|
</pre>
|
|
wobei <tt>xx</tt> die Zahl der ungerouteten Luftlinien repräsentiert.
|
|
<h2>Platzhalter</h2>
|
|
Falls der <tt>signal_name</tt>-Parameter angegeben wurde, so sind die Zeichen <tt>'*'</tt>, <tt>'?'</tt>
|
|
und <tt>'[]'</tt> <i>Platzhalter</i> und haben folgende Bedeutung:
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>*</tt> </td><td width=20><td>steht für eine beliebige Anzahl beliebiger Zeichen</td></tr>
|
|
<tr><td><tt>?</tt> </td><td width=20><td>steht für genau ein Zeichen</td></tr>
|
|
<tr><td><tt>[...]</tt></td><td width=20><td>steht für irgend eines der Zeichen zwischen den Klammern</td></tr>
|
|
</table>
|
|
<p>
|
|
Soll eines dieser Zeichen genau so gesucht werden, wie es ist, so muss es in eckige Klammern
|
|
eingeschlossen werden. Zum Beispiel findet <tt>abc[*]ghi</tt> die Zeichenfolge <tt>abc*ghi</tt>,
|
|
aber nicht <tt>abcdefghi</tt>.
|
|
<p>
|
|
Ein Bereich von Zeichen kann als <tt>[a-z]</tt> angegeben werden, was für eines der Zeichen
|
|
aus dem Bereich <tt>'a'</tt>...<tt>'z'</tt> steht.
|
|
<h2>Ausgewählte Luftlinien ausblenden</h2>
|
|
Manchmal kann es sinnvoll sein, die Luftlinien von bestimmten Signalen auszublenden,
|
|
zum Beispiel wenn diese später durch ein Polygon verbunden werden. Typischerweise
|
|
sind dies Versorgungssignale die viele Luftlinien haben, aber nicht explizit
|
|
geroutet werden, und so nur die Luftlinien anderer Signale verdecken.
|
|
<p>
|
|
Um Luftlinien auszublenden kann der RATSNEST-Befehl mit einem Ausrufezeichen
|
|
(<tt>'!'</tt>), gefolgt von einer Liste von Signalnamen, aufgerufen werden:
|
|
<pre>
|
|
RATSNEST ! GND VCC
|
|
</pre>
|
|
Hiermit würden die Luftlinien der Signale <tt>GND</tt> und <tt>VCC</tt> ausgeblendet.<br>
|
|
Um die Luftlinien wieder einzublenden geben Sie einfach den RATSNEST-Befehl ohne
|
|
das Zeichen <tt>'!'</tt> mit der Liste der Signale ein:
|
|
<pre>
|
|
RATSNEST GND VCC
|
|
</pre>
|
|
Damit wird die Anzeige der Luftlinien der Signale <tt>GND</tt> und <tt>VCC</tt>
|
|
aktiviert und diese auch gleich neu berechnet. Auf diese Weise lassen sich auch die
|
|
Luftlinien und Polygone nur für bestimmte Signale neu berechnen.
|
|
<p>
|
|
Die Signalnamen können Platzhalter enthalten, und die beiden Varianten können
|
|
kombiniert werden, wie in
|
|
<pre>
|
|
RATSNEST D* ! ?GND VCC
|
|
</pre>
|
|
womit die Luftlinien aller Signale, deren Namen mit <tt>'D'</tt> beginnen, neu
|
|
berechnet und angezeigt werden, und die Luftlinien der verschiedenen GND-Signale
|
|
(wie AGND, DGND etc.) und des VCC-Signals ausgeblendet werden. Beachten Sie, dass
|
|
der Befehl von links nach rechts abgearbeitet wird, so dass für den Fall, dass es
|
|
ein DGND-Signal gibt, dieses im Beispiel zuerst für die Anzeige neu berechnet wird,
|
|
seine Luftlinien dann aber ausgeblendet werden.
|
|
<p>
|
|
Ausgeblendete Luftlinien werden mit <a href=93>SHOW</a> nicht angezeigt
|
|
und können auch nicht selektiert werden.
|
|
<p>
|
|
Um sicherzustellen, dass alle Luftlinien eingeblendet sind, geben Sie ein
|
|
<pre>
|
|
RATSNEST *
|
|
</pre>
|
|
Beachten Sie, das der <a href=#94>SIGNAL</a>-Befehl automatisch die
|
|
Luftlinien eines Signals einblendet, wenn eine neue Luftlinie für dieses Signal
|
|
erzeugt wird. Der <a href=#87>RIPUP</a>-Befehl hingegen ändert nichts
|
|
an der Sichtbarkeit von Luftlinien, wenn ein Wire eines Signals in eine Luftlinie
|
|
verwandelt wird.
|
|
|
|
|
|
<a name=82>
|
|
<h1>RECT</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Rechteck in eine Zeichnung einfügen.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>RECT [orientation] • •.. </tt>
|
|
<dt>
|
|
<b>Maustasten</b>
|
|
<dd>
|
|
<mb>Mittlere</mb> wählt den Layer.
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#37>CIRCLE</a>
|
|
<p>
|
|
Mit diesem Befehl zeichnet man Rechtecke in den aktiven Layer. Die
|
|
beiden Punkte legen gegenüberliegende Ecken des Rechtecks fest.
|
|
Die mittlere Maustaste wechselt den aktiven Layer.
|
|
<p>
|
|
Die <tt>orientation</tt> (siehe Beschreibung bei <a href=#29>ADD</a>)
|
|
darf jeder Winkel im Bereich <tt>R0</tt>...<tt>R359.9</tt> sein. Das <tt>S</tt>-
|
|
bzw. <tt>M</tt>-Flag kann hier nicht benutzt werden.
|
|
Beachten Sie bitte, dass die Koordinaten immer bezogen auf einen Winkel <tt>R0</tt>
|
|
angegeben werden. Die Möglichkeit der Eingabe eines Winkels beim RECT-Befehl
|
|
ist hauptsächlich für die Benutzung in Scripts vorgesehen, wobei die Daten
|
|
des Rechtecks etwa durch ein User Language Programm aus dem
|
|
<a href=#200>UL_RECTANGLE</a>-Objekt ermittelt wurden.
|
|
Bei interaktiver Eingabe eines Winkels ungleich 0 kann es sein, dass die
|
|
Ecken des Rechtecks nicht an der aktuellen Position des Mauszeigers erscheinen.
|
|
Benutzen Sie den <a href=#88>ROTATE</a>-Befehl um ein Rechteck
|
|
interaktiv zu drehen.
|
|
<h2>Sperrflächen</h2>
|
|
Der RECT-Befehl in den Layern tRestrict, bRestrict und
|
|
vRestrict dient zum Anlegen von Sperrflächen
|
|
für den Autorouter.
|
|
<h2>Nicht Bestandteil von Signalen</h2>
|
|
Rechtecke in den Layer Top, Bottom oder Route2...15 gehören nicht zu Signalen.
|
|
Der DRC meldet deshalb Fehler, wenn sie mit
|
|
Wires, Pads usw. überlappen.
|
|
|
|
|
|
<a name=83>
|
|
<h1>REDO</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Befehl erneut ausführen.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>REDO;</tt>
|
|
<dt>
|
|
<b>Tastatur</b>
|
|
<dd>
|
|
<tt>F10: REDO</tt> REDO-Befehl ausführen.<br>
|
|
<tt>Shift+Alt+BS: REDO</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#100>UNDO</a>,
|
|
<a href=#341>Forward&Back-Annotation</a>
|
|
<p>
|
|
Die mit UNDO rückgängig gemachten Befehle lassen sich mit
|
|
REDO erneut ausführen. Damit kann man ganze Abläufe rekonstruieren.
|
|
Die Befehle EDIT, OPEN, AUTO und REMOVE löschen die Vorgeschichte.
|
|
<p>
|
|
UNDO/REDO ist vollkommen in den Mechanismus der Forward&Back-Annotation
|
|
integriert.
|
|
|
|
|
|
<a name=84>
|
|
<h1>REMOVE</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Löschen von Dateien, Devices, Symbolen, Packages und Schaltplanseiten.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>REMOVE name</tt><br>
|
|
<tt>REMOVE name.Sxx</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#70>OPEN</a>,
|
|
<a href=#85>RENAME</a>
|
|
<h2>Dateien löschen</h2>
|
|
Der REMOVE-Befehl löscht im Platinen- und Schaltplan-Editier-Modus
|
|
die mit <tt>name</tt> angegebene Datei.
|
|
<h2>Devices, Symbole, Packages</h2>
|
|
Im Bibliotheks-Editier-Modus löscht der REMOVE-Befehl aus der
|
|
aktiven Bibliothek das unter dem Namen name gespeicherte Device,
|
|
Symbol oder Package.
|
|
Der Name kann mit einer Erweiterung (z. B. REMOVE name.pac) angegeben werden. Wenn Sie
|
|
den Namen ohne Erweiterung angeben, müssen Sie sich im entsprechenden Editier-Modus
|
|
des Bibliotheks-Editors befinden um ein Objekt zu löschen (z. B. im Package-Editor
|
|
um ein Package zu löschen).
|
|
<p>
|
|
Symbole/Packages lassen sich nur löschen, wenn sie in keinem Device verwendet werden.
|
|
<p>
|
|
Ist ein Symbol, Device oder Package zum Editieren geladen, wirkt der
|
|
Befehl auf den entsprechenden Typ. Ansonsten werden die Namen als
|
|
Device-Namen interpretiert, falls das Schaltplan-Modul vorhanden ist,
|
|
und als Package-Namen, falls kein Schaltplan-Modul vorhanden ist.
|
|
<h2>Schaltplan-Seiten</h2>
|
|
Der REMOVE-Befehl kann auch zum Löschen von Seiten aus einem Schaltplan
|
|
verwendet werden, dabei kann der Name der geladenen Zeichnung entfallen.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
REMOVE .S3
|
|
</pre>
|
|
löscht Seite Nr. 3 aus dem gegenwärtig geladenen Schaltplan.
|
|
<p>
|
|
In der Syntax-Beschreibung entspricht xx der Nummer der zu
|
|
löschenden Seite. Falls xx gleich der Nummer
|
|
der gerade editierten Seite ist, wird Seite Nummer 1 geladen. Alle
|
|
Seiten mit Nummern, die größer sind als xx , erhalten
|
|
eine um 1 verminderte Nummer. Das Löschen einer Seite löscht
|
|
auch den Undo-Puffer und kann daher nicht rückgängig gemacht
|
|
werden! Da alle Seiten eines Schaltplans in einer Datei gespeichert
|
|
sind (name.sch), kann beim versehentlichen Löschen einer Seite
|
|
aber immer noch auf die alte Version zurückgegriffen werden -
|
|
falls die gerade editierte Version nach dem Löschen der Seite
|
|
nicht zurückgeschrieben wurde!
|
|
<p>
|
|
REMOVE löscht den Undo-Puffer.
|
|
|
|
|
|
<a name=85>
|
|
<h1>RENAME</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Symbole, Devices oder Packages in einer Bibliothek umbenennen.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>RENAME old_name new_name;</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#70>OPEN</a>
|
|
<p>
|
|
Mit RENAME kann der Name eines Symbols, Device oder Package geändert
|
|
werden. Die Bibliothek muss vorher mit OPEN geöffnet worden
|
|
sein.
|
|
<p>
|
|
Der Name darf mit der Namenserweiterung angegeben werden (zum Beispiel
|
|
RENAME name1.pac name2[.pac] - die Erweiterung im zweiten Parameter ist
|
|
optional). Wird der erste Parameter ohne Erweiterung angegeben, müssen Sie
|
|
sich im entsprechenden Editier-Modus (z. B. im Package-Modus um Packages
|
|
umzubenennen) befinden.
|
|
<p>
|
|
RENAME löscht den Undo-Puffer.
|
|
|
|
|
|
<a name=86>
|
|
<h1>REPLACE</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Bauteil austauschen.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>REPLACE •..</tt><br>
|
|
<tt>REPLACE device_name •..</tt><br>
|
|
<tt>REPLACE part_name device_name ..</tt><br>
|
|
<tt>REPLACE package_name •..</tt><br>
|
|
<tt>REPLACE element_name package_name ..</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#92>SET</a>,
|
|
<a href=#101>UPDATE</a>
|
|
<p>
|
|
Der REPLACE-Befehl kann dazu benutzt werden, ein Bauteil gegen ein anderes
|
|
(auch aus einer anderen Bibliothek) auszutauschen. Altes und neues Bauteil
|
|
müssen kompatibel sein, das heisst ihre benutzten Gatter und angeschlossenen
|
|
Pins bzw. Pads müssen entweder über ihre Namen oder ihre Koordinaten
|
|
zusammenpassen.
|
|
<p>
|
|
Ohne Parameter öffnet der REPLACE-Befehl einen Dialog, über den ein Bauteil
|
|
aus allen momentan in <a href=#102>Verwendung</a> befindlichen
|
|
Bibliotheken ausgewählt werden kann. Nach dieser Auswahl führen weitere
|
|
Mausklicks auf Bauteile dazu, dass diese (soweit möglich) gegen das ausgewählte
|
|
Bauteil getauscht werden.
|
|
<p>
|
|
Wird ein <tt>device_name</tt> angegeben, so wird dieses Bibliothekselement für die
|
|
Austausch-Operation verwendet.
|
|
<p>
|
|
Wird sowohl ein <tt>part_name</tt> als auch ein <tt>device_name</tt>
|
|
angegeben, so wird das Bauteil <tt>part_name</tt> gegen das Bibliothekselement
|
|
<tt>device_name</tt> ausgetauscht (was nützlich ist, wenn mit Skripten
|
|
gearbeitet wird).
|
|
<p>
|
|
Falls nur ein Board (ohne Schaltplan) bearbeitet wird, oder falls Bauteile
|
|
im Board ersetzt werden sollen die kein entsprechendes Bauteil im Schaltplan
|
|
haben, so kennt REPLACE-Befehl zwei verschiedene Betriebsarten, die mit
|
|
dem SET-Befehl eingestellt werden.
|
|
<h2>Gleiche Namen</h2>
|
|
Die erste Betriebsart wird mit
|
|
<pre>
|
|
SET REPLACE_SAME NAMES;
|
|
</pre>
|
|
aktiviert; sie ist beim Programmstart eingestellt. In dieser Betriebsart
|
|
kann man einem Element im Schaltplan ein anderes Package zuweisen,
|
|
bei dem dieselben Pad- und Smd-Namen vorhanden sind.
|
|
<p>
|
|
Das neue Package kann aus einer anderen Bibliothek stammen, und es darf
|
|
zusätzliche Pads und Smds enthalten. Die Lage der Anschlüsse ist
|
|
beliebig.
|
|
<p>
|
|
Anschlüsse des alten Package, die mit Signalen verbunden sind, müssen
|
|
entsprechend auch im neuen Package vorhanden sein. Das neue Package
|
|
darf auch weniger Anschlüsse haben, solange diese Bedingung erfüllt
|
|
ist.
|
|
<h2>Gleiche Koordinaten</h2>
|
|
Die zweite Betriebsart wird mit
|
|
<pre>
|
|
SET REPLACE_SAME COORDS;
|
|
</pre>
|
|
aktiviert. Sie erlaubt es, einem Element in einem Schaltplan
|
|
ein anderes Package zuweisen, bei dem auf denselben Koordinaten
|
|
(relativ zum Ursprung des Package) Pads oder Smds liegen müssen. Die
|
|
Namen dürfen unterschiedlich sein.
|
|
<p>
|
|
Das neue Package kann aus einer anderen Bibliothek stammen, und es darf
|
|
zusätzliche Pads und Smds enthalten. Anschlüsse des alten Package, die
|
|
mit Signalen verbunden sind, müssen entsprechend auch im neuen Package
|
|
vorhanden sein. Das neue Package darf auch weniger Anschlüsse haben,
|
|
solange diese Bedingung erfüllt ist.
|
|
<p>
|
|
REPLACE funktioniert nur mit eingeblendetem tOrigins- bzw.
|
|
bOrigins-Layer.
|
|
<p>
|
|
Existiert bereits ein Package mit demselben Namen (aus derselben Bibliothek) in der Zeichnung,
|
|
und wurde die Bibliothek seit dem Plazieren des Bauteils modifiziert, wird automatisch ein
|
|
<a href=#101>Library-Update</a> gestartet. Dabei werden Sie gefragt, ob die
|
|
Objekte in der Zeichnung durch die neueren aus der Bibliothek ersetzt werden sollen.
|
|
<p>
|
|
<b>Achtung: Eine REPLACE-Operation aktualisiert automatisch je nach Bedarf alle
|
|
betroffenen Bibliotheksobjekte. Dies bedeutet, dass auch andere Bauteile (auf
|
|
anderen Schaltplanseiten oder an anderen Stellen des Boards) verändert werden
|
|
können.
|
|
Starten Sie den <a href=#46>Design Rule Check</a> (DRC) und den
|
|
<a href=#48>Electrical Rule Check</a> (ERC) nach jeder REPLACE-Operation!</b>
|
|
|
|
|
|
<a name=87>
|
|
<h1>RIPUP</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Verdrahtete in unverdrahtete Signale (Luftlinien) verwandeln.<br>
|
|
Polygondarstellung auf "Umrisse".
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>RIPUP;</tt><br>
|
|
<tt>RIPUP [ @ ] [ ! ] •..</tt><br>
|
|
<tt>RIPUP [ @ ] [ ! ] signal_name..</tt>
|
|
<dt>
|
|
<b>Maustasten</b>
|
|
<dd>
|
|
<mb>Ctrl+Rechte</mb> verwandelt die Signale in der Gruppe in Luftlinien.<br>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#43>DELETE</a>,
|
|
<a href=#54>GROUP</a>,
|
|
<a href=#77>POLYGON</a>,
|
|
<a href=#81>RATSNEST</a>
|
|
<p>
|
|
Der Befehl RIPUP wird dazu verwendet, bereits verlegte Signale wieder
|
|
in Luftlinien zu verwandeln. Der Befehl kann verwendet werden für:
|
|
<ul>
|
|
<li>alle Signale (RIPUP;)
|
|
<li>alle Signale ausser den genannten (RIPUP ! GND VCC;)
|
|
<li>bestimmte Signale (z. B. RIPUP D0, D1, D2;)
|
|
<li>bestimmte Signalabschnitte (mit der Maus anzuklicken)
|
|
<li>alle Polygone (RIPUP @;)
|
|
<li>alle Polygone bestimmter Signale (e.g. RIPUP @ GND VCC;)
|
|
<li>alle Polygone ausser denen bestimmter Signale (e.g. RIPUP @ ! GND VCC;)
|
|
</ul>
|
|
Wird mit RIPUP auf eine Luftlinie geklickt, so werden die an dieser
|
|
Luftlinie angrenzenden verlegten Wires und Vias bis hin zum nächsten Pad,
|
|
SMD oder der nächsten Luftlinie in Luftlinien verwandelt.
|
|
<pre>
|
|
RIPUP signal_name..
|
|
</pre>
|
|
Wirkt auf das gesamte Signal "signal_name" (mehrere Signale sind
|
|
möglich, z.B. <tt>Ripup D0 D1 D2;</tt>)
|
|
<pre>
|
|
RIPUP •..
|
|
</pre>
|
|
Wirkt auf das durch den Mausklick selektierte Segment (bis zum nächsten
|
|
Pad/Smd). Bei
|
|
<pre>
|
|
RIPUP;
|
|
</pre>
|
|
werden nur solche Signale berücksichtigt, die an Elementen angeschlossen
|
|
sind (z.B. die Eckwinkel zur Platinenbegrenzung bleiben erhalten). Das gleiche
|
|
gilt, wenn der RIPUP-Befehl auf eine Gruppe angewendet wird.
|
|
<p>
|
|
<b>Achtung:</b> in allen Fällen wirkt der RIPUP-Befehl nur auf Objekte in
|
|
Layern, die momentan eingeblendet sind!
|
|
<h2>Platzhalter</h2>
|
|
Falls der <tt>signal_name</tt>-Parameter angegeben wurde, so sind die Zeichen <tt>'*'</tt>, <tt>'?'</tt>
|
|
und <tt>'[]'</tt> <i>Platzhalter</i> und haben folgende Bedeutung:
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>*</tt> </td><td width=20><td>steht für eine beliebige Anzahl beliebiger Zeichen</td></tr>
|
|
<tr><td><tt>?</tt> </td><td width=20><td>steht für genau ein Zeichen</td></tr>
|
|
<tr><td><tt>[...]</tt></td><td width=20><td>steht für irgend eines der Zeichen zwischen den Klammern</td></tr>
|
|
</table>
|
|
<p>
|
|
Soll eines dieser Zeichen genau so gesucht werden, wie es ist, so muss es in eckige Klammern
|
|
eingeschlossen werden. Zum Beispiel findet <tt>abc[*]ghi</tt> die Zeichenfolge <tt>abc*ghi</tt>,
|
|
aber nicht <tt>abcdefghi</tt>.
|
|
<p>
|
|
Ein Bereich von Zeichen kann als <tt>[a-z]</tt> angegeben werden, was für eines der Zeichen
|
|
aus dem Bereich <tt>'a'</tt>...<tt>'z'</tt> steht.
|
|
<h2>Polygone</h2>
|
|
Falls der RIPUP-Befehl mit einem Namen auf ein Signal angewendet wird, zu dem ein
|
|
Polygon gehört, wird das Polygon anschließend mit seinen Umrissen
|
|
dargestellt (schnellerer Bildaufbau!). Soll das Polygon wieder
|
|
freigerechnet werden, ist der Befehl <a href=#81>RATSNEST</a>
|
|
auszuführen.
|
|
|
|
|
|
<a name=88>
|
|
<h1>ROTATE</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Drehen von Objekten.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>ROTATE orientation •..</tt><br>
|
|
<tt>ROTATE orientation name..</tt>
|
|
<dt>
|
|
<b>Maustasten</b>
|
|
<dd>
|
|
<mb>Ctrl+Rechte</mb> dreht die Gruppe.<br>
|
|
<mb>Linke&Ziehen</mb> rotiert das Objekt um beliebige Winkel.<br>
|
|
<mb>Ctrl+Rechte&Ziehen</mb> rotiert die Gruppe um beliebige Winkel.
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#29>ADD</a>,
|
|
<a href=#65>MIRROR</a>,
|
|
<a href=#67>MOVE</a>,
|
|
<a href=#62>LOCK</a>,
|
|
<a href=#54>GROUP</a>
|
|
<p>
|
|
Mit dem ROTATE-Befehl kann man die Orientierung von Objekten ändern.
|
|
<p>
|
|
Wird <tt>orientation</tt> (siehe Beschreibung bei <a href=#29>ADD</a>)
|
|
angegeben, so wird stattdessen die angegebene Orientation zu der Orientation des
|
|
selektierten Objektes hinzugefügt.
|
|
<p>
|
|
Wird der angegebenen <tt>orientation</tt> das Zeichen <tt>'='</tt> vorangestellt, so
|
|
wird der Wert nicht hinzugefügt, sondern absolut eingestellt.
|
|
<p>
|
|
Bauteile, Pads, Smds und Pins lassen sich
|
|
auch mit ihrem Namen selektieren. Das ist vor allem dann nützlich,
|
|
wenn sich das Objekt ausserhalb des gerade dargestellten Bildausschnitts
|
|
befindet.
|
|
<p>
|
|
Zum Beispiel würde
|
|
<p>
|
|
<pre>
|
|
ROTATE =MR90 IC1
|
|
</pre>
|
|
<p>
|
|
die Orientierung des Elements IC1 auf MR90 einstellen, unabhängig davon, welchen
|
|
Wert diese vorher hatte.
|
|
<p>
|
|
Attribute von Bauteilen können dadurch selektiert werden, dass die Kombination
|
|
aus Bauteilname und Attributname angegeben wird, wie etwa <tt>R5>VALUE</tt>.
|
|
<p>
|
|
Falls <tt>name</tt> mit einem Wert für die Orientierung verwechselt werden
|
|
könnte muss der Name in Hochkommas eingeschlossen werden, wie in
|
|
<p>
|
|
<pre>
|
|
ROTATE R45 'R1'
|
|
</pre>
|
|
<p>
|
|
Mit Click&Drag können Sie ein Objekt um einen beliebigen Winkel drehen.
|
|
Klicken Sie dazu auf das Objekt und bewegen Sie die Maus (mit gedrückter Maustaste)
|
|
vom Objekt weg. Nachdem Sie die Maus eine kurze Strecke bewegt haben beginnt das
|
|
Objekt sich zu drehen. Bewegen Sie die Maus bis der gewünschte Winkel erreicht ist
|
|
und lassen Sie dann die Maustaste los. Sollten Sie es sich zwischenzeitlich anders
|
|
überlegt haben und das Objekt lieber doch nicht rotieren wollen, so können Sie (bei
|
|
immer noch gedrückter Maustaste) die Esc-Taste drücken um den Vorgang abzubrechen.
|
|
Die gleiche Operation kann auch auf eine Gruppe angewendet werden indem die rechte
|
|
Maustaste verwendet wird. Die Gruppe wird um den Punkt rotiert, an dem die
|
|
Maustaste gedrückt wurde.
|
|
<p>
|
|
Bauteile können nicht rotiert werden, wenn sie <a href=#62>gelockt</a> sind,
|
|
oder wenn eines ihrer angeschlossenen Pads aus der erlaubten Fläche hinausstehen würde
|
|
(falls sie eine <a href=#347>eingeschränkte Version</a> von EAGLE verwenden).
|
|
<h2>Elemente</h2>
|
|
Beim Drehen von Elementen bewegen sich die angeschlossenen Leitungen
|
|
mit (Achtung auf Kurzschlüsse!).
|
|
<p>
|
|
Elemente lassen sich nur drehen, wenn der tOrigins- bzw. der
|
|
bOrigins-Layer sichtbar ist.
|
|
<h2>Texte</h2>
|
|
Text wird immer so dargestellt, dass er von vorne oder von rechts
|
|
zu lesen ist - auch wenn er rotiert wird. Nach zweimaligem Rotieren
|
|
erscheint er deshalb wieder gleich, aber der Aufhängepunkt liegt
|
|
nicht mehr links unten, sondern rechts oben. Denken Sie daran, wenn
|
|
sich ein Text scheinbar nicht mehr selektieren lässt.
|
|
<p>
|
|
Wenn Sie einen Text "auf dem Kopf stehend" darstellen wollen, so können
|
|
Sie das "Spin"-Flag für diesen Text setzen.
|
|
|
|
|
|
<a name=89>
|
|
<h1>ROUTE</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Luftlinien in Leiterbahnen umwandeln.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>ROUTE [width] • [curve | @radius] •..</tt><br>
|
|
<tt>ROUTE name ..</tt>
|
|
<dt>
|
|
<b>Maustasten</b>
|
|
<dd>
|
|
<mb>Ctrl+Linke</mb> startet den Routevorgang an einem beliebigen Punkt eines Wires oder Vias.<br>
|
|
<mb>Shift+Linke</mb> startet den Routevorgang mit der gleichen Breite wie ein bestehender Wire.<br>
|
|
<mb>Mittlere</mb> wählt den Layer.<br>
|
|
<mb>Rechte</mb> ändert den Knickwinkel (siehe <a href=#92>SET Wire_Bend</a>).<br>
|
|
<mb>Shift+Rechte</mb> kehrt die Richtung des Weiterschaltens des Knickwinkels um.<br>
|
|
<mb>Ctrl+Rechte</mb> schaltet zwischen korrespondierenden Knickwinkeln hin und her.<br>
|
|
<mb>Shift+Linke</mb> beim Absetzen setzt ein Via.<br>
|
|
<mb>Ctrl+Linke</mb> beim Absetzen eines Wire-Endpunktes definiert den Kreisbogen-Radius.
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#33>AUTO</a>,
|
|
<a href=#100>UNDO</a>,
|
|
<a href=#106>WIRE</a>,
|
|
<a href=#66>MITER</a>,
|
|
<a href=#94>SIGNAL</a>,
|
|
<a href=#92>SET</a>,
|
|
<a href=#81>RATSNEST</a>
|
|
<p>
|
|
Der ROUTE-Befehl dient dazu, die unverdrahteten Signale (dargestellt
|
|
als Luftlinien im Unrouted-Layer) in verdrahtete (also Wires
|
|
in den Signal-Layern) umzuwandeln.
|
|
<p>
|
|
Ist der ROUTE-Befehl aktiviert, kann die Breite (<tt>width</tt>) des entstehenden Wires unmittelbar von der Tastatur aus eingegeben werden.
|
|
<p>
|
|
Nachdem man den ROUTE-Befehl aktiviert hat, setzt man
|
|
den ersten Punkt an einem Ende der Luftlinie an und bewegt den Mauszeiger
|
|
in die Richtung, in die man die Leitung legen will. EAGLE ersetzt
|
|
dann die Luftlinie durch einen Wire oder zwei Wire-Stücke
|
|
(je nach eingestelltem Knickwinkel) im gerade aktiven Signal-Layer.
|
|
<p>
|
|
Die linke Maustaste erneut betätigt, setzt das Leitungsstück ab.
|
|
Wird beim Absetzen die <tt>Shift</tt>-Taste gedrückt, so wird (falls möglich und die
|
|
Luftlinie nicht bereits ohnehin komplett geroutet ist) ein Via an der Absetzstelle
|
|
gesetzt (entweder mit passender Länge oder, falls sich eine solche nicht ermitteln
|
|
lässt, durchgehend von Layer 1 bis 16).
|
|
<p>
|
|
Mit der mittleren Maustaste wechselt man die Ebene. Durchkontaktierungen
|
|
(Vias) werden automatisch gesetzt.
|
|
Bitte beachten Sie, dass von den Signal-Layern (1 bis 16) nur diejenigen
|
|
zur Verfügung stehen, die im Layer-Setup in den <a href=#133>Design Rules</a>
|
|
eingetragen sind.
|
|
<p>
|
|
Es wird nur das minimal nötige Via (gemäß dem Layer-Setup in den <a href=#133>Design Rules</a>) gesetzt.
|
|
Dabei kann es vorkommen, dass ein bereits vorhandenes Via des selben Signals
|
|
entsprechend verlängert wird, oder dass vorhandene Vias zusammengefasst werden um ein
|
|
längeres Via zu bilden, falls dies nötig ist um den gewünschten Layer-Übergang zu
|
|
ermöglichen.
|
|
Wird ein Via am Anfangs- oder Endpunkt gesetzt und es befindet sich an dieser Stelle
|
|
ein SMD-Pad, so wird ein <i>Micro-Via</i> erzeugt falls der aktuelle Route-Layer
|
|
eine Ebene vom Layer des SMDs entfernt ist (dies trifft nur dann zu wenn in den
|
|
<a href=#133>Design Rules</a> Micro-Vias erlaubt sind).
|
|
<p>
|
|
Die rechte Maustaste ändert den Knickwinkel (siehe <a href=#92>SET Wire_Bend</a>).
|
|
<p>
|
|
Ist eine Luftlinie komplett verdrahtet, ertönt ein Piepston.
|
|
<p>
|
|
Wird der <i>curve</i> oder <i>@radius</i> Parameter angegeben, so kann ein Kreisbogen als Teil des Leiterbahnzugs
|
|
gezeichnet werden (siehe die ausführliche Beschreibung beim <a href=#106>WIRE</a>-Befehl).
|
|
<p>
|
|
Wird der Startpunkt mit gedrückter <tt>Ctrl</tt>-Taste angeklickt und befindet sich
|
|
dort keine Luftlinie, so wird automatisch eine neue Luftlinie erzeugt. Der Startpunkt
|
|
dieser Luftlinie ist derjenige Punkt auf dem selektierten Wire oder Via, der dem Mauszeiger
|
|
am nächsten liegt (möglicherweise auf den nächstgelegenen Rasterpunkt geschnappt).
|
|
Das ferne Ende der Luftlinie zeigt dynamisch auf ein Zielsegment, welches nicht das
|
|
ausgewählte Segment ist. Sollte das selektierte Signal bereits vollständig geroutet
|
|
sein, so zeigt das ferne Ende zum Startpunkt.
|
|
Ist der selektierte Wire ein Kreisbogen, so beginnt die Luftlinie am nächstgelegenen
|
|
Endpunkt des Wires.
|
|
<p>
|
|
Wird ein <tt>name</tt> angegeben, so wird die Luftlinie dieses Signals selektiert,
|
|
die dem Mauszeiger am nächsten liegt. Falls <tt>name</tt> als <i>with</i>,
|
|
<i>curve</i> oder <i>@radius</i> Parameter interpretiert werden könnte, so muss
|
|
er in Hochkommas eingeschlossen werden.
|
|
<h2>Auswahl des Routing-Layers und der Wire-Breite</h2>
|
|
Wenn Sie eine Luftlinie selektieren wird der Layer in dem geroutet wird
|
|
durch Betrachtung der am Startpunkt vorhandenen Objekte wie folgt ermittelt:
|
|
<ul>
|
|
<li>befindet sich dort ein Objekt im aktiven Layer, so wird dieser beibehalten
|
|
<li>ansonsten wird ein Layer der an diesem Punkt befindlichen Objekte genommen
|
|
</ul>
|
|
Beim Selektieren einer Luftlinie wird die Wire-Breite
|
|
zum Routen auf den Wert gesetzt, der sich aus den Design-Regeln und der
|
|
Netzklasse des selektierten Signals ergibt, wenn der Schalter "Optionen/Einstellungen/Verschiedenes/Width und Drill bei
|
|
Route autom. setzen" eingeschaltet ist.
|
|
Während die Luftlinie am Cursor
|
|
hängt können Sie eine andere Breite einstellen, und die Verbindung wird dann
|
|
mit der neuen Breite berechnet. Gleiches gilt für die Daten von Vias.
|
|
<p>
|
|
Wenn eine Luftlinie geroutet wird, die an einem bereits verlegten Wire
|
|
beginnt, so übernimmt der neu verlegte Wire die Breite des bereits
|
|
existierenden Wires, wenn beim Selektieren der Luftlinie die <tt>Shift</tt>-Taste
|
|
gedrückt wird.
|
|
<h2>Fangfunktion</h2>
|
|
Der Endpunkt der dynamisch berechneten Luftlinie wird immer als
|
|
zusätzlicher Rasterpunkt benutzt, auch wenn er nicht auf dem aktuellen
|
|
Raster liegt. Hat die verbleibende Luftlinie eine Länge, die kürzer als
|
|
SNAP_LENGTH ist, so schnappt der zu verlegende Wire automatisch auf den
|
|
Endpunkt der Luftlinie, und bleibt dort, bis der Mauszeiger mindestens
|
|
SNAP_LENGTH von diesem Punkt entfernt wird. Mit
|
|
<pre>
|
|
SET SNAP_LENGTH number;
|
|
</pre>
|
|
kann der Grenzwert für die Fangfunktion eingestellt werden, wobei
|
|
<i>number</i> in der aktuellen Grid-Einheit anzugeben ist.
|
|
Default ist 20 Mil.
|
|
<h2>Follow-me-Router</h2>
|
|
Mit den speziellen <a href=#92>Knickwinkeln</a> <tt>8</tt> und <tt>9</tt>
|
|
arbeitet der ROUTE-Befehl als "Follow-me"-Router. Das bedeutet, dass die selektierte
|
|
Luftlinie vollautomatisch vom <a href=#131>Autorouter</a> verlegt wird.
|
|
<p>
|
|
Knickwinkel <tt>8</tt> verlegt nur das kürzere Ende der selektierten Luftlinie,
|
|
während <tt>9</tt> beide Seiten verlegt. Sobald die automatische Wegesuche beendet
|
|
ist (was einige Zeit dauern kann, haben Sie also bitte Geduld), wird die Luftlinie
|
|
durch die konkreten Wires und Vias ersetzt. Konnte keine Verbindung gefunden werden
|
|
(etwa aufgrund von Beschränkungen durch die Design-Regeln), so wechselt der Cursor
|
|
in ein "Verbotszeichen". Mit Knickwinkel <tt>9</tt> kann es vorkommen, dass nur
|
|
eine Seite der Luftlinie verlegt werden kann und die andere nicht.
|
|
<p>
|
|
Bei jeder Mausbewegung wird das bisherige Ergebnis verworfen und eine neue
|
|
Berechnung gestartet. Sobald das Ergebnis akzeptabel ist, klicken Sie mit der
|
|
linken Maustaste um es abzulegen.
|
|
<p>
|
|
Der Follow-me-Router arbeitet so, dass er den Rasterpunkt an der aktuellen
|
|
Mausposition als Startpunkt nimmt und den Autorouter benutzt um eine Verbindung
|
|
von diesem Punkt zu einem Punkt auf dem Signal-Segment zu finden, an dem die
|
|
Luftlinie endet (was nicht unbedingt der genaue Endpunkt der Luftlinie sein muss).
|
|
Der Startpunkt berücksichtigt auch den momentan gewählten Layer, wundern Sie
|
|
sich also nicht, wenn der Router an dieser Stelle ein Via setzt. Durch Ändern
|
|
des aktuellen Layers kann das Routing-Ergebnis beeinflusst werden.
|
|
<p>
|
|
Als Routing-Raster wird das zum Zeitpunkt des Selektierens der Luftlinie
|
|
eingestellte Raster verwendet.
|
|
<p>
|
|
Die Routing-Parameter (wie etwa Kostenfaktoren, Vorzugsrichtungen etc.) werden
|
|
im Dialog des <a href=#33>AUTO</a>-Befehls definiert.
|
|
<p>
|
|
Folgende Besonderheiten gelten:
|
|
<ul>
|
|
<li>Der Follow-me-Router berechnet nicht die Polygone. Wenn Sie wollen, dass sie
|
|
freigerechnet werden, so geben Sie vorher den Befehl <a href=#81>RATSNEST</a>
|
|
ein.
|
|
<li>Da der Startpunkt Bestandteil der verlegten Leiterbahnen sein muss, kann das
|
|
Ergebnis eine T-förmige Verbindung sein, mit einem überflüssigen Wire, der
|
|
zum Startpunkt führt. Bewegen Sie den Mauscursor einfach in Richtung der
|
|
eigentlichen Verbindung, um dies zu vermeiden.
|
|
<li>Beide Enden der Luftlinie werden mit Knickwinkel <tt>9</tt> separat verlegt,
|
|
wodurch es dazu kommen kann, dass sich Wires bzw. Vias überlappen. Bewegen
|
|
Sie den Mauscursor bis solche unerwünschten Effekte verschwinden.
|
|
<li>Abhängig vom gewählten Routing-Layer des Startpunktes kann es vorkommen, dass
|
|
unnötige Vias generiert werden. Wählen sie einen anderen Layer um dies zu
|
|
vermeiden.
|
|
<li>Falls die maximale Anzahl erlaubter Vias in den Follow-me-Parametern auf <tt>0</tt>
|
|
gesetzt ist, und Sie den Layer wechseln während eine Luftlinie am Mauscursor
|
|
hängt, so kann der Router am Anfangspunkt der kürzeren Seite der Luftlinie
|
|
dennoch ein Via platzieren (sofern dies gemäß den Design-Regeln, eventueller
|
|
Sperrflächen und dergleichen überhaupt möglich ist).
|
|
<li>Im Follow-me-Modus schaltet die rechte Maustaste zwischen dem einseitigen
|
|
oder beidseitigen Verlegen der Luftlinie hin und her. Um zum manuellen
|
|
Routen zurückzuschalten klicken Sie auf einen der entsprechenden Buttons
|
|
für den Knickwinkel, oder geben den Befehl <a href=#92>SET Wire_Bend</a>
|
|
mit einem Wert unter <tt>8</tt> ein.
|
|
<li>Der Follow-me-Router kann nur runde oder achteckige Vias platzieren, keine quadratischen.
|
|
<li>Der Miter-Parameter hat im Folow-me-Modus keine Bedeutung.
|
|
<li>Die Parameter für den Follow-me-Router werden zusammen mit dem Rest der
|
|
Autorouter-Parameter gespeichert, allerdings in einer eigenen Sektion.
|
|
Der Grund hierfür ist, dass sich die Parameter des Follow-me-Routers zunächst
|
|
wie die der "Route"-Sektion in den Autorouter-Parametern verhalten sollen
|
|
(um möglichst wenig Fläche zu "verbauen"), aber auch eine Tendenz hin zu
|
|
den Parametern der Optimierungsläufe haben können.
|
|
<li>Wird ein Board, welches Autorouter-Parameter enthält, mit dieser Version von
|
|
EAGLE abgespeichert und mit einer früheren Version geladen, so kann es sein, dass
|
|
die Autorouter-Parameter als ungültig gemeldet werden, und stattdessen
|
|
Standardwerte verwendet werden. Sie können die Autorouter-Parameter, wenn nötig,
|
|
in eine *.ctl Datei speichern und diese explizit in die ältere Version laden.
|
|
<li>Die speziellen Mausfunktionen
|
|
<mb>Ctrl+Linke</mb> (Routevorgang an einem beliebigen Punkt eines Wires oder Vias starten),
|
|
<mb>Shift+Linke</mb> (beim Absetzen ein Via setzen) und
|
|
<mb>Ctrl+Linke</mb> (Kreisbogen-Radius definieren) funktionieren im Follow-me-Modus nicht.
|
|
</ul>
|
|
|
|
|
|
<a name=90>
|
|
<h1>RUN</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Führt ein <a href=#138>User-Language</a>-Programm aus.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>RUN file_name [argument ...]</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#91>SCRIPT</a>
|
|
<p>
|
|
Der RUN-Befehl startet das User-Language-Programm mit dem Namen <tt>file_name</tt>.<br>
|
|
Das optionale <tt>Argument</tt>-Liste ist für das ULP über die
|
|
<a href=#242>Builtin-Variablen</a> <tt>argc</tt> und <tt>argv</tt> verfügbar.
|
|
<h2>ULP von Script-Datei ausführen</h2>
|
|
Wenn ein ULP von einer Script-Datei aufgerufen wird und das Programm
|
|
einen Wert ungleich <tt>0</tt> zurückgibt (durch einen Aufruf der
|
|
Funktion
|
|
<tt><a href=#260>exit()</a></tt> oder weil
|
|
das STOP-Symbol angeklickt wurde), wird die Ausführung der Script-Datei
|
|
beendet.
|
|
<h2>Editor-Befehle von einem ULP ausführen</h2>
|
|
Ein ULP kann die <tt><a href=#260>exit()</a></tt>-Funktion auch mit einem <tt>string</tt>-Parameter
|
|
verwenden, um einen Befehl direkt in einem Editor-Fenster auszuführen.
|
|
|
|
|
|
<a name=91>
|
|
<h1>SCRIPT</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Befehls-Datei ausführen.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>SCRIPT file_name;</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#92>SET</a>,
|
|
<a href=#64>MENU</a>,
|
|
<a href=#31>ASSIGN</a>,
|
|
<a href=#50>EXPORT</a>,
|
|
<a href=#90>RUN</a>
|
|
<p>
|
|
Der SCRIPT-Befehl stellt eine Möglichkeit dar, Befehlssequenzen
|
|
auszuführen, die in einer Datei abgelegt sind. Gibt man den Befehl
|
|
über die Tastatur ein, so wird, falls keine Extension angegeben
|
|
wurde, ".scr" als Default verwendet.
|
|
<h2>Beispiele</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>SCRIPT nofill</tt> </td><td width=20><td>ruft nofill.scr auf</td></tr>
|
|
<tr><td><tt>SCRIPT myscr.</tt> </td><td width=20><td>ruft myscr (ohne Suffix!) auf</td></tr>
|
|
<tr><td><tt>SCRIPT myscr.old</tt> </td><td width=20><td>ruft myscr.old auf</td></tr>
|
|
</table>
|
|
<p>
|
|
Bitte beachten Sie die Möglichkeiten des EXPORT-Befehls im Zusammenhang mit Script-Dateien!
|
|
<p>
|
|
Wählt man den Befehl mit Hilfe der Maus, dann zeigt ein Popup-Menü
|
|
alle Dateien mit der Erweiterung .scr an. Man kann dann die
|
|
gewünschte Datei auswählen.
|
|
<p>
|
|
Der SCRIPT-Befehl bietet die Möglichkeit, das Programm
|
|
an individuelle Bedürfnisse anzupassen. Unter
|
|
anderem kann man damit:
|
|
<ul>
|
|
<li>das Befehlsmenü einstellen,
|
|
<li>Tasten belegen,
|
|
<li>Platinenumrisse laden,
|
|
<li>Farben festlegen.
|
|
</ul>
|
|
SCRIPT-Dateien enthalten EAGLE-Befehle, entsprechend den Syntax-Regeln.
|
|
Zeilen, die mit <tt>'#'</tt> beginnen, sind Kommentarzeilen.
|
|
<h2>Fortsetzungszeilen</h2>
|
|
Bei manchen Befehlen kann es erforderlich sein, mehrere Zeilen zu
|
|
belegen. Das Zeichen '\'
|
|
am Ende einer Kommandozeile sorgt dafür, dass das erste Wort
|
|
der nächsten Zeile nicht als Befehl interpretiert wird. Damit
|
|
lassen sich in vielen Fällen Hochkommas vermeiden.
|
|
<h2>Start-Parameter setzen</h2>
|
|
Die SCRIPT-Datei eagle.scr wird jedesmal ausgeführt wenn eine Zeichnung neu in einem
|
|
Editor-Fenster geladen wird, oder der Editier-Modus in einer Bibliothek gewechselt wird,
|
|
sofern eagle.scr im Projekt-Verzeichnis oder im <a href=#14>Script-Pfad</a>
|
|
steht.
|
|
<h2>Script-Datei im Bibliotheks-Editor ausführen</h2>
|
|
Alle Layer werden nur dann erkannt, wenn vorher der Bibliotheks-Editor neu
|
|
geöffnet worden ist.
|
|
|
|
|
|
<a name=92>
|
|
<h1>SET</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Systemparameter verändern.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>SET</tt><br>
|
|
<tt>SET options;</tt>
|
|
</dl>
|
|
Mit dem SET-Befehl können Parameter festgelegt werden, die das
|
|
Verhalten des Programms, die Bildschirmdarstellung und die
|
|
Benutzeroberfläche betreffen. Die genaue Syntax ist im folgenden
|
|
beschrieben.
|
|
<p>
|
|
Wird der SET-Befehl ohne Parameter aufgerufen, so erscheint ein Dialog
|
|
in dem alle Parameter eingestellt werden können.
|
|
<h2>Benutzer-Interface</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td>Fangfunktion </td><td width=20><td><tt>SET SNAP_LENGTH number;</tt></td></tr>
|
|
<tr><td> </td><td width=20><td><i>Fangradius:</i> Damit lässt sich der Grenzwert für die Fangfunktion des <a href=#89>ROUTE</a>-Befehls in der aktuellen Einheit einstellen.</td></tr>
|
|
<tr><td> </td><td width=20><td>Default: 20 Mil</td></tr>
|
|
<tr><td> </td><td width=20><td>Verlegt man mit dem <a href=#89>ROUTE</a>-Befehl Leitungen zu Pads, die nicht im Raster liegen, dann sorgt die Fangfunktion dafür, dass man innerhalb der Snap_length zu diesem Pad routen kann.</td></tr>
|
|
<tr><td> </td><td width=20><td><tt>SET CATCH_FACTOR value;</tt></td></tr>
|
|
<tr><td> </td><td width=20><td><i>Fangfaktor:</i> Legt fest, bis zu welchem Abstand vom Mauszeiger Objekte beim Anklicken mit der Maus berücksichtigt werden. Der Wert wird relativ zur Höhe (bzw. Breite, falls diese kleiner ist) des gegenwärtigen Bildausschnitts angegeben. Er gilt bei einer Zoomstufe die mindestens einen Bereich von 100mm darstellt und steigt beim Hineinzoomen logarithmisch an. Der Wert 0 setzt diese Einschränkung ausser Kraft.<br>Default: 0.05 (5%).</td></tr>
|
|
<tr><td> </td><td width=20><td><tt>SET SELECT_FACTOR value;</tt></td></tr>
|
|
<tr><td> </td><td width=20><td><i>Selektionsfaktor:</i> Damit stellt man ein, bis zu welchem Abstand vom Mauszeiger benachbarte Objekte zur <a href=#20>Auswahl</a> vorgeschlagen werden. Der Wert wird relativ zur Höhe (bzw. Breite, falls diese kleiner ist) des gegenwärtigen Bildausschnitts angegeben.<br>Default: 0.02 (2%).</td></tr>
|
|
<tr><td>Inhalt von Menüs </td><td width=20><td><tt>SET USED_LAYERS name | number;</tt></td></tr>
|
|
<tr><td> </td><td width=20><td>Legt die Layer fest, die in den entsprechenden EAGLE-Menüs angezeigt werden. Siehe Beispieldatei <tt>mylayers.scr</tt>.</td></tr>
|
|
<tr><td> </td><td width=20><td>Die Layer Pads, Vias, Unrouted, Dimension, Drills und Holes sowie die Schaltplan-Layer bleiben auf jeden Fall im Menü. Auch alle benutzten Signal-Layer bleiben aktiv. <tt>SET Used_Layers All</tt> aktiviert alle Layer.</td></tr>
|
|
<tr><td> </td><td width=20><td><tt>SET WIDTH_MENU value..;</tt></td></tr>
|
|
<tr><td> </td><td width=20><td><tt>SET DIAMETER_MENU value..;</tt></td></tr>
|
|
<tr><td> </td><td width=20><td><tt>SET DRILL_MENU value..;</tt></td></tr>
|
|
<tr><td> </td><td width=20><td><tt>SET SMD_MENU value..;</tt></td></tr>
|
|
<tr><td> </td><td width=20><td><tt>SET SIZE_MENU value..;</tt></td></tr>
|
|
<tr><td> </td><td width=20><td><tt>SET ISOLATE_MENU value..;</tt></td></tr>
|
|
<tr><td> </td><td width=20><td><tt>SET SPACING_MENU value..;</tt></td></tr>
|
|
<tr><td> </td><td width=20><td><tt>SET MITER_MENU value..;</tt></td></tr>
|
|
<tr><td> </td><td width=20><td>Für die Parameter <i>width</i> etc. kann der Inhalt der entsprechenden Popup-Menüs mit obigen Befehlen konfiguriert werden. Je Menü sind max. 16 Werte möglich (beim Smd-Menü max. 16 Wertepaare). Wird kein Wert angegeben (also z.B. <tt>SET WIDTH_MENU;</tt>), so werden die programminternen Standardwerte gesetzt.</td></tr>
|
|
<tr><td> </td><td width=20><td>Beispiel:<br><tt>Grid Inch;</tt><br><tt>Set Width_Menu 0.1 0.2 0.3;</tt></td></tr>
|
|
<tr><td>Knickwinkel für Wires </td><td width=20><td><tt>SET WIRE_BEND bend_nr;</tt></td></tr>
|
|
<tr><td> </td><td width=20><td><i>bend_nr</i> kann einer der folgenden Werte sein:</td></tr>
|
|
<tr><td> </td><td width=20><td><tt>0</tt>: Startpunkt - waagrecht - senkrecht - Endpunkt</td></tr>
|
|
<tr><td> </td><td width=20><td><tt>1</tt>: Startpunkt - waagrecht - 45° - Endpunkt</td></tr>
|
|
<tr><td> </td><td width=20><td><tt>2</tt>: Startpunkt - Endpunkt (direkte Verbindung)</td></tr>
|
|
<tr><td> </td><td width=20><td><tt>3</tt>: Startpunkt - 45° - waagrecht - Endpunkt</td></tr>
|
|
<tr><td> </td><td width=20><td><tt>4</tt>: Startpunkt - senkrecht - waagrecht - Endpunkt</td></tr>
|
|
<tr><td> </td><td width=20><td><tt>5</tt>: Startpunkt - Kreisbogen - waagrecht - Endpunkt</td></tr>
|
|
<tr><td> </td><td width=20><td><tt>6</tt>: Startpunkt - waagrecht - Kreisbogen - Endpunkt</td></tr>
|
|
<tr><td> </td><td width=20><td><tt>7</tt>: "Freihand" (Kreisbogen passend zum Wire am Startpunkt, ansonsten gerade)</td></tr>
|
|
<tr><td> </td><td width=20><td><tt>8</tt>: Kurzes Ende der Luftlinie im <a href=#89>Follow-me-Router</a> verlegen</td></tr>
|
|
<tr><td> </td><td width=20><td><tt>9</tt>: Beide Enden der Luftlinie im <a href=#89>Follow-me-Router</a> verlegen</td></tr>
|
|
<tr><td> </td><td width=20><td>Beachten Sie bitte, dass <tt>0</tt>, <tt>1</tt>, <tt>3</tt> und <tt>4</tt> zusätzliche Wires zur Abschrägung enthalten können (siehe <a href=#66>MITER</a>).</td></tr>
|
|
<tr><td> </td><td width=20><td><tt>SET WIRE_BEND @ bend_nr ...;</tt></td></tr>
|
|
<tr><td> </td><td width=20><td>Legt fest welche Knickwinkel beim Weiterschalten mit der rechten Maustaste tatsächlich durchlaufen werden sollen.</td></tr>
|
|
<tr><td> </td><td width=20><td><tt>SET WIRE_BEND @;</tt></td></tr>
|
|
<tr><td> </td><td width=20><td>Schaltet zurück auf alle Knickwinkel.</td></tr>
|
|
<tr><td>Piepston ein/aus </td><td width=20><td><tt>SET BEEP OFF | ON;</tt></td></tr>
|
|
</table>
|
|
<h2>Bildschirmdarstellung</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td>Farbe für Grid-Linien </td><td width=20><td><tt>SET COLOR_GRID color;</tt></td></tr>
|
|
<tr><td>Farbe für Layer </td><td width=20><td><tt>SET COLOR_LAYER layer color;</tt></td></tr>
|
|
<tr><td>Füllmuster für Layer </td><td width=20><td><tt>SET FILL_LAYER layer fill;</tt></td></tr>
|
|
<tr><td>Raster-Parameter </td><td width=20><td><tt>SET MIN_GRID_SIZE pixels;</tt></td></tr>
|
|
<tr><td> </td><td width=20><td>Das Grid wird nur dann gezeichnet, wenn der Rasterabstand größer ist als die eingestellte Zahl von Pixeln.</td></tr>
|
|
<tr><td>Min. darg. Textgröße </td><td width=20><td><tt>SET MIN_TEXT_SIZE size;</tt></td></tr>
|
|
<tr><td> </td><td width=20><td>Texte, die weniger als <tt>size</tt> Bildpunkte hoch sind, werden auf dem Bildschirm als Rechtecke dargestellt. Einstellung <tt>0</tt> bedeutet: alle Texte werden lesbar dargestellt.</td></tr>
|
|
<tr><td>Netz-Linien-Darstellung </td><td width=20><td><tt>SET NET_WIRE_WIDTH width;</tt></td></tr>
|
|
<tr><td>Pad-Darstellung </td><td width=20><td><tt>SET DISPLAY_MODE REAL | NODRILL;</tt></td></tr>
|
|
<tr><td> </td><td width=20><td>REAL: Pads werden dargestellt, wie sie geplottet werden.<br>NODRILL: Pads werden ohne Bohrung dargestellt.</td></tr>
|
|
<tr><td> </td><td width=20><td><tt>SET PAD_NAMES OFF | ON;</tt></td></tr>
|
|
<tr><td> </td><td width=20><td>Pad-Namen werden ein-/ausgeblendet.</td></tr>
|
|
<tr><td>Bus-Linien-Darstellung </td><td width=20><td><tt>SET BUS_WIRE_WIDTH width;</tt></td></tr>
|
|
<tr><td><a href=#46>DRC</a>-Parameter </td><td width=20><td><tt>SET DRC_FILL fill_name;</tt></td></tr>
|
|
<tr><td>Polygon-Berechnung </td><td width=20><td><tt>SET POLYGON_RATSNEST OFF | ON;</tt></td></tr>
|
|
<tr><td> </td><td width=20><td>Siehe <a href=#77>POLYGON</a>-Befehl.</td></tr>
|
|
<tr><td>Vector Font </td><td width=20><td><tt>SET VECTOR_FONT OFF | ON;</tt></td></tr>
|
|
<tr><td> </td><td width=20><td>Siehe <a href=#99>TEXT</a>-Befehl.</td></tr>
|
|
<tr><td>Querverweis-Labels </td><td width=20><td><tt>SET XREF_LABEL_FORMAT string;</tt></td></tr>
|
|
<tr><td> </td><td width=20><td>Siehe <a href=#60>LABEL</a>-Befehl.</td></tr>
|
|
<tr><td>Bauteil-Querverweise </td><td width=20><td><tt>SET XREF_PART_FORMAT string;</tt></td></tr>
|
|
<tr><td> </td><td width=20><td>Siehe <a href=#99>TEXT</a>-Befehl.</td></tr>
|
|
</table>
|
|
<h2>Mode-Parameter</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td>Package-Check </td><td width=20><td><tt>SET CHECK_CONNECTS OFF | ON;</tt></td></tr>
|
|
<tr><td> </td><td width=20><td>Der <a href=#29>ADD</a>-Befehl prüft, ob bei einem Device jedem Pad ein Pin (mit <a href=#40>CONNECT</a>) zugewiesen ist. Diese Prüfung lässt sich abschalten. Allerdings kann keine Platine aus einem Schaltplan erzeugt werden, falls ein Device ohne Gehäuse gefunden wird.</td></tr>
|
|
<tr><td><a href=#86>REPLACE</a>-Modus </td><td width=20><td><tt>SET REPLACE_SAME NAMES | COORDS;</tt></td></tr>
|
|
<tr><td><a href=#100>UNDO</a>-Puffer ein/aus </td><td width=20><td><tt>SET UNDO_LOG OFF | ON;</tt></td></tr>
|
|
<tr><td>Wire-Optim. ein/aus </td><td width=20><td><tt>SET OPTIMIZING OFF | ON;</tt></td></tr>
|
|
<tr><td> </td><td width=20><td>Wires, die nach MOVE, ROUTE oder SPLIT in einer Linie liegen, werden zu einem Wire zusammengefasst, falls <i>On</i> eingestellt ist. Siehe auch <a href=#71>OPTIMIZE</a>.</td></tr>
|
|
</table>
|
|
<h2>Farben</h2>
|
|
Es gibt drei <i>Paletten</i> für schwarzen, weißen und farbigen Hintergrund.
|
|
Jede Palette hat 64 Farb-Einträge, die auf jeden beliebigen ARGB-Wert
|
|
gesetzt werden können. Der Paletten-Eintrag 0 wird für die Hintergrundfarbe
|
|
verwendet (in der "weißen" Palette ist dieser Eintrag nicht
|
|
veränderbar, da diese Palette auch zum Ausdrucken verwendet wird, wo der
|
|
Hintergrund immer weiß ist).
|
|
<p>
|
|
Die Farbpaletten können entweder über den Dialog unter
|
|
"Optionen/Einstellungen/Farben" verändert werden, oder mittels des Befehls
|
|
<pre>
|
|
SET PALETTE <i>index</i> <i>argb</i>
|
|
</pre>
|
|
wobei <i>index</i> eine Zahl im Bereich 0..63 und <i>argb</i> ein hexadezimaler
|
|
Wert ist, der die Alpha-, Rot-, Grün- und Blau-Komponenten der Farbe definiert,
|
|
etwa 0xFFFFFF00 (was ein helles Gelb ergeben würde). Die Alpha-Komponente gibt an
|
|
wie "deckend" die Farbe ist. Ein Wert von 0x00 bedeutet, dass die Farbe vollkommen
|
|
transparent ist (d.h. unsichtbar), während 0xFF für eine vollkommen deckende Farbe steht.
|
|
Die Alpha-Komponente der Hintergrundfarbe ist immer 0xFF.
|
|
Beachten Sie bitte, dass der ARGB-Wert mit "0x" beginnen muss, ansonsten würde er als
|
|
dezimale Zahl interpretiert werden. Mit dem Befehl
|
|
<pre>
|
|
SET PALETTE BLACK|WHITE|COLORED
|
|
</pre>
|
|
können Sie auf die Palette für schwarzen, weißen oder farbigen Hintergrund
|
|
umschalten. Beachten Sie bitte, dass nach diesem Befehl kein automatisches
|
|
Neuzeichnen des Zeichenfensters stattfindet; Sie sollten daher anschließend
|
|
den Befehl WINDOW; ausführen.
|
|
<p>
|
|
Standardmäßig werden nur die Paletten-Einträge 0..15 benutzt und diese
|
|
enthalten die unten aufgeführten Farben.
|
|
<p>
|
|
Die Paletten-Einträge sind unterteilt in "normale" und "hervorgehobene"
|
|
Farben. Es gibt immer 8 "normale" Farben, gefolgt von den 8 zugehörigen
|
|
"hervorgehobenen" Farben. Die Farben 0..7 sind somit "normale" Farben,
|
|
8..15 sind ihre "hervorgehobenen" Werte, 16..23 sind weitere 8 "normale"
|
|
Farben mit 24..31 als deren "hervorgehobene" Werte und so weiter. Die
|
|
"hervorgehobenen" Farben werden benutzt um Objekte hervorzuheben, wie zum
|
|
Beispiel im SHOW-Befehl.
|
|
<p>
|
|
<tt>Color</tt>, geordnet nach Farbnummern, die anstelle von
|
|
color verwendet werden können. Damit legt man die Farbe fest:
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td>0 </td><td width=20><td>Black</td></tr>
|
|
<tr><td>1 </td><td width=20><td>Blue</td></tr>
|
|
<tr><td>2 </td><td width=20><td>Green</td></tr>
|
|
<tr><td>3 </td><td width=20><td>Cyan</td></tr>
|
|
<tr><td>4 </td><td width=20><td>Red</td></tr>
|
|
<tr><td>5 </td><td width=20><td>Magenta</td></tr>
|
|
<tr><td>6 </td><td width=20><td>Brown</td></tr>
|
|
<tr><td>7 </td><td width=20><td>LGray</td></tr>
|
|
<tr><td>8 </td><td width=20><td>DGray</td></tr>
|
|
<tr><td>9 </td><td width=20><td>LBlue</td></tr>
|
|
<tr><td>10 </td><td width=20><td>LGreen</td></tr>
|
|
<tr><td>11 </td><td width=20><td>LCyan</td></tr>
|
|
<tr><td>12 </td><td width=20><td>LRed</td></tr>
|
|
<tr><td>13 </td><td width=20><td>LMagenta</td></tr>
|
|
<tr><td>14 </td><td width=20><td>Yellow</td></tr>
|
|
<tr><td>15 </td><td width=20><td>White</td></tr>
|
|
</table>
|
|
<p>
|
|
<tt>Fill</tt> legt die Art fest, wie Wires und Rectangles in einem
|
|
bestimmten Layer gefüllt werden sollen. Auch dieser Parameter kann
|
|
durch die am Anfang der Zeile stehende Zahl ersetzt werden:
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td>0 </td><td width=20><td>Empty</td></tr>
|
|
<tr><td>1 </td><td width=20><td>Solid</td></tr>
|
|
<tr><td>2 </td><td width=20><td>Line</td></tr>
|
|
<tr><td>3 </td><td width=20><td>LtSlash</td></tr>
|
|
<tr><td>4 </td><td width=20><td>Slash</td></tr>
|
|
<tr><td>5 </td><td width=20><td>BkSlash</td></tr>
|
|
<tr><td>6 </td><td width=20><td>LtBkSlash</td></tr>
|
|
<tr><td>7 </td><td width=20><td>Hatch</td></tr>
|
|
<tr><td>8 </td><td width=20><td>XHatch</td></tr>
|
|
<tr><td>9 </td><td width=20><td>Interleave</td></tr>
|
|
<tr><td>10 </td><td width=20><td>WideDot</td></tr>
|
|
<tr><td>11 </td><td width=20><td>CloseDot</td></tr>
|
|
<tr><td>12 </td><td width=20><td>Stipple1</td></tr>
|
|
<tr><td>13 </td><td width=20><td>Stipple2</td></tr>
|
|
<tr><td>14 </td><td width=20><td>Stipple3</td></tr>
|
|
<tr><td>15 </td><td width=20><td>Stipple4</td></tr>
|
|
</table>
|
|
<h2>EagleRc-Parameter</h2>
|
|
Manchmal ist es notwendig, ein kleines Funktionsdetail einstellbar zu machen,
|
|
zum Beispiel weil einige Benutzer es unbedingt anders haben wollen.
|
|
Diese Parameter sind nicht in irgendwelchen Dialogen verfügbar, sondern können
|
|
ausschließlich über einen Eintrag in der eaglerc-Datei verändert werden.
|
|
Um dieses zu vereinfachen wird jeder Parameter, der nicht in obigen Schlüsselwörtern
|
|
gefunden wurde, in den eaglerc-Parametern gesucht und kann so mit dem SET-Befehl
|
|
verändert werden.
|
|
Beachten Sie bitte, dass die Parameternamen vollständig und genau so, wie unten
|
|
aufgelistet, angegeben werden müssen (auch bezüglich Groß-/Kleinschreibung).
|
|
Der Parameterwert ist typischerweise '0' oder '1', um eine Funktion aus- bzw.
|
|
einzuschalten. Nach der Veränderung eines Parameters, der die Bildschirmdarstellung
|
|
beeinflußt, kann es nötig sein, das Zeichenfenster aufzufrischen.
|
|
<p>
|
|
<b>Beispiel</b>
|
|
<pre>
|
|
SET Option.DrawUnprocessedPolygonEdgesContinuous 1;
|
|
</pre>
|
|
Folgende eaglerc-Parameter stehen zur Verfügung:
|
|
<p>
|
|
<dl>
|
|
<dt><b>Cmd.Delete.WireJointsWithoutCtrl</b>
|
|
<dd>
|
|
Falls Sie wollen, dass der DELETE-Befehl Wire-Verbindungspunkte löscht, ohne dass
|
|
die Ctrl-Taste gedrückt wird, so können Sie diesen Parameter auf '1' setzen.
|
|
<dt><b>Cmd.Wire.IgnoreCtrlForRadiusMode</b>
|
|
<dd>
|
|
Falls Sie die spezielle Funktion beim Zeichnen eines Wires, mit der man durch
|
|
Drücken von Ctrl den Radius eines Arcs definieren kann, nicht haben wollen,
|
|
so können Sie diesen Parameter auf '1' setzen.
|
|
Dadurch wird dieses Feature für alle Befehle, die Wires zeichnen, abgeschaltet.
|
|
<dt><b>ControlPanel.View.AutoOpenProjectFolder</b>
|
|
<dd>
|
|
Das automatische Öffnen des Projekt-Verzeichnisses beim Programmstart
|
|
(bzw. wenn ein Projekt durch Klicken auf seinen grauen Button aktiviert
|
|
wird) kann durch Setzen dieses Parameters auf '0' abgeschaltet werden.
|
|
<dt><b>Erc.AllowUserOverrideConsistencyCheck</b>
|
|
<dd>
|
|
Um Boards/Schematics bearbeiten zu können, die nur geringfügige
|
|
Inkonsistenzen aufweisen, können Sie durch Setzen dieses Parameters
|
|
auf '1' einen Dialog aktivieren der es Ihnen erlaubt den Editor dazu zu zwingen,
|
|
die Forward-/Backannotation durchzuführen, selbst wenn der ERC die Dateien als
|
|
inkonsistent erkannt hat.
|
|
<b>BEACHTEN SIE BITTE, DASS SIE DIES AUF EIGENES RISIKO MACHEN</b> - sollten die
|
|
Dateien danach zerstört werden, kann womöglich niemand mehr sie wiederherstellen.
|
|
Schließlich <b>hat</b> der ERC ja gemeldet, dass die Dateien inkonsistent sind!
|
|
<dt><b>Interface.MouseButtonReleaseTimeout</b>
|
|
<dd>
|
|
Die Zeit (in Millisekunden) innerhalb der das Loslassen einer Maustaste, welches
|
|
dem Drücken der Maustaste auf einem Button (zum Beispiel in einer Toolbar) folgt,
|
|
die Funktion des Buttons auslöst, selbst wenn das Loslassen der Maustaste
|
|
ausserhalb der Fläche des Buttons erfolgte. Standardwert ist 500, der Wert 0
|
|
schaltet diese Funktion ab. Hat dieser Parameter beim Programmstart den Wert 0,
|
|
so wirken sich etwaige Änderungen erst nach einem erneuten Programmstart aus.
|
|
<dt><b>Interface.PreferredUnit</b>
|
|
<dd>
|
|
Bei der Anzeige numerischer Werte in Dialog-Eingabefeldern werden die Einheiten
|
|
automatisch so ermittelt, dass sich die kleinste Anzahl von Nachkommastellen ergibt.
|
|
Dies kann beeinflusst werden durch Setzen dieses Parameters auf
|
|
'0' für automatische Wahl der Einheiten (default),
|
|
'1' für zöllige Einheiten,
|
|
'2' für metrische Einheiten.
|
|
<dt><b>Interface.UseCtrlForPanning</b>
|
|
<dd>
|
|
Das Verschieben des Zeichnungsauschnittes erfolgt durch Click&Drag
|
|
mit der mittleren Maustaste (nicht mehr durch Drücken der Ctrl-Taste wie
|
|
in älteren Versionen).
|
|
Falls Sie die alte Verhaltensweise wiederhaben wollen, können Sie dies
|
|
erreichen, indem Sie diesen Parameter auf '1' setzen.
|
|
Beachten Sie aber bitte, dass die Ctrl-Taste jetzt für spezielle Funktionen
|
|
einiger Befehle benutzt wird (zum Beispiel zum Selektieren von Objekten
|
|
an ihrem Aufhängepunkt bei MOVE), so dass Sie, bei Benutzung dieser speziellen
|
|
Funktionen, dann unter Umständen das Zeichenfenster unbeabsichtigt
|
|
verschieben können.
|
|
<dt><b>Option.DrawUnprocessedPolygonEdgesContinuous</b>
|
|
<dd>
|
|
Falls Ihnen die Art, wie die Kanten von nicht berechneten Polygonen
|
|
dargestellt werden (als gepunktete Linien), nicht zusagt, so können Sie
|
|
diesen Parameter auf '1' setzen.
|
|
Die Kanten von nicht berechneten Polygonen werden dann wieder als
|
|
durchgezogene Linien dargestellt, wie es vor Version 5 der Fall war
|
|
(allerdings nicht hell).
|
|
<dt><b>Option.LayerSequence</b>
|
|
<dd>
|
|
Die internen Layer werden in der Reihenfolge dargestellt, die dem tatsächlichen
|
|
Lagenaufbau entspricht, so dass das Ergebnis auch auf Druckern und PDF- bzw.
|
|
Postscript-Dateien brauchbar aussieht, wo die Layer nicht transparent sind.
|
|
Manchmal kann es erforderlich sein, dass benutzerdefinierte Layer vor den internen
|
|
Layern dargestellt werden müssen, anstatt nach diesen. Mit diesem Parameter kann
|
|
die Reihenfolge, in der die Layer dargestellt werden, festgelegt werden.
|
|
Er besteht aus einer Folge von Layer-Nummern bzw. Layer-Bereichen, optional gefolgt
|
|
von 't' oder 'b'.
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td>123</td> <td width=20><td>stellt Layer 123 dar</td></tr>
|
|
<tr><td>123t</td><td width=20><td>stellt Layer 123 dar, wenn die Ausgabe "von oben gesehen" erfolgt (nicht gespiegelt)</td></tr>
|
|
<tr><td>123b</td><td width=20><td>stellt Layer 123 dar, wenn die Ausgabe "von unten gesehen" erfolgt (gespiegelt)</td></tr>
|
|
<tr><td>123-140</td><td width=20><td>stellt die Layer 123 bis 140 in der angegeben Reihenfolge dar</td></tr>
|
|
<tr><td>140-123</td><td width=20><td>stellt die Layer 140 bis 123 in der angegeben Reihenfolge dar</td></tr>
|
|
<tr><td>*</td><td width=20><td>fügt die Standard-Sequenz der internen Layer ein</td></tr>
|
|
<tr><td>123b * 123t</td><td width=20><td>sorgt dafür, dass Layer 123 immer als erster dargestellt wird</td></tr>
|
|
</table>
|
|
<dd>
|
|
Beachten Sie, daß jeder Layer nur einmal dargestellt wird, auch wenn er mehrmals
|
|
aufgeführt ist. Die Standard-Sequenz der internen Layer ist<br>
|
|
48t 49t 19t 47t 20t 46t 23 27 25 59 57 55 53 50 51 21 44t 45t 37 35 31 29 33 39 41 43t 18t 17t 1-16 17b 18b 43b 42 40 34 30 32 36 38 45b 44b 22 52 54 56 58 60 26 28 24 46b 20b 47b 19b 49b 48b 61-99.<br>
|
|
Bei Ansicht von oben, wird die Layer-Sequenz von rechts nach links abgearbeitet,
|
|
während sie bei Ansicht von unten (gespiegelt) von links nach rechts abgearbeitet wird.
|
|
Zum Beispiel ist Layer 48 (Document) als 48t und 48b enthalten, damit dieser immer
|
|
als letzter dargestellt wird. Die Layer 21 (tPlace) und 22 (bPlace) hingegen sind
|
|
nur jeweils einmal aufgelistet, damit Sie an der richtigen Stelle erscheinen, je
|
|
nachdem, ob die Ausgabe gespiegelt erfolgt oder nicht.<br>
|
|
Alle nicht explizit in der Layer-Sequenz aufgeführten Layer werden nach der
|
|
gegebenen Sequenz, in aufsteigender Reihenfolge, dargestellt.
|
|
<dt><b>Option.RatsnestLimit</b>
|
|
<dd>
|
|
Der RATSNEST-Befehl verwendet alle Punkte eines Signals, auch wenn
|
|
dieses sehr komplex ist (in früheren Versionen blieben Wire-Endpunkte
|
|
unberücksichtigt, wenn die Gesamtzahl der Anknüpfungspunkte größer als 254
|
|
war). Hierfür wird mehr Speicherplatz beim Berechnen des Ratsnest benötigt.
|
|
Falls dies auf Ihrem System ein Problem darstellen sollte, so können Sie
|
|
auf die ursprüngliche Methode zurückschalten indem Sie diesen Parameter
|
|
auf '254' setzen.
|
|
Der angegebene Wert ist die Anzahl der Anknüpfungspunkte bis zu der Wire-
|
|
Endpunkte berücksichtigt werden und beschränkt somit den Speicherbedarf
|
|
(die Berechnung benutzt Speicher bis zum Quadrat des angegebenen Wertes,
|
|
so dass ein Wert von 1024 den verwendeten Speicher auf 1MB beschränkt).
|
|
Ein Wert von '0' steht für "keine Begrenzung". Ein Wert von '1' bewirkt,
|
|
das Luftlinien ausschließlich an Pads, Smds und Vias anknüpfen.
|
|
<dt><b>Option.RepositionMouseCursorAfterContextMenu</b>
|
|
<dd>
|
|
Normalerweise verändert EAGLE die Position des Mauszeigers nicht von sich aus.
|
|
Es gibt allerdings Benutzer, die möchten, dass der Mauszeiger auf den Punkt
|
|
zurückpositioniert wird, an dem er war, bevor ein Kontext-Menü im Zeichnungseditor
|
|
geöffnet wurde. Setzen Sie diesen Parameter auf '1' um diese Funktionalität
|
|
zu erhalten.
|
|
<dt><b>Option.ShowPartOrigins</b>
|
|
<dd>
|
|
Die Aufhängepunkte von Bauteilen in einem Schaltplan werden durch kleine
|
|
Kreuze gekennzeichnet.
|
|
Setzen Sie diesen Parameter auf '0' um dies abzuschalten.
|
|
<dt><b>Option.ShowTextOrigins</b>
|
|
<dd>
|
|
Die Aufhängepunkte von Texten werden durch kleine
|
|
Kreuze gekennzeichnet.
|
|
Setzen Sie diesen Parameter auf '0' um dies abzuschalten.
|
|
<dt><b>Option.ToggleCtrlForGroupSelectionAndContextMenu</b>
|
|
<dd>
|
|
Da die Kontext-Menü-Funktion über die rechte Maustaste im Konflikt mit
|
|
der Selektion einer Gruppe, wie sie vor Version 5 erfolgte, steht, wird eine
|
|
Gruppe jetzt mit Ctrl plus rechte Maustaste selektiert. Falls Sie die bisherige
|
|
Art der Gruppenselektierung wieder haben wollen, so können Sie diesen
|
|
Parameter auf '1' setzen.
|
|
Damit können Gruppen wieder mit der rechten Maustaste allein selektiert
|
|
werden und Kontext-Menüs werden mit Ctrl plus rechte Maustaste geöffnet.
|
|
<dt><b>Sch.Cmd.Add.AlwaysUseDeviceNameAsValue</b>
|
|
<dd>
|
|
Einige Benutzer wollen immer den Device-Namen als Bauteilwert verwenden,
|
|
selbst wenn das Bauteil einen benutzerdefinierten Wert bräuchte. Wer das
|
|
will kann diesen Parameter auf '1' setzen.
|
|
<dt><b>Warning.PartHasNoUserDefinableValue</b>
|
|
<dd>
|
|
Falls Sie die Warnung bezüglich Bauteilen, die keinen vom Benutzer zu
|
|
vergebenden Wert haben, nicht haben wollen, können Sie diesen Parameter
|
|
auf '0' setzen.
|
|
<dt><b>Warning.SupplyPinAutoOverwriteGeneratedNetName</b>
|
|
<dd>
|
|
Manche Benutzer wollen nicht gewarnt werden, wenn ein Supply-Pin den
|
|
generierten Namen eines bestehenden Netzsegments überschreibt. Wird dieser
|
|
Parameter auf '1' gesetzt, so wird diese Warnung abgeschaltet.
|
|
</dl>
|
|
|
|
|
|
<a name=93>
|
|
<h1>SHOW</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Stellt Objekte hervorgehoben dar.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>SHOW •..</tt><br>
|
|
<tt>SHOW name..</tt><br>
|
|
<tt>SHOW @ name..</tt>
|
|
<dt>
|
|
<b>Maustasten</b>
|
|
<dd>
|
|
<mb>Ctrl+Linke</mb> invertiert die Hervorhebung des selektierten Objekts.<br>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#57>INFO</a>
|
|
<p>
|
|
Der SHOW-Befehl dient zum Hervorheben von Objekten.
|
|
Einzelheiten werden in der Statuszeile aufgelistet.
|
|
Mit SHOW kann man auch ganze Signale und Netze
|
|
hervorheben (auf dem Bildschirm heller dargestellt).
|
|
Wird ein Bus ausgewählt, so werden auch alle zu diesem Bus gehörenden
|
|
Netze hervorgehoben.
|
|
<h2>Quervergleich zwischen Platine und Schaltplan</h2>
|
|
Bei aktivierter <a href=#341>Forward&Back-Annotation</a>
|
|
wird ein Objekt, das mit Hilfe des SHOW-Befehls heller dargestellt wird,
|
|
sowohl im Schaltplan als auch in der Platine heller dargestellt.
|
|
<h2>Mehrere Objekte</h2>
|
|
Wenn Sie mehrere Objekte mit dem SHOW-Befehl selektieren, wird jedes
|
|
einzelne hell dargestellt.
|
|
Sie können mehrere Objekte gleichzeitig hervorheben indem Sie diese jeweils
|
|
mit gedrückter Ctrl-Taste anklicken. Klicken Sie mit gedrückter Ctrl-Taste
|
|
auf ein Objekt, das bereits hervorgehoben dargestellt ist, so wird dieses
|
|
Objekt wieder in den nicht hervorgehobenen Zustand versetzt.
|
|
<p>
|
|
Werden mehrere Namen in einer Zeile eingegeben, so werden alle entsprechenden
|
|
Objekte gleichzeitig hell dargestellt.
|
|
<h2>Kleine Objekte</h2>
|
|
Wird das Zeichen <tt>@</tt> in der Kommandozeile angegeben, so wird ein Rechteck
|
|
um das hervorgehobene Objekt gezeichnet. Dies ist hilfreich bei der Suche nach
|
|
kleinen Objekten, die durch bloßes Hervorheben nicht leicht zu finden wären.
|
|
Wird mehr als ein Objekt hervorgehoben, so wird das Rechteck um alle Objekte
|
|
gezeichnet. Um das Rechteck zu sehen, kann es erforderlich sein, aus der Zeichnung
|
|
herauszuzoomen (oder WINDOW FIT einzugeben).
|
|
Soll ein Objekt mit dem Namen <tt>@</tt> hervorgehoben werden, so muss der Name
|
|
in einfache Hochkommas eingeschlossen werden.
|
|
<h2>Platzhalter</h2>
|
|
Falls der <tt>name</tt>-Parameter angegeben wurde, so sind die Zeichen <tt>'*'</tt>, <tt>'?'</tt>
|
|
und <tt>'[]'</tt> <i>Platzhalter</i> und haben folgende Bedeutung:
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>*</tt> </td><td width=20><td>steht für eine beliebige Anzahl beliebiger Zeichen</td></tr>
|
|
<tr><td><tt>?</tt> </td><td width=20><td>steht für genau ein Zeichen</td></tr>
|
|
<tr><td><tt>[...]</tt> </td><td width=20><td>steht für irgend eines der Zeichen zwischen den Klammern</td></tr>
|
|
</table>
|
|
<p>
|
|
Soll eines dieser Zeichen genau so gesucht werden, wie es ist, so muss es in eckige Klammern
|
|
eingeschlossen werden. Zum Beispiel findet <tt>abc[*]ghi</tt> die Zeichenfolge <tt>abc*ghi</tt>,
|
|
aber nicht <tt>abcdefghi</tt>.
|
|
<p>
|
|
Ein Bereich von Zeichen kann als <tt>[a-z]</tt> angegeben werden, was für eines der Zeichen
|
|
aus dem Bereich <tt>'a'</tt>...<tt>'z'</tt> steht.
|
|
<p>
|
|
Die spezielle Zeichenfolge <tt>[Zahl..Zahl]</tt> stellt einen <a href=#35>Busnamen mit Index</a>
|
|
dar und wird deshalb im Schaltplan nicht als Platzhalter behandelt.
|
|
<h2>Objekte auf anderen Seiten</h2>
|
|
Wird ein namentlich genanntes Objekt nicht auf der aktuellen Schaltplanseite
|
|
gefunden, so erscheint ein Dialog mit einer Liste aller Seiten, auf denen dieses
|
|
Objekt gefunden wurde. Wurde das Objekt auf keiner Seite gefunden, so wird als
|
|
Seitennummer in dieser Liste '-' angezeigt. Beachten Sie bitte, dass dieser Dialog
|
|
nur dann erscheint, wenn mindestens eines der durch Namen (bzw. Platzhalter)
|
|
angegebenen Objekte nicht auf der aktuellen Seite gefunden wurde. Wurden alle
|
|
Objekte auf der aktuellen Seite gefunden, so erscheint kein Dialog (selbst, wenn
|
|
einige Objekte auch auf anderen Seiten vorkommen). Wenn der Dialog erscheint, dann
|
|
enthält er alle gefundenen Objekte, auch diejenigen auf der aktuellen Seite.
|
|
<h2>Beispiele</h2>
|
|
<pre>
|
|
SHOW IC1
|
|
</pre>
|
|
IC1 wird hell und bleibt hell, bis der SHOW-Befehl beendet oder
|
|
ein anderer Name eingegeben wird.
|
|
<pre>
|
|
SHOW IC*
|
|
</pre>
|
|
Zeigt alle Objekte an deren Namen mit "IC" beginnt.
|
|
|
|
|
|
<a name=94>
|
|
<h1>SIGNAL</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Signale definieren.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>SIGNAL • •..</tt><br>
|
|
<tt>SIGNAL signal_name • •..</tt><br>
|
|
<tt>SIGNAL signal_name element_name pad_name..;</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#33>AUTO</a>,
|
|
<a href=#89>ROUTE</a>,
|
|
<a href=#68>NAME</a>,
|
|
<a href=#38>CLASS</a>,
|
|
<a href=#106>WIRE</a>,
|
|
<a href=#81>RATSNEST</a>,
|
|
<a href=#50>EXPORT</a>
|
|
<p>
|
|
Mit dem SIGNAL-Befehl definiert man Signale, also die Verbindungen
|
|
zwischen den Anschlüssen der Packages. Es sind mindestens zwei
|
|
Stützstellen anzugeben, da sonst keine Luftlinie entstehen kann.
|
|
<h2>Mauseingabe</h2>
|
|
Man selektiert mit der Maus der Reihe nach die Anschlüsse, die
|
|
miteinander verbunden werden sollen. EAGLE stellt die Signale als
|
|
Luftlinien im Unrouted-Layer dar.
|
|
<p>
|
|
Gibt man signal_name mit ein, dann erhält das Signal den
|
|
angegebenen Namen.
|
|
<h2>Texteingabe</h2>
|
|
Man kann ein Signal aber auch vollständig textuell definieren.
|
|
Die Eingabe
|
|
<pre>
|
|
SIG GND IC1 7 IC2 7 IC3 7;
|
|
</pre>
|
|
würde z.B. die Pads mit dem Namen '7' der ICs 1...3 miteinander
|
|
verbinden. Denken Sie an diese Möglichkeit im Zusammenhang mit
|
|
Script-Dateien. Sie können beispielsweise komplette Netzlisten
|
|
mit Hilfe von Script-Dateien eingeben.
|
|
<h2>Kurzschluss-Check</h2>
|
|
Versucht man, mit SIGNAL zwei Pads zu verbinden, die bereits
|
|
unterschiedlichen Signalen angehören, dann wird in einem Popup-Menü
|
|
nachgefragt, ob die beiden Signale verbunden werden sollen und welchen
|
|
Namen sie erhalten sollen.
|
|
<h2>Konturdaten</h2>
|
|
Der Signalname _OUTLINES_ gibt dem Polygon besondere Eigenschaften,
|
|
die man zur Erzeugung von <a href=#130>Konturdaten</a> (z. B.
|
|
zum Fräsen von Prototypen) benötigt. Dieser Name sollte ansonsten nicht
|
|
verwendet werden.
|
|
|
|
|
|
<a name=95>
|
|
<h1>SMASH</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Loslösen von Text-Variablen und Attributen von Bauteilen.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>SMASH •..</tt>
|
|
<dt>
|
|
<b>Maustasten</b>
|
|
<dd>
|
|
<mb>Ctrl+Rechte</mb> wirkt auf die Gruppe.
|
|
<mb>Shift+Linke</mb> macht die Loslösung der Texte wieder rückgängig.
|
|
<mb>Ctrl+Shift+Rechte</mb> macht die Loslösung der Texte für die Gruppe wieder rückgängig.
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#68>NAME</a>,
|
|
<a href=#103>VALUE</a>,
|
|
<a href=#99>TEXT</a>,
|
|
<a href=#32>ATTRIBUTE</a>
|
|
<p>
|
|
Den SMASH-Befehl wendet man auf Bauteile an, damit man anschließend
|
|
die zugehörigen Texte, die den aktuellen Namen, Wert bzw. Attribute
|
|
repräsentieren, separat bewegen kann (MOVE). Das ist vor allem
|
|
für Schalt- und Bestückungspläne nützlich.
|
|
<p>
|
|
Bauteile lassen sich
|
|
auch mit ihrem Namen selektieren. Das ist vor allem dann nützlich,
|
|
wenn sich das Objekt ausserhalb des gerade dargestellten Bildausschnitts
|
|
befindet. Beim Selektieren eines aus mehreren Gattern bestehenden Bauteils
|
|
im Schaltplan muss der volle, aus dem Bauteil- und dem jeweiligen Gatternamen
|
|
bestehende Name angegeben werden.
|
|
<p>
|
|
Nach dem SMASH-Befehl kann man die >NAME- und >VALUE-Texte
|
|
behandeln wie alle anderen Texte. Allerdings lässt sich ihr
|
|
Inhalt nicht mit CHANGE TEXT ändern.
|
|
<p>
|
|
Ein "gesmashtes" Element kann in den "nicht gesmashten" Zustand zurückgeführt
|
|
werden, indem es bei gedrückter <tt>Shift</tt>-Taste (und natürlich aktiviertem
|
|
SMASH-Befehl) angeklickt wird.
|
|
|
|
|
|
<a name=96>
|
|
<h1>SMD</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Plazieren von Smds in Packages.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>SMD [x_width y_width] [-roundness] [orientation] [flags] ['name'] •..</tt>
|
|
<dt>
|
|
<b>Maustasten</b>
|
|
<dd>
|
|
<mb>Mittlere</mb> wählt den Layer.<br>
|
|
<mb>Rechte</mb> dreht das SMD.<br>
|
|
<mb>Shift+Rechte</mb> kehrt die Richtung der Drehung um.
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#73>PAD</a>,
|
|
<a href=#36>CHANGE</a>,
|
|
<a href=#68>NAME</a>,
|
|
<a href=#89>ROUTE</a>,
|
|
<a href=#133>Design Rules</a>
|
|
<p>
|
|
Smd: Anschlussfläche für SMD-Bauelemente.
|
|
<p>
|
|
Der SMD-Befehl plaziert einen SMD-Anschluss in einem Package. Die
|
|
Eingabe der Länge und Breite vor dem Plazieren ändert die
|
|
Größe des Smds. Die Parameter werden in der aktuellen Maßeinheit
|
|
angegeben. Sie dürfen maximal 0.51602 Zoll (ca. 13.1 mm) betragen.
|
|
<p>
|
|
Die <tt>orientation</tt> (siehe Beschreibung bei <a href=#29>ADD</a>)
|
|
darf jeder Winkel im Bereich <tt>R0</tt>...<tt>R359.9</tt> sein. Das <tt>S</tt>-
|
|
bzw. <tt>M</tt>-Flag kann hier nicht benutzt werden.
|
|
<p>
|
|
Die eingegebene Smd-Größe bleibt für nachfolgende Operationen
|
|
erhalten.
|
|
<h2>Roundness</h2>
|
|
Der Wert für <tt>roundness</tt> kann ganzzahlig - mit negativen Vorzeichen, um es
|
|
vom width-Parameter zu unterscheiden - zwischen <tt>0</tt> und <tt>100</tt> angegeben
|
|
werden.
|
|
Der Wert <tt>0</tt> erzeugt rechteckige SMDs, während der Wert <tt>100</tt>
|
|
die Ecken der SMDs vollständig rundet.
|
|
Der Befehl
|
|
<pre>
|
|
SMD 50 50 -100 '1' •
|
|
</pre>
|
|
erzeugt zum Beispiel ein rundes SMD mit dem Namen '1' an der Position des
|
|
Mausklicks. Dieses kann man für ein BGA-Gehäuse (Ball Grid Array) verwenden.
|
|
<h2>Namen</h2>
|
|
Smd-Namen werden vom Programm automatisch erzeugt und können mit
|
|
dem NAME-Befehl geändert werden.
|
|
Der Name kann als Parameter auch im SMD-Befehl mit angegeben werden
|
|
(muss in Hochkommas eingeschlossen sein).
|
|
<h2>Flags</h2>
|
|
Folgende <i>flags</i> können dazu benutzt werden, das Erscheinungsbild eines Smds zu
|
|
beeinflussen:
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>NOSTOP</tt> </td><td width=20><td>keine Lötstopmaske generieren</td></tr>
|
|
<tr><td><tt>NOTHERMALS</tt> </td><td width=20><td>keine Thermals generieren</td></tr>
|
|
<tr><td><tt>NOCREAM</tt> </td><td width=20><td>keine Lotpastenmaske generieren</td></tr>
|
|
</table>
|
|
<p>
|
|
Standardmäßig generieren Smds automatisch Lötstopmaske, Lotpastenmaske und Thermals.
|
|
In speziellen Fällen kann es jedoch erwünscht sein, dass einzelne Smds dies nicht tun.
|
|
Die obigen <tt>NO...</tt>-Flags können benutzt werden um diese Eigenschaften zu
|
|
unterdrücken.<br>
|
|
Ein neu gestarteter SMD-Befehl setzt alle Flags auf ihre Standardwerte zurück.
|
|
Sobald ein Flag in der Kommandozeile angegeben wird, gilt es für alle nachfolgend
|
|
in diesem SMD-Befehl plazierten Smds.
|
|
<h2>Einzelne Smds</h2>
|
|
Einzelne Smds in Platinen sind als Package zu realisieren und dann
|
|
in die Platine zu holen.
|
|
<h2>Package verändern</h2>
|
|
Es ist nicht möglich, in einem Package, das in einem Device verwendet
|
|
wird, nachträglich ein Smd hinzuzufügen oder zu löschen,
|
|
da dies die im Device definierten Pin-/Pad-Zuordnungen (CONNECT-Befehl)
|
|
verändern würde.
|
|
|
|
|
|
<a name=97>
|
|
<h1>SPLIT</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Knicke in Wires einfügen.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>SPLIT • [curve | @radius] •..</tt>
|
|
<dt>
|
|
<b>Maustasten</b>
|
|
<dd>
|
|
<mb>Rechte</mb> ändert den Knickwinkel (siehe <a href=#92>SET Wire_Bend</a>).<br>
|
|
<mb>Shift+Rechte</mb> kehrt die Richtung des Weiterschaltens des Knickwinkels um.<br>
|
|
<mb>Ctrl+Rechte</mb> schaltet zwischen korrespondierenden Knickwinkeln hin und her.<br>
|
|
<mb>Ctrl+Linke</mb> beim Absetzen eines Wire-Endpunktes definiert den Kreisbogen-Radius.
|
|
<dt>
|
|
<b>Tastatur</b>
|
|
<dd>
|
|
<tt>F8: SPLIT</tt> aktiviert den SPLIT-Befehl.
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#66>MITER</a>,
|
|
<a href=#67>MOVE</a>,
|
|
<a href=#71>OPTIMIZE</a>,
|
|
<a href=#92>SET</a>
|
|
<p>
|
|
Den SPLIT-Befehl benötigt man, wenn nachträglich in Wires oder
|
|
Polygonen noch eine Abknickung erforderlich ist. SPLIT teilt Wires am
|
|
Anklickpunkt. Das kürzere Stück verläuft gemäß dem eingestellten
|
|
Knickwinkel (Wire_Bend), das längere verläuft in gerader Linie zum
|
|
nächsten Aufhängepunkt.
|
|
<p>
|
|
Wird der <i>curve</i> oder <i>@radius</i> Parameter angegeben, so kann ein Kreisbogen als Teil des Linienzuges
|
|
gezeichnet werden (siehe die ausführliche Beschreibung beim <a href=#106>WIRE</a>-Befehl).
|
|
<p>
|
|
Nach dem SPLIT-Befehl werden die betroffenen
|
|
Wire-Segmente wieder optimiert (entsprechend dem OPTIMIZE-Befehl),
|
|
sofern nicht zuvor der Befehl
|
|
<pre>
|
|
SET OPTIMIZING OFF;
|
|
</pre>
|
|
eingegeben wurde. Hat man diesen Befehl eingegeben, bleiben die
|
|
Trennstellen in den Wires erhalten. Sie bleiben auch dann erhalten,
|
|
wenn man im SPLIT-Befehl dieselbe Stelle zweimal mit der Maus anklickt.
|
|
<h2>Leitung verjüngen</h2>
|
|
Dazu selektiert man den SPLIT-Befehl, markiert den zu verjüngenden
|
|
Abschnitt mit zwei Mausklicks, gibt den Befehl
|
|
<pre>
|
|
CHANGE WIDTH breite
|
|
</pre>
|
|
ein und klickt mit der Maus das gewünschte Segment an.
|
|
|
|
|
|
<a name=98>
|
|
<h1>TECHNOLOGY</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Definiert eventuell vorhandene <i>Technologien</i> für ein Device.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>TECHNOLOGY name ..;</tt><br>
|
|
<tt>TECHNOLOGY -name ..;</tt><br>
|
|
<tt>TECHNOLOGY -* ..;</tt>
|
|
</dl>
|
|
<b>Siehe auch </b> <a href=#72>PACKAGE</a>,
|
|
<a href=#32>ATTRIBUTE</a>
|
|
<p>
|
|
Dieser Befehl wird im Device-Editor verwendet, um die verschiedenen <i>Technologien</i>
|
|
eines Bauteils im Device-Namen zu bestimmen.
|
|
Im Schaltplan- oder Board-Editor verhält sich der TECHNOLOGY-Befehl genau so
|
|
wie "<a href=#36>CHANGE TECHNOLOGY</a>".
|
|
<p>
|
|
Einer der Namen, die mit
|
|
dem TECHNOLOGY-Befehl definiert wurden, ersetzt den Platzhalter <tt>'*'</tt> im
|
|
Device-Set-Namen, sobald man das Device in einem Schaltplan plaziert.
|
|
Der Begriff <i>Technology</i> stammt von der hauptsächlichen Verwendung dieser Funktion
|
|
verschiedene Varianten eines Devices zu erzeugen, die alle dasselbe Schaltplan-Symbol,
|
|
dieselbe(n) Package-Variante(n) und dieselben Pin/Pad-Zuordnungen haben. Die
|
|
Devices unterscheiden sich nur im Namen, der sich beispielsweise für die
|
|
TTL-Bausteine im Bezug auf Ihre Technologie, wie "L", "LS", oder "HCT" unterscheiden.
|
|
<p>
|
|
Der TECHNOLOGY-Befehl kann nur angewendet werden, wenn schon vorher eine Package-Variante
|
|
über den <a href=#72>PACKAGE</a>-Befehl definiert wurde.
|
|
<p>
|
|
Ist kein <tt>'*'</tt>-Platzhalter im Device-Set-Namen angegeben, wird der Device-Set-Name
|
|
um die Technologie-Angabe zu einem vollständigen Device-Namen ergänzt.
|
|
Bitte beachten Sie, dass die Technologie vor der Package-Variante eingefügt wird.
|
|
Ist weder <tt>'*'</tt> noch <tt>'?'</tt> angegeben, setzt sich der Device-Name aus
|
|
<i>Device-Set-Name</i><tt>+</tt><i>Technology</i><tt>+</tt><i>Package-Variante</i> zusammen.
|
|
<p>
|
|
Die Namen (name), die mit dem TECHNOLOGY-Befehl angegeben sind, werden zu einer schon
|
|
vorhandenen Liste des aktuellen Devices hinzugefügt.
|
|
Geben Sie einen Namen mit <tt>'-'</tt> an, wird diese Bezeichnung aus der Liste entfernt.
|
|
Soll der Name mit einem <tt>'-'</tt> beginnen, muss dieser in einfachen Hochkommas
|
|
angegeben werden.
|
|
<tt>-*</tt> löscht alle Technologien.
|
|
<p>
|
|
Es sind nur die ASCII-Zeichen 33..126 als Technologie-Bezeichnung erlaubt (Kleinbuchstaben
|
|
werden in Großbuchstaben gewandelt). Die maximale Anzahl von Technologie-Varianten pro Device ist 254.
|
|
<p>
|
|
Die besondere "leere" Technologie kann in mit zwei Hochkommas angegeben werden,
|
|
also <tt>''</tt> (ohne Namen).
|
|
<p>
|
|
Beachten Sie bitte, dass der "Technologien"-Dialog alle Technologien aller Devices
|
|
in der geladenen Bibliothek enthält, wobei diejenigen, die vom aktuellen Device
|
|
verwendet werden, markiert sind.
|
|
<h2>Beispiel</h2>
|
|
In einem Device mit dem Namen "<tt>74*00</tt>" löscht der Befehl
|
|
<pre>
|
|
TECHNOLOGY -* '' L LS S HCT;
|
|
</pre>
|
|
zunächst alle bisherigen Technologien und erzeugt anschließend die folgenden
|
|
Technologie-Varianten:
|
|
<pre>
|
|
7400
|
|
74L00
|
|
74LS00
|
|
74S00
|
|
74HCT00
|
|
</pre>
|
|
|
|
|
|
<a name=99>
|
|
<h1>TEXT</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Plazieren von Text.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>TEXT beliebige_zeichen orientation •..</tt><br>
|
|
<tt>TEXT 'beliebige_zeichen' orientation •..</tt>
|
|
<dt>
|
|
<b>Maustasten</b>
|
|
<dd>
|
|
<mb>Mittlere</mb> wählt den Layer.<br>
|
|
<mb>Rechte</mb> dreht den Text.<br>
|
|
<mb>Shift+Rechte</mb> kehrt die Richtung der Drehung um.
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#36>CHANGE</a>,
|
|
<a href=#67>MOVE</a>,
|
|
<a href=#65>MIRROR</a>,
|
|
<a href=#88>ROTATE</a>,
|
|
<a href=#32>ATTRIBUTE</a>
|
|
<p>
|
|
Der TEXT-Befehl plaziert einen Text in einer Zeichnung, oder in einem
|
|
Bibliothekselement. Bei der Eingabe mehrerer Texte geht man sinnvollerweise
|
|
so vor, dass man zuerst den TEXT-Befehl aktiviert, dann tippt man
|
|
den ersten Begriff ein und setzt ihn mit der linken Maustaste ab,
|
|
dann den zweiten usw.
|
|
<h2>Schreibrichtung</h2>
|
|
Mit der rechten Maustaste dreht man den Text.
|
|
<p>
|
|
Als Option kann die Schreibrichtung (orientation)
|
|
auch textuell angegeben werden. Das ist vor allem für Script-Dateien
|
|
sinnvoll. Die entsprechenden Schlüsselwörter sind im <a href=#29>ADD</a>-Befehl
|
|
aufgeführt (R0, R90 usw.).
|
|
<p>
|
|
Text wird immer so dargestellt, dass er von vorne oder von rechts
|
|
zu lesen ist - auch wenn er rotiert wird. Nach zweimaligem Rotieren
|
|
erscheint er deshalb wieder gleich, aber der Aufhängepunkt liegt
|
|
nicht mehr links unten, sondern rechts oben. Denken Sie daran, wenn
|
|
sich ein Text scheinbar nicht mehr selektieren lässt.
|
|
<p>
|
|
Wenn Sie einen Text "auf dem Kopf stehend" darstellen wollen, so können
|
|
Sie das "Spin"-Flag für diesen Text setzen.
|
|
<h2>Text auf Lötseite</h2>
|
|
Texte in den Layern Bottom und bPlace werden automatisch gespiegelt.
|
|
<h2>Leerzeichen oder Strichpunkt</h2>
|
|
Sollen in einem Text mehrere aufeinanderfolgende Leerzeichen oder
|
|
ein Strichpunkt enthalten sein, dann setzt man den ganzen String in
|
|
Hochkommas. Sollen Hochkommas gedruckt werden, dann ist jedes einzelne
|
|
in Hochkommas einzuschließen.
|
|
<h2>Schlüsselwörter</h2>
|
|
Ist der TEXT-Befehl aktiv und enthält der einzugebende Text Wörter,
|
|
die EAGLE für Befehle oder Orientation-Schlüsselwörter
|
|
hält (z. B. und für UNDO), dann sind diese
|
|
Wörter oder der gesamte Text in Hochkommas einzuschließen.
|
|
<h2>Texthöhe</h2>
|
|
Die Zeichengröße und die Strichstärke ändert man mit
|
|
den Befehlen:
|
|
<pre>
|
|
CHANGE SIZE text_size •..
|
|
CHANGE RATIO ratio •..
|
|
</pre>
|
|
Maximale Texthöhe: ca. 2 Zoll.<br>
|
|
Maximale Strichstärke: 0.51602 Zoll (ca. 13.1 mm)<br>
|
|
Parameter "ratio": 0...31 (% der Texthöhe).
|
|
<h2>Schriftart</h2>
|
|
Texte können in drei Schriftarten verwendet werden:
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>Vector</tt></td> <td width=20><td>der programm-interne Vektor-Font</td></tr>
|
|
<tr><td><tt>Proportional</tt></td> <td width=20><td>ein Proportional-Pixel-Font (üblicherweise 'Helvetica')</td></tr>
|
|
<tr><td><tt>Fixed</tt></td> <td width=20><td>ein Monospaced-Pixel-Font (üblicherweise 'Courier')</td></tr>
|
|
</table>
|
|
<p>
|
|
Die Schriftart wird mit CHANGE verändert:
|
|
<pre>
|
|
CHANGE FONT VECTOR|PROPORTIONAL|FIXED •..
|
|
</pre>
|
|
Das Programm versucht die Nicht-<tt>Vector</tt>-Schriftarten so gut wie möglich auszugeben.
|
|
Da diese jedoch vom Grafik-Interface Ihres Systems gezeichnet werden, können bei
|
|
<tt>Proportional</tt>- und <tt>Fixed</tt>-Schriftart Abweichungen in der Größe
|
|
bzw. Länge entstehen.
|
|
<p>
|
|
Setzen Sie die Option "Immer Vektor-Schrift" im <a href=#16>User-Interface-Dialog</a>,
|
|
werden alle Texte mit dem programm-internen Vektor-Font dargestellt und ausgegeben.
|
|
Diese Einstellung ist dann sinnvoll, wenn vom System die anderen Schriftarten nicht
|
|
korrekt angezeigt werden.<br>
|
|
Beim Anlegen eines neuen Boards oder Schaltplans wird die aktuelle Einstellung
|
|
in der Zeichnungsdatei gespeichert. So wird sicher gestellt (auch bei der Weitergabe
|
|
an Dritte, die evtl. mit anderen Einstellungen arbeiten), dass die Datei mit
|
|
Ihren Einstellungen ausgegeben wird.<br>
|
|
Verwenden Sie <tt><a href=#92>SET</a> VECTOR_FONT OFF|ON</tt>, um die
|
|
Einstellungen für ein bestehendes Layout oder einen Schaltplan zu ändern.
|
|
<p>
|
|
Wenn Sie Daten mit dem CAM-Prozessor erzeugen, werden Texte immer mit
|
|
<tt>Vector</tt>-Font ausgegeben. Andere Fonts werden nicht unterstützt.
|
|
<p>
|
|
Soll ein Text in einem Nicht-<tt>Vector</tt>-Font von einem Signal-Polygon subtrahiert
|
|
werden, wird nur das umschließende Rechteck ausgespart. Aufgrund der oben angeführten
|
|
Probleme bzgl. Einhalten von Größe und Länge der Texte, kann es sein, dass der Text
|
|
über das umschließende Rechteck hinausgeht. Sollten Sie also Texte von Polygonen
|
|
subtrahieren wollen, ist es höchst empfehlenswert nur den <tt>Vector</tt>-Font zu
|
|
verwenden.
|
|
<p>
|
|
Der Parameter <i>Ratio</i> hat für Nicht-<tt>Vector</tt>-Fonts keine Bedeutung.
|
|
<h2>Zeichensatz</h2>
|
|
Eine korrekte Darstellung wird nur für die Zeichen im ASCII-Code unter
|
|
128 garantiert. Alle anderen Zeichen darüber können systemabhängig zu
|
|
unterschiedlichen Darstellungen in den unterschiedlichen Schriftarten führen.
|
|
<h2>Spezielle Platzhalter-Texte</h2>
|
|
Spezielle Texte in einer Symbol- oder Package-Zeichnung, die mit <tt>'>'</tt>
|
|
gekennzeichnet sind, werden durch konkreten Werten im Schaltplan bzw. Board ersetzt:
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>>NAME</tt> </td><td width=20><td>Bauteilname (ggf.+Gate-Name) 1)</td></tr>
|
|
<tr><td><tt>>VALUE</tt> </td><td width=20><td>Bauteilwert/-typ 1)</td></tr>
|
|
<tr><td><tt>>PART</tt> </td><td width=20><td>Bauteilname 2)</td></tr>
|
|
<tr><td><tt>>GATE</tt> </td><td width=20><td>Gate-Name 2)</td></tr>
|
|
<tr><td><tt>>XREF</tt> </td><td width=20><td>Bauteil-Querverweis 2)</td></tr>
|
|
<tr><td><tt>>CONTACT_XREF</tt> </td><td width=20><td>Kontaktspiegel 2)</td></tr>
|
|
<tr><td><tt>>DRAWING_NAME</tt> </td><td width=20><td>Zeichnungsname</td></tr>
|
|
<tr><td><tt>>LAST_DATE_TIME</tt> </td><td width=20><td>Datum/Zeit der letzten Änderung</td></tr>
|
|
<tr><td><tt>>PLOT_DATE_TIME</tt> </td><td width=20><td>Datum/Zeit der Plot-Erstellung</td></tr>
|
|
<tr><td><tt>>SHEETNR</tt> </td><td width=20><td>Seitennummer eines Schaltplans 3)</td></tr>
|
|
<tr><td><tt>>SHEETS</tt> </td><td width=20><td>Gesamtzahl der Seiten eines Schaltplans 3)</td></tr>
|
|
<tr><td><tt>>SHEET</tt> </td><td width=20><td>entspricht ">SHEETNR/>SHEETS" 3)</td></tr>
|
|
</table>
|
|
<p>
|
|
1) Nur im Package und Symbol<br>
|
|
2) Nur im Symbol<br>
|
|
3) Nur im Symbol oder Schaltplan
|
|
<p>
|
|
Das Format, in welchem ein Bauteil-Querverweis angezeigt wird, kann über die
|
|
"Format für Bauteil-Querverweise" Zeichenfolge im Dialog "Optionen/Einstellungen/Verschiedenes"
|
|
oder über den <a href=#92>SET</a> Befehl festgelegt werden.
|
|
Folgende Platzhalter sind definiert und können in beliebiger Reihenfolge verwendet werden:
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>%S</tt></td> <td width=20><td>die Seitennummer</td></tr>
|
|
<tr><td><tt>%C</tt></td> <td width=20><td>die Spalte auf der Seite</td></tr>
|
|
<tr><td><tt>%R</tt></td> <td width=20><td>die Zeile auf der Seite</td></tr>
|
|
</table>
|
|
<p>
|
|
Das Standard-Format ist <tt>"/%S.%C%R"</tt>. Neben den definierten Platzhaltern
|
|
können Sie auch beliebige andere ASCII-Zeichen verwenden.
|
|
<h2>Attribute</h2>
|
|
Soll in einer Symbol- oder Package-Zeichnung ein <a href=#32>Attribut</a>
|
|
des konkreten Bauteils dargestellt werden, so kann hierfür ein Text mit dem Namen
|
|
des Attributs und vorangestelltem <tt>'>'</tt> benutzt werden.
|
|
Standardmäßig wird nur der Wert des gegebenen Attributs dargestellt. Folgt auf den
|
|
Namen des Attributs eines der Zeichen <tt>'='</tt>, <tt>'~'</tt> oder <tt>'!'</tt>,
|
|
so geschieht die Darstellung wie folgt:
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td with=100><tt>>ABC </tt></td><td width=20><td><tt>123</tt></td></tr>
|
|
<tr><td><tt>>ABC=</tt></td><td width=20><td><tt>ABC = 123</tt></td></tr>
|
|
<tr><td><tt>>ABC~</tt></td><td width=20><td><tt>ABC</tt></td></tr>
|
|
<tr><td><tt>>ABC!</tt></td><td width=20><td><tt><i>nothing</i></tt></td></tr>
|
|
</table>
|
|
<h2>Überstrichener Text</h2>
|
|
Text kann <i>überstrichen</i> werden, was zum Beispiel sinnvoll ist für
|
|
die Namen von negierten Signalen ("active low", siehe auch
|
|
<a href=#69>NET</a>, <a href=#35>BUS</a> und <a href=#75>PIN</a>).
|
|
Hierfür muss dem Text ein Ausrufezeichen (<tt>'!'</tt>) vorangestellt werden, wie in
|
|
<pre>
|
|
!RESET
|
|
</pre>
|
|
was als
|
|
<pre>
|
|
_____
|
|
RESET
|
|
</pre>
|
|
dargestellt würde. Diese Möglichkeit ist nicht auf Signalnamen beschränkt,
|
|
sondern kann in allen Texten benutzt werden. Man kann auch nur einen Teil
|
|
eines Textes überstreichen, wie in
|
|
<pre>
|
|
!RST!/NMI
|
|
R/!W
|
|
</pre>
|
|
was als
|
|
<pre>
|
|
___
|
|
RST/NMI
|
|
_
|
|
R/W
|
|
</pre>
|
|
dargestellt würde. Beachten Sie das zweite Ausrufezeichen, welches das
|
|
Ende des Überstrichs markiert. Ein Text kann beliebig viele Überstriche
|
|
enthalten. Soll ein Text ein Ausrufezeichen enthalten, welches keinen
|
|
Überstrich erzeugt, so muss diesem ein Backslash vorangestellt werden.
|
|
Um die Notwendigkeit von Backslashes auf ein Minimum zu reduzieren startet
|
|
ein Ausrufezeichen einen Überstrich dann nicht, wenn es das letzte Zeichen
|
|
eines Textes ist, oder wenn es unmittelbar von einem Leerzeichen, einem
|
|
weiteren Ausrufezeichen, einem Apostroph, einem Anführungszeichen oder
|
|
einer schließenden runden, eckigen oder geschweiften Klammer gefolgt wird.
|
|
Ein Ausrufezeichen bzw. Komma ohne vorangestellten Backslash, das nach
|
|
einem Ausrufezeichen steht, welches einen Überstrich begonnen hat, beendet
|
|
den Überstrich (dass das Komma einen Überstrich beendet ist notwendig für
|
|
Busse).
|
|
|
|
|
|
<a name=100>
|
|
<h1>UNDO</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Vorhergehende Befehle zurücknehmen.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>UNDO;</tt>
|
|
<dt>
|
|
<b>Tastatur</b>
|
|
<dd>
|
|
<tt>F9: UNDO</tt> UNDO-Befehl ausführen.
|
|
<tt>Alt+BS: UNDO</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#83>REDO</a>,
|
|
<a href=#92>SET</a>,
|
|
<a href=#341>Forward&Back-Annotation</a>
|
|
<p>
|
|
Mit dem Befehl UNDO kann man Befehle rückgängig machen. Das
|
|
ist insbesondere dann nützlich, wenn man z. B. versehentlich etwas
|
|
gelöscht hat. Die mehrmalige Eingabe von UNDO macht entsprechend
|
|
viele Befehle rückgängig. Das geht bis zum Zustand nach dem
|
|
letzen EDIT-, OPEN-, AUTO oder REMOVE-Befehl. Diese Befehle
|
|
löschen die Vorgeschichte.
|
|
<p>
|
|
Die UNDO-Funktion benötigt Platz auf der Platte und kann die Eingabe
|
|
von Script-Dateien erheblich verlangsamen.
|
|
Sie lässt sich bei Bedarf mit dem Befehl
|
|
<pre>
|
|
SET UNDO_LOG OFF;
|
|
</pre>
|
|
abschalten.
|
|
<p>
|
|
UNDO/REDO ist vollkommen in den Mechanismus der Forward&Back-Annotation
|
|
integriert.
|
|
|
|
|
|
<a name=101>
|
|
<h1>UPDATE</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Aktualisiert Bibliotheks-Elemente.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>UPDATE</tt><br>
|
|
<tt>UPDATE;</tt><br>
|
|
<tt>UPDATE library_name..;</tt><br>
|
|
<tt>UPDATE package_name@library_name..;</tt><br>
|
|
<tt>UPDATE +@ | -@ [library_name..];</tt><br>
|
|
<tt>UPDATE old_library_name = new_library_name;</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#29>ADD</a>,
|
|
<a href=#86>REPLACE</a>
|
|
<p>
|
|
Der UPDATE-Befehl vergleicht Bauteile in einem Layout oder Schaltplan
|
|
mit den zugehörigen Bibliothekselementen und aktualisiert diese, sofern
|
|
Unterschiede festgestellt werden. Wird UPDATE im Bibliotheks-Editor ausgeführt,
|
|
so werden die in der geladenen Bibliothek befindlichen Packages aus den angegebenen
|
|
Bibliotheken aktualisiert.
|
|
<p>
|
|
Wird der UPDATE-Befehl ohne Parameter aufgerufen, öffnet sich ein Datei-Dialog,
|
|
aus dem man die Bibliothek wählt, deren Bauteile mit den Definitionen in
|
|
der Zeichnung verglichen werden soll.
|
|
<p>
|
|
Werden eine oder mehrere Bibliotheken angegeben, überpüft das Programm alle
|
|
Bauteile aus diesen Bibliotheken. Der Bibliotheksname kann entweder als einfacher
|
|
Name (wie "ttl" oder "ttl.lbr") oder mit voller Pfadangabe
|
|
(wie "/home/mydir/myproject/ttl.lbr" oder "../lbr/ttl") angegeben werden.
|
|
<h2>Update im Layout oder Schaltplan</h2>
|
|
Wird der Befehl ohne Parameter mit einem <tt>';'</tt> abgeschlossen, werden alle
|
|
Bauteile überprüft.
|
|
<p>
|
|
Falls der erste Parameter <tt>'+@'</tt> ist, werden die Namen der angegebenen Bibliotheken
|
|
(oder aller Bibliotheken, falls keine angegeben wurden) um das <tt>'@'</tt>-Zeichen gefolgt
|
|
von einer Zahl erweitert. Dies kann dazu benutzt werden um sicherzustellen, dass die in einer
|
|
Zeichnung enthaltenen Bibliotheken nicht verändert werden wenn ein Bauteil aus einer neueren
|
|
Bibliothek gleichen Namens in die Zeichnung eingefügt wird. Bibliotheksnamen die bereits
|
|
mit dem <tt>'@'</tt>-Zeichen gefolgt von einer Zahl enden werden nicht verändert.
|
|
<p>
|
|
Falls der erste Parameter <tt>'-@'</tt> ist, wird das <tt>'@'</tt>-Zeichen (gefolgt von einer Zahl)
|
|
vom Ende der angegebenen Bibliotheksnamen (oder aller Bibliotheksnamen, falls keine angegeben
|
|
wurden) entfernt. Dies funktioniert natürlich nur dann, wenn sich noch keine Bibliothek mit diesem
|
|
neuen Namen in der Zeichnung befindet.
|
|
<p>
|
|
Bitte beachten Sie, dass "UPDATE +@;" gefolgt von "UPDATE -@;" (und umgekehrt) nicht unbedingt
|
|
die ursprüngliche Folge von Bibliotheksnamen ergeben muss, da die Reihenfolge, in der die Namen
|
|
bearbeitet werden, von der Reihenfolge der Bibliotheken in der Zeichnungsdatei abhängt.
|
|
<p>
|
|
Die Bibliotheksdefinitionen, die in einem Schaltplan oder Board gespeichert sind,
|
|
werden nur anhand des Bibliotheksnamens (z. B. "ttl") identifiziert. Bei der
|
|
Entscheidung ob das Bauteil überprüft werden soll oder nicht, wird nur dieser
|
|
Name berücksichtigt.
|
|
Die Bibliotheken werden in den unter "Libraries" im
|
|
<a href=#14>Directories-Dialog</a> angegebenen Verzeichnissen,
|
|
von links nach rechts, gesucht.
|
|
Die erste Bibliothek mit dem angegebenen Namen, die in den Verzeichnissen gefunden wird,
|
|
wird verwendet. Bitte beachten Sie, dass bei den Bibliotheksnamen nicht zwischen
|
|
Groß- und Kleinschreibung unterschieden wird. Es ist nicht relevant ob die
|
|
gesuchte Bibliothek zur Zeit "in use" ist oder nicht. Kann eine Bibliothek nicht
|
|
gefunden werden, findet auch kein Update statt. In diesem Fall wird keine
|
|
Fehlermeldung ausgegeben.
|
|
<p>
|
|
Wird der UPDATE-Befehl in einem Schaltplan oder Board gestartet, und sind diese
|
|
über die <a href=#341>Forward&Back Annotation</a> verbunden,
|
|
aktualisiert EAGLE die Bauteile in beiden Dateien.
|
|
<p>
|
|
In manchen Fällen wird es notwendig sein anzugeben, ob Gates, Pins oder Pads
|
|
aufgrund ihres Namens oder ihrer Koordinaten zugeordnet werden sollen. Das ist dann
|
|
der Fall, wenn die zugehörigen Bibliotheksobjekte verschoben oder umbenannt
|
|
wurden. Wenn zuviele Änderungen gemacht wurden (z. B. wurde ein Pin verschoben
|
|
und umbenannt), ist ein automatisches Aktualisieren nicht möglich. In diesem
|
|
Fall sollte man die Bibliotheksänderung entweder in mehreren Schritten machen
|
|
(erst Umbenennen, dann Verschieben) oder das ganze Element umbenennen, so dass es
|
|
nicht getauscht wird.
|
|
<p>
|
|
In der Notation <tt>old_library_name = new_library_name</tt> (beachten Sie, dass
|
|
vor und nach dem <tt>'='</tt> Zeichen jeweils mindestens ein Leerzeichen stehen muss)
|
|
sucht der UPDATE-Befehl die Bibliothek <i>old_library_name</i> im aktuellen Board
|
|
oder Schaltplan und aktualisiert diese mit dem Inhalt von <i>new_library_name</i>.
|
|
Hierbei ist zu beachten, dass <i>old_library_name</i> ein reiner Bibliotheksname
|
|
sein muss, ohne Pfad, während <i>new_library_name</i> ein
|
|
vollständiger Pfadname sein kann. Wurde der Update erfolgreich ausgeführt, so
|
|
wird auch die Bibliothek im aktuellen Board oder Schaltplan entsprechend umbenannt - aus diesem Grund ist diese
|
|
ganze Operation natürlich nur dann möglich, wenn <i>new_library_name</i> bisher
|
|
im aktuellen Board oder Schaltplan noch nicht verwendet wurde.
|
|
<p>
|
|
<b>Achtung: Nach jedem Library Update in einem Layout oder Schaltplan sollten Sie unbedingt einen
|
|
<a href=#46>Design Rule Check</a> (DRC) und einen
|
|
<a href=#48>Electrical Rule Check</a> (ERC) durchführen!</b>
|
|
<h2>Update in einer Bibliothek</h2>
|
|
Beim Update in einer Bibliothek werden alle in dieser befindlichen Packages durch
|
|
die entsprechenden Versionen aus den angegebenen Bibliotheken ersetzt.
|
|
<p>
|
|
Durch die Angabe des Package-Namens (package_name@library_name) kann dafür gesorgt
|
|
werden, dass nur ein ganz bestimmtes Package ersetzt wird.
|
|
|
|
|
|
<a name=102>
|
|
<h1>USE</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Bibliothek zur Benutzung markieren.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>USE</tt><br>
|
|
<tt>USE -*;</tt><br>
|
|
<tt>USE library_name..;</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#29>ADD</a>,
|
|
<a href=#86>REPLACE</a>
|
|
<p>
|
|
Der USE-Befehl markiert eine Bibliothek so, dass sie für die Befehle
|
|
<a href=#29>ADD</a> oder <a href=#86>REPLACE</a>
|
|
verfügbar ist.
|
|
<p>
|
|
Rufen Sie den USE-Befehl ohne Parameter auf, öffnet sich ein Datei-Dialog
|
|
aus dem man eine Bibliotheksdatei auswählen kann.
|
|
Falls für Bibliotheken im
|
|
"Optionen/Verzeichnisse"-Dialog
|
|
ein Pfad definiert wurde, erscheinen im Datei-Dialog
|
|
die Bibliotheken aus diesem Verzeichnis.
|
|
<p>
|
|
Der spezielle Parameter <tt>-*</tt> bewirkt, dass alle bisher markierten
|
|
Bibliotheken aufgegeben werden.
|
|
<p>
|
|
<tt>library_name</tt> kann der volle Name einer Bibliothek oder ein
|
|
teilqualifizierter Name sein.
|
|
Falls <tt>library_name</tt> der Name eines Verzeichnisses ist, werden alle
|
|
Bibliotheken aus diesem Verzeichnis markiert.
|
|
<p>
|
|
Der Suffix <tt>.lbr</tt> braucht nicht angegeben zu werden.
|
|
<p>
|
|
EAGLE übernimmt die komplette Bibliotheksinformation in die Zeichnung,
|
|
deshalb ist die Bibliothek zum Bearbeiten fertiger Platinen nicht
|
|
mehr erforderlich.
|
|
<p>
|
|
Änderungen an einer Bibliothek wirken sich nicht auf Elemente
|
|
in den schon bestehenden Zeichnungen aus.
|
|
Siehe <a href=#101>UPDATE</a>-Befehl, um Bauteile durch
|
|
aktualisierte Bibliothekselemente zu ersetzen.
|
|
<h2>Auswählen der Bibliotheken über das Control Panel</h2>
|
|
Wenn eine Bibliothek, die Sie benutzen wollen im Bibliotheks-Editor
|
|
verändert und noch nicht gespeichert wurde, werden Sie gefragt, ob die Datei
|
|
jetzt gespeichert werden soll oder nicht. Beantworten Sie diese Frage mit
|
|
<i>Yes</i>, wird die Datei gespeichert und Sie benutzen die modifizierte Datei.
|
|
Antworten Sie mit <i>No</i>, wird die Datei nicht gespeichert und Sie benutzen
|
|
die Bibliothek unverändert, so wie sie auf der Festplatte gespeichert ist.
|
|
Die Schaltfläche <i>Cancel</i> bricht den Befehl ab, so dass weder die Datei
|
|
gespeichert noch diese Bibliothek "in use" ist.
|
|
Bibliotheken können im <a href=#12>Control Panel</a> als "in use"
|
|
markiert werden, indem Sie auf den Marker klicken, der seine Farbe ändert, um anzuzeigen,
|
|
ob die Bibliothek "in use" ist, oder durch die Auswahl des Punkts "Use" im Kontext-Menü
|
|
des Bibliothekseintrags in der Baumansicht. Im Kontext-Menü gibt es die Möglichkeit
|
|
alle <i>all</i> oder keine <i>none</i> der Bibliotheken zu wählen.
|
|
<h2>Bibliotheken "in use" und Projekte</h2>
|
|
Die Bibliotheken, die "in use" sind, werden in der Projekt-Datei (eagle.epf) gespeichert,
|
|
sofern ein Projekt geladen ist.
|
|
<h2>Beispiele</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>USE</tt> </td><td width=20><td>öffnet den Datei-Dialog zur Auswahl einer Bibliothek</td></tr>
|
|
<tr><td><tt>USE -*;</tt> </td><td width=20><td>gibt alle vorher mit USE markierten Bibliotheken auf</td></tr>
|
|
<tr><td><tt>USE demo trans*;</tt> </td><td width=20><td>markiert die Bibliothek demo.lbr und alle Bibliotheken mit Namen trans*.lbr</td></tr>
|
|
<tr><td><tt>USE -* /eagle/lbr;</tt> </td><td width=20><td>gibt zunächst alle bereits makierten Bibliotheken auf und markiert dann alle Bibliotheken aus dem Verzeichnis /eagle/lbr</td></tr>
|
|
</table>
|
|
|
|
|
|
<a name=103>
|
|
<h1>VALUE</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Elementwert eintragen und ändern.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>VALUE •..</tt><br>
|
|
<tt>VALUE wert •..</tt><br>
|
|
<tt>VALUE name wert ..</tt><br>
|
|
<tt>VALUE ON;</tt><br>
|
|
<tt>VALUE OFF;</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#68>NAME</a>,
|
|
<a href=#95>SMASH</a>
|
|
<h2>In Platine und Schaltplan</h2>
|
|
Elemente kann man mit einem Wert versehen, etwa 10k bei einem Widerstand.
|
|
Bei ICs trägt man anstelle des Wertes sinnvollerweise den Typ
|
|
ein (z. B. 7400). Den Wert bzw. Typ trägt man mit dem VALUE-Befehl
|
|
ein. Der Befehl selektiert das nächstgelegene Element und öffnet
|
|
ein Popup-Menü, in dem man einen neuen Wert festlegen oder den
|
|
bisherigen verändern kann.
|
|
<p>
|
|
Gibt man wert an, bevor man das Element mit der Maus selektiert,
|
|
dann erhalten alle nachfolgend selektierten Elemente diesen Wert.
|
|
Das ist sehr praktisch, wenn man z. B. eine ganze Reihe von ICs auf
|
|
denselben Wert setzen will.
|
|
<p>
|
|
Werden name und wert angegeben, so erhält das Element
|
|
name den angegebenen Wert.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
VALUE R1 10k R2 100k
|
|
</pre>
|
|
Hier wurde mehreren Elementen in einem Befehl je ein Wert zugewiesen.
|
|
Diese Möglichkeit lässt sich auch in Script-Dateien nach
|
|
folgendem Muster ausnutzen:
|
|
<pre>
|
|
VALUE R1 10k \
|
|
R2 100k \
|
|
R3 5.6k \
|
|
C1 10uF \
|
|
C2 22nF \
|
|
...
|
|
</pre>
|
|
Der Backslash ('\') verhindert, dass in der nächsten Zeile ein Parameter
|
|
mit einem Schlüsselwort verwechselt wird.
|
|
<h2>Im Device: Wert oder Typ</h2>
|
|
Wendet man den VALUE-Befehl im Device-Editier-Modus an, dann sind
|
|
die Parameter On und Off zulässig.
|
|
<p>
|
|
On: Anstelle des Platzhalters VALUE (im Symbol definiert) kann im
|
|
Schaltplan der aktuelle Wert eingegeben werden.
|
|
<p>
|
|
Off: Anstelle des Platzhalters VALUE erscheint im Schaltplan der Device-Name
|
|
(z.B. 74LS00N). Er lässt sich im Schaltplan nur nach Rückfrage mit dem
|
|
VALUE-Befehl verändern.
|
|
|
|
|
|
<a name=104>
|
|
<h1>VIA</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Plazieren von Durchkontaktierungen in Platinen.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>VIA ['signal_name'] [diameter] [shape] [layers] [flags] •..</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#96>SMD</a>,
|
|
<a href=#36>CHANGE</a>,
|
|
<a href=#45>DISPLAY</a>,
|
|
<a href=#92>SET</a>,
|
|
<a href=#73>PAD</a>,
|
|
<a href=#133>Design Rules</a>
|
|
<p>
|
|
Der VIA-Befehl plaziert ein Via in einer Platine. Dabei fügt er
|
|
das Via zu einem Signal hinzu (falls es auf einer Leitung plaziert
|
|
wird). Werden durch das Via zwei oder mehrere Signale verbunden,
|
|
so erfolgt eine Nachfrage, ob dies wirklich beabsichtgt ist.
|
|
<h2>Signalname</h2>
|
|
Der Parameter <tt>signal_name</tt> ist in erster Linie für die
|
|
Anwendung in Script-Dateien gedacht, die generierte Daten einlesen.
|
|
Wenn ein Signalname angegeben ist, werden alle folgenden Vias mit
|
|
diesem Signal verbunden, und es wird keine automatische Prüfung
|
|
durchgeführt.<br>
|
|
<b>Diese Möglichkeit ist mit großer Vorsicht
|
|
einzusetzen, da es zu Kurzschlüssen kommen kann, wenn ein Via so
|
|
plaziert wird, dass es unterschiedliche Signale verbindet. Bitte führen
|
|
Sie deshalb einen
|
|
<a href=#46>Design Rule Check</a> durch, nachdem Sie
|
|
den VIA-Befehl mit dem Parameter
|
|
<tt>signal_name</tt> benutzt haben!</b>
|
|
<h2>Via-Durchmesser und Bohrdurchmesser</h2>
|
|
Die Eingabe eines Durchmessers vor dem Plazieren ändert die Größe
|
|
des Vias. Der Durchmesser wird in der aktuellen Maßeinheit angegeben.
|
|
Er darf maximal 0.51602 Zoll (ca. 13.1 mm) betragen.
|
|
<p>
|
|
Die eingegebene Größe bleibt für nachfolgende Operationen
|
|
erhalten.
|
|
<p>
|
|
Der Bohrdurchmesser entspricht dem Durchmesser, der für Pads eingestellt
|
|
ist. Er lässt sich mit
|
|
<pre>
|
|
CHANGE DRILL durchmesser •
|
|
</pre>
|
|
einstellen und verändern.
|
|
<p>
|
|
Vias erzeugen Bohrsymbole im Layer Drills und die Lötstopmaske in den
|
|
Layern tStop/bStop.
|
|
<h2>Via-Form</h2>
|
|
Ein Via kann eine der folgenden Formen (shape) haben:
|
|
<p>
|
|
Square quadratisch<br>
|
|
Round rund<br>
|
|
Octagon achteckig
|
|
<p>
|
|
Diese Formen gelten nur für die Aussenlagen (Top bzw. Bottom).
|
|
In den Innenlagen ist die Form immer "rund".
|
|
<p>
|
|
Die Via-Form kann entweder (wie der Durchmesser) eingegeben werden,
|
|
während der VIA-Befehl aktiv ist, oder sie kann mit dem Befehl
|
|
<pre>
|
|
CHANGE SHAPE shape •
|
|
</pre>
|
|
verändert werden.
|
|
<p>
|
|
Die eingegebene Form bleibt für nachfolgende Operationen erhalten.
|
|
<p>
|
|
Beachten Sie bitte, dass die tatsächlichen Werte für Via-Form und -Durchmesser durch die
|
|
<a href=#133>Design Rules</a> des Boards bestimmt werden, in dem das Via
|
|
verwendet wird.
|
|
<h2>Layer</h2>
|
|
Der Parameter <tt>layers</tt> gibt an über welche Layer sich
|
|
dieses Via erstrecken soll. Die Syntax ist <tt>von-nach</tt>, wobei 'von' und 'nach'
|
|
die Layer-Nummern sind über die sich das Via erstrecken soll. So würde zum
|
|
Beispiel <tt>2-7</tt> ein Via erzeugen, das von Layer 2 bis Layer 7 geht (<tt>7-2</tt> hätte
|
|
die selbe Bedeutung). Falls das Layer-Setup in den <a href=#133>Design Rules</a> genau dieses
|
|
Via nicht zulässt, wird das nächst längere Via genommen (bzw. eine Fehlermeldung
|
|
ausgegeben, falls kein solches Via gesetzt werden kann).
|
|
<h2>Flags</h2>
|
|
Folgende <i>flags</i> können dazu benutzt werden, das Erscheinungsbild eines Vias zu
|
|
beeinflussen:
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>STOP</tt> </td><td width=20><td>Lötstopmaske immer generieren</td></tr>
|
|
</table>
|
|
<p>
|
|
Standardmäßig generiert ein Via mit einem Bohrdurchmesser kleiner oder gleich dem
|
|
Wert des <a href=#133>Design Rules</a> Parameters "Masks/Limit" keine
|
|
Lötstopmaske. Das obige <tt>STOP</tt>-Flag kann dazu benutzt werden, eine Lötstopmaske
|
|
für ein Via zu forcieren.
|
|
|
|
|
|
<a name=105>
|
|
<h1>WINDOW</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Bildausschnitt festlegen oder Bild auffrischen.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>WINDOW;</tt><br>
|
|
<tt>WINDOW •;</tt><br>
|
|
<tt>WINDOW • •;</tt><br>
|
|
<tt>WINDOW • • •</tt><br>
|
|
<tt>WINDOW scale_factor</tt><br>
|
|
<tt>WINDOW FIT</tt><br>
|
|
<tt>WINDOW LAST</tt>
|
|
<dt>
|
|
<b>Maustasten</b>
|
|
<dd>
|
|
<mb>Linke&Ziehen</mb> definiert einen rechteckigen Bildausschnitt (entspricht "<tt>• •;</tt>)".
|
|
<dt>
|
|
<b>Tastatur</b>
|
|
<dd>
|
|
<tt>Alt+F2: WINDOW FIT </tt> Zeichnung formatfüllend darstellen<br>
|
|
<tt>F2: WINDOW; </tt> Bild auffrischen<br>
|
|
<tt>F3: WINDOW 2 </tt> Hineinzoomen um Faktor 2<br>
|
|
<tt>F4: WINDOW 0.5 </tt> Herauszoomen um Faktor 2<br>
|
|
<tt>F5: WINDOW (@);</tt> Neues Zentrum an aktueller Position des Mauszeigers (falls Befehl aktiviert)
|
|
</dl>
|
|
Der WINDOW-Befehl legt den sichtbaren Ausschnitt der Zeichnung fest.
|
|
Ohne weitere Parameter frischt der Befehl das Bild auf.
|
|
<h2>Neues Zentrum</h2>
|
|
Der WINDOW-Befehl mit einem Mausklick legt diesen Punkt in die
|
|
Fenstermitte und lässt den Maßstab unverändert.
|
|
Den Bildausschnitt können Sie auch mit den Slidern am Rand des
|
|
Arbeitsbereichs verschieben. Mit F5 legen Sie die Position
|
|
des Mauszeigers als neues Zentrum fest.
|
|
<h2>Eckpunkte festlegen</h2>
|
|
Der WINDOW-Befehl mit zwei Mausklicks legt einen Ausschnitt
|
|
fest, bei dem beide Punkte gerade noch innerhalb des Fensters liegen
|
|
- eine sehr bequeme Möglichkeit für Ausschnittvergrößerungen.
|
|
Das Seitenverhältnis der Zeichnung wird nicht geändert.
|
|
<h2>Neues Zentrum und zoomen</h2>
|
|
Der WINDOW-Befehl mit drei Mausklicks legt einen Auschnitt fest, bei
|
|
dem der erste Punkt im Zentrum liegt. Das Verhältnis des Abstandes von
|
|
Punkt 1 zu Punkt 2 und von Punkt 1 zu Punkt 3 legt den
|
|
Vergrößerungsfaktor fest. Dabei gilt: Liegt der dritte Punkt weiter
|
|
entfernt vom ersten als der zweite, dann erscheinen die Objekte
|
|
größer.
|
|
<h2>Zoomen</h2>
|
|
<pre>
|
|
WINDOW 2
|
|
</pre>
|
|
vergrößert die Darstellung der Objekte um Faktor zwei.
|
|
<pre>
|
|
WINDOW 0.5
|
|
</pre>
|
|
verkleinert die Darstellung der Objekte um Faktor zwei.
|
|
<h2>Zeichnung formatfüllend</h2>
|
|
<pre>
|
|
WINDOW FIT
|
|
</pre>
|
|
stellt die gesamte Zeichnung im Fenster dar.
|
|
<h2>Zurück zum vorhergehenden Ausschnitt</h2>
|
|
<pre>
|
|
WINDOW LAST;
|
|
</pre>
|
|
schaltet zurück zum vorherigen Bildausschnitt. Ein Bildausschnitt wird bei jedem
|
|
WINDOW-Befehl neu hinterlegt, jedoch nicht bei reinen Zoom-WINDOW-Befehlen und
|
|
Veränderungen des Bildausschnitts mit der Maus.
|
|
<h2>Sehr große Zoom-Faktoren</h2>
|
|
Standardmäßig ist der maximale Zoom-Faktor auf einen Wert begrenzt, bei dem eine
|
|
Fläche mit 1mm Durchmesser noch formatfüllend dargestellt wird. Falls Sie weiter
|
|
hineinzoomen wollen, können Sie den Schalter "Optionen/Benutzeroberfläche/Zoomfaktor limitieren"
|
|
ausschalten. Sie können dann so weit hineinzoomen, bis die feinste Auflösung des
|
|
Rasters (0.1 micron) sichtbar ist.
|
|
<p>
|
|
Wenn Sie sehr stark in eine Zeichnung hineinzoomen können folgende Dinge passieren:
|
|
<ul>
|
|
<li>Texte, die nicht den Vektor-Font benutzen, werden nicht mehr dargestellt, wenn
|
|
sie größer sind als das Editor-Fenster.
|
|
<li>Kreise und Kreisbögen werden angenähert und erscheinen daher unter Umständen nicht
|
|
genau an der erwarteten Stelle (insbesondere wenn sie eine sehr kleine Breite haben).
|
|
<li>Ob die Grid-Linien im feinsten Raster sichtbar werden, wenn Sie ganz hineinzoomen,
|
|
hängt von der Bildschirmauflösung, der Größe des Editor-Fensters und dem Wert
|
|
in "Optionen/Einstellungen/Verschiedenes/Min. sichtbare Rastergröße" ab.
|
|
</ul>
|
|
<h2>Parameter-Aliase</h2>
|
|
Parameter-Aliase können dazu benutzt werden, bestimmte Parameter-Einstellungen des WINDOW-Befehls
|
|
zu definieren, die später unter einem gegebenen Namen angesprochen werden können.
|
|
Die Aliase können auch benutzt werden indem Sie auf den "WINDOW Select"-Button klicken
|
|
und die Maustaste gedrückt halten bis die Liste erscheint.
|
|
Ein Klick auf den Button mit der rechten Maustaste läßt die Liste ebenfalls erscheinen.
|
|
<p>
|
|
Die Syntax zur Bearbeitung dieser Aliase ist:
|
|
<dl>
|
|
<dt>
|
|
<tt>WINDOW = <i>name</i> <i>parameter</i></tt>
|
|
<dd>
|
|
Definiert den Alias <i>name</i>, der in die angegebenen <i>parameter</i>
|
|
expandiert wird. Der <i>name</i> darf aus beliebig vielen Buchstaben, Ziffern
|
|
und Unterstrichen bestehen, und Groß-/Kleinschreibung spielt keine Rolle.
|
|
Er muss mit einem Buchstaben oder Unterstrich beginnen und darf keines der
|
|
Options-Schlüsselworte sein.
|
|
<dt>
|
|
<tt>WINDOW = <i>name</i> @</tt>
|
|
<dd>
|
|
Definiert den Alias <i>name</i>, der in die aktuelle Bildausschnitt-Einstellung
|
|
expandiert wird.
|
|
<dt>
|
|
<tt>WINDOW = ?</tt>
|
|
<dd>
|
|
Erfragt vom Benutzer einen Namen zur Definition eines Aliases für
|
|
die aktuelle Bildausschnitt-Einstellung.
|
|
<dt>
|
|
<tt>WINDOW = <i>name</i></tt>
|
|
<dd>
|
|
Erlaubt es dem Benutzer einen Bildausschnitt zu wählen, der als Alias unter
|
|
dem angegebenen Namen gespeichert wird.
|
|
<dt>
|
|
<tt>WINDOW = <i>name</i>;</tt>
|
|
<dd>
|
|
Löscht den Alias mit dem angegebenen Namen.
|
|
<dt>
|
|
<tt>WINDOW <i>name</i></tt>
|
|
<dd>
|
|
Expandiert den Alias mit dem angegebenen Namen und führt den WINDOW-Befehl
|
|
mit dem resultierenden Satz von Parametern aus. Der <i>name</i> kann
|
|
abgekürzt werden und es dürfen andere Parameter vor und nach dem
|
|
Alias angegeben werden (auch andere Aliase). Beachten Sie bitte,
|
|
dass im Falle einer abgekürzten Eingabe Aliase Vorrang vor anderen Schlüsselwörtern
|
|
des Befehls haben.
|
|
</dl>
|
|
Beispiel:
|
|
<p>
|
|
<tt>WINDOW = MyWindow (0 0) (4 3);</tt>
|
|
<p>
|
|
Definiert den Alias "MyWindow" der, wenn er wie in
|
|
<p>
|
|
<tt>WINDOW myw</tt>
|
|
<p>
|
|
benutzt wird, den angegebenen Bildausschnitt einstellt.
|
|
Beachten Sie bitte die abgekürzte Verwendung des Aliases,
|
|
und dass die Groß-/Kleinschreibung keine Rolle spielt.
|
|
|
|
|
|
<a name=106>
|
|
<h1>WIRE</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Wires (Linien) zeichnen.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>WIRE ['signal_name'] [width] • •..</tt><br>
|
|
<tt>WIRE ['signal_name'] [width] [ROUND | FLAT] • [curve | @radius] •..</tt>
|
|
<dt>
|
|
<b>Maustasten</b>
|
|
<dd>
|
|
<mb>Mittlere</mb> wählt den Layer.<br>
|
|
<mb>Rechte</mb> ändert den Knickwinkel (siehe <a href=#92>SET Wire_Bend</a>).<br>
|
|
<mb>Shift+Rechte</mb> kehrt die Richtung des Weiterschaltens des Knickwinkels um.<br>
|
|
<mb>Ctrl+Linke</mb> am Begin eines Wires schnappt zum nächstgelegenen existierenden Wire-Endpunkt.<br>
|
|
<mb>Ctrl+Rechte</mb> schaltet zwischen korrespondierenden Knickwinkeln hin und her.<br>
|
|
<mb>Ctrl+Linke</mb> beim Absetzen eines Wire-Endpunktes definiert den Kreisbogen-Radius.
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#66>MITER</a>,
|
|
<a href=#94>SIGNAL</a>,
|
|
<a href=#89>ROUTE</a>,
|
|
<a href=#36>CHANGE</a>,
|
|
<a href=#69>NET</a>,
|
|
<a href=#35>BUS</a>,
|
|
<a href=#43>DELETE</a>,
|
|
<a href=#87>RIPUP</a>,
|
|
<a href=#30>ARC</a>
|
|
<p>
|
|
Der WIRE-Befehl plaziert Wires (Linien) in einer Zeichnung, und zwar
|
|
zwischen erstem und zweitem Koordinatenpunkt. Jeder weitere Punkt
|
|
(Mausklick) wird mit dem vorhergehenden verbunden. Dabei werden jeweils
|
|
zwei Koordinatenpunkte mit einer geraden Linie verbunden oder mit
|
|
zwei, die in einem bestimmten Winkel abknicken. Dieser Knickwinkel
|
|
lässt sich mit der rechten Maustaste weiterschalten (wird dabei die Shift-Taste
|
|
gedrückt gehalten kehrt sich die Richtung des Weiterschaltens um, bei gedrückter
|
|
Ctrl-Taste wird zwischen korrespondierenden Knickwinkeln hin und her geschaltet).
|
|
<p>
|
|
Zwei Mausklicks an derselben Stelle setzen das Leitungsstück ab.
|
|
<p>
|
|
Die speziellen Schlüsselworte <tt>ROUND</tt> und <tt>FLAT</tt>, sowie der <i>curve</i>
|
|
Parameter, können dazu benutzt werden, Kreisbögen zu zeichnen (siehe unten).
|
|
<p>
|
|
Wird das Zeichnen eines Wires mit gedrückter Ctrl-Taste gestartet, so
|
|
schnappt der Startpunkt des neuen Wires an die Koordinaten des
|
|
nächstgelegenen existierenden Wires. Dies ist besonders nützlich, wenn
|
|
der existierende Wire außerhalb des aktuellen Rasters liegt. Hierbei
|
|
werden auch die Breite, der Layer und der Linientyp vom existierenden
|
|
Wire übernommen. Falls der aktuelle Kickwinkel 7 ("Freihand") ist, so
|
|
setzt der neue Wire den existierenden bündig fort.
|
|
<h2>Signalname</h2>
|
|
Der Parameter <tt>signal_name</tt> ist in erster Linie für die
|
|
Anwendung in Script-Dateien gedacht, die generierte Daten einlesen.
|
|
Wenn ein Signalname angegeben ist, werden alle folgenden Wires mit
|
|
diesem Signal verbunden, und es wird keine automatische Prüfung
|
|
durchgeführt.<br>
|
|
<b>Diese Möglichkeit ist mit großer Vorsicht
|
|
einzusetzen, da es zu Kurzschlüssen kommen kann, wenn ein Wire so
|
|
plaziert wird, dass er unterschiedliche Signale verbindet. Bitte führen
|
|
Sie deshalb einen
|
|
<a href=#46>Design Rule Check</a> durch, nachdem Sie
|
|
den WIRE-Befehl mit dem Parameter
|
|
<tt>signal_name</tt> benutzt haben!</b>
|
|
<h2>Strichstärke</h2>
|
|
Gibt man den Befehl mit dem Parameter <i>width</i> (z. B. 0.1)
|
|
ein, dann wird dadurch die Linienbreite in der aktuellen Maßeinheit
|
|
festgelegt. Zulässig ist maximal 0.51602 Zoll (ca. 13.1 mm). Die
|
|
Linienbreite bleibt für nachfolgende Operationen erhalten.
|
|
<p>
|
|
Die Breite lässt sich auch zu jeder Zeit mit dem Befehl
|
|
<pre>
|
|
CHANGE WIDTH breite •
|
|
</pre>
|
|
ändern oder voreinstellen.
|
|
<p>
|
|
Bitte verwenden Sie den WIRE-Befehl nicht für Netze und
|
|
Busse sowie für Luftlinien. Siehe
|
|
<a href=#69>NET</a>,
|
|
<a href=#35>BUS</a> und
|
|
<a href=#94>SIGNAL</a>.
|
|
<h2>Linienarten</h2>
|
|
Linien können in folgenden Arten (<i>styles</i>) gezeichnet werden::
|
|
<ul>
|
|
<li>Continuous - durchgezogen
|
|
<li>LongDash - (lang) gestrichelt
|
|
<li>ShortDash - (kurz) gestrichelt
|
|
<li>DashDot - Strich-Punkt-Linie
|
|
</ul>
|
|
Die Linienart kann mit dem <a href=#36>CHANGE</a>-Befehl verändert werden.
|
|
<p>
|
|
DRC und Autorouter behandeln alle Linienarten als durchgezogen (Continuous).
|
|
Andere Linienarten werden hauptsächlich für elektrische oder mechanische
|
|
Zeichnungen verwendet und sollten nicht in Signallayern benutzt werden.
|
|
Der DRC meldet einen Fehler, wenn Sie eine Nicht-continuous-Linie
|
|
als Teil einer signalführenden Leiterbahn mit einem Pad verbinden.
|
|
<h2>Signale in Top-, Bottom und Route-Layern</h2>
|
|
Wires in den Layern Top, Bottom, Route2.. werden als Signale behandelt.
|
|
Wird ein Wire in einem der Signal-Layer an einem bestehenden Signal
|
|
angesetzt, so gehört der gesamte gezeichnete Wire-Zug zu diesem
|
|
Signal (nur, wenn die Wire-Enden bzw. das Wire-Ende und der Pad-Mittelpunkt
|
|
genau übereinstimmen). Setzt man das Ende eines Wires an einem anderen Signal ab,
|
|
fragt EAGLE zur Bestätigung nach, ob die beiden Signale wirklich
|
|
miteinander verbunden werden sollen. Jedes Geradenstück wird von
|
|
EAGLE (z. B. beim RIPUP-Befehl) als eigenes Objekt behandelt.
|
|
<h2>Kreisbögen zeichnen</h2>
|
|
Wires und Kreisbögen sind im Grunde die selben Objekte, so dass man einen Kreisbogen entweder mit dem
|
|
<a href=#30>ARC</a>-Befehl zeichnen kann, oder indem man die nötigen Parameter
|
|
zum WIRE-Befehl hinzufügt. Damit aus einem Wire ein Kreisbogen wird benötigt dieser entweder
|
|
den <i>curve</i> Parameter, der angibt wie stark der Kreisbogen gekrümmt sein soll, oder den
|
|
<i>@radius</i> Parameter, der den Radius des Kreisbogens bestimmt (beachten Sie den <tt>'@'</tt>,
|
|
welcher nötig ist um <i>curve</i> und <i>radius</i> unterscheiden zu können).
|
|
<p>
|
|
Der gültige Bereich für <i>curve</i> ist <tt>-360</tt>..<tt>+360</tt>, wobei der Wert
|
|
angibt aus welchem Anteil eines Vollkreises der Kreisbogen besteht. Ein Wert von <tt>90</tt>
|
|
beispielsweise steht für einen Viertelkreis, während <tt>180</tt> einen Halbkreis
|
|
ergibt. Der maximale Wert von <tt>360</tt> kann nur theoretisch erreicht werden, da dies
|
|
bedeuten würde, dass der Kreisbogen aus einem vollen Kreis besteht, der, weil Anfangs- und
|
|
Endpunkt auf dem Kreis liegen müssen, einen unendlich großen Durchmesser haben müsste.
|
|
Positive Werte für <i>curve</i> bedeuten, dass der Kreisbogen im mathematisch positiven Sinne
|
|
(also gegen den Uhrzeigersinn) gezeichnet wird. Falls <i>curve</i> gleich <tt>0</tt>
|
|
ist, handelt es sich um eine gerade Linie ("keine Krümmung"), was letztlich einem
|
|
Wire entspricht. Beachten Sie bitte, dass, um den <i>curve</i> Parameter vom <i>width</i>
|
|
Parameter unterscheiden zu können, dieser immer mit Vorzeichen (<tt>'+'</tt> oder
|
|
<tt>'-'</tt>) angegeben werden muss, auch wenn es eine positive Zahl ist.
|
|
<p>
|
|
Zum Beispiel würde der Befehl
|
|
<pre>
|
|
WIRE (0 0) +180 (0 10);
|
|
</pre>
|
|
einen Halbkreis entgegen dem Uhrzeigersinn vom Punkt (0 0) nach (0 10) zeichnen.
|
|
<p>
|
|
Wird ein <i>radius</i> angegeben, so erhält der Kreisbogen diesen Radius. Genau wie der
|
|
<i>curve</i>-Parameter muss auch der <i>radius</i> mit Vorzeichen angegeben werden
|
|
um die Orientierung des Kreisbogens zu bestimmen.
|
|
Zum Beispiel zeichnet der Befehl
|
|
<pre>
|
|
WIRE (0 0) @+100 (0 200);
|
|
</pre>
|
|
einen Halbkreis vom Punkt (0 0) nach (0 200) (mit Radius 100), entgegen dem
|
|
Uhrzeigersinn. Liegt der Endpunkt des Wires um mehr als den doppelten Radius vom
|
|
Startpunkt entfernt, so wird eine gerade Linie gezeichnet.
|
|
<p>
|
|
Der Kreisbogen-Radius kann auch dadurch definiert werden, dass der Wire-Endpunkt mit gedrückter
|
|
<tt>Ctrl</tt>-Taste gesetzt wird (typischerweise am Mittelpunkt des Kreises auf dem
|
|
der Kreisbogen liegen soll). In diesem Fall wird der Punkt nicht als eigentlicher
|
|
Endpunkt genommen, sondern dazu benutzt den Radius des Kreisbogens festzulegen. Sie können
|
|
dann den Mauszeiger bewegen und einen Kreisbogen mit dem gegebenen Radius plazieren (die
|
|
rechte Maustaste zusammen mit <tt>Ctrl</tt> schaltet die Orientierung des Kreisbogens um).
|
|
Falls Sie den Mauszeiger weiter als den doppelten Radius vom Startpunkt wegbewegen wird
|
|
eine gerade Linie gezeichnet.
|
|
<p>
|
|
Um jeden beliebigen Kreisbogen mit dem WIRE-Befehl zeichnen zu können (was insbesondere bei der
|
|
Generierung von Script-Dateien wichtig ist) sind die Schlüsselworte <tt>ROUND</tt> und
|
|
<tt>FLAT</tt> im WIRE-Befehl ebenfalls erlaubt. Beachten Sie aber, dass diese nur bei
|
|
echten Kreisbögen Anwendung finden (geradlinige Wires haben immer runde Enden). Standardmäßig
|
|
haben mit dem WIRE-Befehl erzeugte Kreisbögen runde Enden.
|
|
|
|
|
|
<a name=107>
|
|
<h1>WRITE</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Abspeichern einer Zeichnung oder Bibliothek.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>WRITE;</tt><br>
|
|
<tt>WRITE drawing_name</tt><br>
|
|
<tt>WRITE @drawing_name</tt>
|
|
</dl>
|
|
Der WRITE-Befehl sichert eine Zeichnung oder eine Bibliothek im
|
|
<a href=#14>Projektverzeichnis</a>.
|
|
Man kann einen neuen Namen wählen oder denjenigen beibehalten,
|
|
unter dem die Zeichnung/Bibliothek geladen wurde.
|
|
<p>
|
|
Dem Namen kann man auch einen Pfadnamen voranstellen, wenn die Datei
|
|
in ein bestimmtes Verzeichnis gesichert werden soll.
|
|
<p>
|
|
Wird dem neuen Namen ein <tt>@</tt> vorangestellt, so wird auch der Name
|
|
der geladenen Zeichnung entsprechend geändert. Die zugehörige Platine/Schaltplan
|
|
wird dann automatisch ebenfalls unter diesem Namen abgespeichert, und der
|
|
Undo-Puffer wird gelöscht.
|
|
<p>
|
|
Um die Konsistenz der
|
|
<a href=#341>Forward&Back-Annotation</a>
|
|
zwischen Platine und Schaltplan zu gewährleisten, verhält sich der WRITE-Befehl
|
|
wie folgt:
|
|
<ul>
|
|
<li>Wenn eine Platinen-/Schaltplan-Datei unter dem selben Namen gespeichert wird,
|
|
wird die zugehörige Schaltplan-/Platinen-Datei ebenfalls gespeichert, sofern sie
|
|
geändert wurde.
|
|
<li>wenn eine Platinen-/Schaltplan-Datei unter einem unterschiedlichen Namen
|
|
gespeichert wurde, fragt das Programm, ob die zugehörige
|
|
Schaltplan-/Platinen-Datei ebenfalls unter diesem Namen gespeichert werden soll.
|
|
<li>Beim Speichern unter einem unterschiedlichen Namen wird das
|
|
"Modified"-Flag nicht gelöscht.
|
|
</ul>
|
|
|
|
|
|
<a name=108>
|
|
<h1>Ausgabedaten erzeugen</h1>
|
|
<ul>
|
|
<li><a href=#109>Ausdruck mit PRINT</a>
|
|
<li><a href=#113>CAM-Prozessor</a>
|
|
<li><a href=#130>Konturdaten</a>
|
|
</ul>
|
|
|
|
|
|
<a name=109>
|
|
<h1>Drucken</h1>
|
|
Die Parameter für das Drucken auf den Systemdrucker können mit folgenden
|
|
drei Dialogen eingestellt werden:
|
|
<ul>
|
|
<li><a href=#110>Drucken einer Zeichnung</a>
|
|
<li><a href=#111>Drucken eines Textes</a>
|
|
<li><a href=#112>Seiteneinrichtung</a>
|
|
</ul>
|
|
<b>Siehe auch</b> <a href=#79>PRINT</a>
|
|
|
|
|
|
<a name=110>
|
|
<h1>Drucken einer Zeichnung</h1>
|
|
Wenn Sie den <a href=#79>PRINT</a>-Befehl ohne abschließenden
|
|
<tt>';'</tt> eingeben, oder wenn Sie <b>Print</b> aus dem
|
|
<a href=#13>Kontext-Menü</a> des Icons einer Zeichnung im
|
|
<a href=#12>Control Panel</a> auswählen, erhalten Sie einen
|
|
Dialog mit folgenden Optionen:
|
|
<h2>Papier</h2>
|
|
Definiert das zu verwendende Papierformat.
|
|
<h2>Ausrichtung</h2>
|
|
Definiert die Papierausrichtung.
|
|
<h2>Voransicht</h2>
|
|
Schaltet die Druck-Voransicht ein bzw. aus.
|
|
<h2>Spiegeln</h2>
|
|
Spiegelt die Ausgabe.
|
|
<h2>Drehen</h2>
|
|
Dreht die Ausgabe um 90°.
|
|
<h2>Kopfüber</h2>
|
|
Dreht die Ausgabe um 180°. Zusammen mit <b>Drehen</b> wird die Zeichnung um insgesamt 270° gedreht.
|
|
<h2>Schwarz</h2>
|
|
Ignoriert die Farbeinstellungen der Layer und druckt alles in Schwarz.
|
|
<h2>Gefüllt</h2>
|
|
Ignoriert die Füllmuster der Layer und druckt alles voll ausgefüllt.
|
|
<h2>Skalierungsfaktor</h2>
|
|
Skaliert die Zeichnung mit dem gegebenen Wert.
|
|
<h2>Blatt-Limit</h2>
|
|
Gibt an wieviele Blätter der Ausdruck maximal haben soll.
|
|
Falls die Zeichnung nicht auf die angegebene Zahl von Blättern passt, wird
|
|
der tatsächliche Skalierungsfaktor so lange verkleinert, bis sie passt.
|
|
Der Standardwert von <tt>0</tt> bedeutet "kein Limit".
|
|
<h2>Alle</h2>
|
|
Alle Seiten des Schaltplans werden ausgedruckt
|
|
(das ist der Standardwert, wenn <b>Print</b> aus dem
|
|
<a href=#13>Kontext-Menü</a> eines Schaltplan-Icons
|
|
ausgewählt wird).
|
|
<h2>Von...bis</h2>
|
|
Nur die angegebenen Seiten werden ausgedruckt.
|
|
<h2>Diese</h2>
|
|
Es wird nur die Seite ausgedruckt, die gerade editiert wird
|
|
(das ist der Standardwert, wenn der <a href=#79>PRINT</a>-Befehl
|
|
in einem Schaltplan-Editor Fenster verwendet wird).
|
|
<h2>Drucker...</h2>
|
|
Ruft den System-Druckerdialog auf, in dem der Drucker ausgewählt werden kann
|
|
sowie druckerspezifische Parameter eingestellt werden können.
|
|
<h2>PDF...</h2>
|
|
Erzeugt eine PDF-Datei (Portable Document Format) mit den gewählten Druckeinstellungen.
|
|
<p>
|
|
Die restlichen Optionen dienen der <a href=#112>Seiteneinrichtung</a>.
|
|
|
|
|
|
<a name=111>
|
|
<h1>Drucken eines Textes</h1>
|
|
Wenn Sie <b>Print</b> aus dem
|
|
<a href=#13>Kontext-Menü</a> des Icons einer Textdatei im
|
|
<a href=#12>Control Panel</a> oder aus dem <b>Datei</b>
|
|
Menü des <a href=#26>Text-Editors</a> auswählen, erhalten Sie
|
|
einen Dialog mit folgenden Optionen:
|
|
<h2>Lange Zeilen umbrechen</h2>
|
|
Schaltet den Zeilenumbruch für zu lange Zeilen ein.
|
|
<h2>Drucker...</h2>
|
|
Ruft den System-Druckerdialog auf, in dem der Drucker ausgewählt werden kann
|
|
sowie druckerspezifische Parameter eingestellt werden können.
|
|
<h2>PDF...</h2>
|
|
Erzeugt eine PDF-Datei (Portable Document Format) mit den gewählten Druckeinstellungen.
|
|
<p>
|
|
Die restlichen Optionen dienen der <a href=#112>Seiteneinrichtung</a>.
|
|
|
|
|
|
<a name=112>
|
|
<h1>Seiteneinrichtung</h1>
|
|
Der Druck-Dialog enthält einige Optionen die bestimmen, wie eine Zeichnung oder ein Text
|
|
auf dem Papier erscheinen soll.
|
|
<h2>Rand</h2>
|
|
Definiert den linken, oberen, rechten und unteren Rand. Die Werte werden
|
|
entweder in Millimeter oder Inch angegeben, je nachdem, welche Einheit
|
|
weniger Dezimalstellen ergibt.
|
|
<p>
|
|
Die Standardwerte für die Ränder werden vom Druckertreiber übernommen
|
|
und definieren die maximal bedruckbare Fläche.
|
|
Sie können hier auch kleinere Werte angeben, wobei es von Ihrem Drucker
|
|
abhängt, ob die angegebenen Ränder dann eingehalten werden können oder nicht.
|
|
<p>
|
|
Nach der Auswahl eines anderen Druckers kann es sein, dass neue
|
|
gerätespezifische Grenzen wirksam werden; die vorgegebenen Ränder
|
|
werden dann automatisch vergößert, falls der neue Drucker dies erfordert.
|
|
Beachten Sie bitte, dass die Werte nicht automatisch verkleinert werden,
|
|
auch wenn der neue Drucker kleinere Werte zulassen würde. Um die
|
|
kleinstmöglichen Werte für die Ränder zu ermitteln, geben Sie in jedes Feld
|
|
<tt>0</tt> ein. Dieser Wert wird dann durch das gerätespezifische Minimum
|
|
ersetzt.
|
|
<h2>Kalibrieren</h2>
|
|
Falls Sie mit Ihrem Drucker Produktionsvorlagen erstellen wollen,
|
|
kann es nötig sein, den Drucker zu kalibrieren um exakte 1:1
|
|
Ausdrucke Ihrer Layouts zu erhalten.
|
|
<p>
|
|
Der Wert im <b>X</b> Feld gibt den Kalibrierungsfaktor in der Richtung
|
|
an, in der sich der Druckkopf bewegt. Der Wert im <b>Y</b> Feld
|
|
kalibriert die Koordinaten in Papiervorschubrichtung.
|
|
<p>
|
|
<b>ACHTUNG: Wenn Sie mit Ihrem Drucker Produktionsvorlagen erzeugen,
|
|
prüfen Sie bitte immer das Druckergebnis auf Einhaltung der exakten Maße!</b>
|
|
<p>
|
|
Die Standardwerte von <tt>1</tt> gehen davon aus, dass der Drucker in beiden
|
|
Richtungen exakt druckt.
|
|
<h2>Anordnung</h2>
|
|
Definiert die vertikale und horizontale Anordnung der Zeichnung auf dem Papier.
|
|
<h2>Bildunterschrift</h2>
|
|
Aktiviert die Ausgabe einer Bildunterschrift mit Datum und Uhrzeit des
|
|
Ausdrucks sowie dem Dateinamen.
|
|
<p>
|
|
Bei gespiegelter Ausgabe enthält die Bildunterschrift das Wort
|
|
"mirrored", und falls der Vergrößerungsfaktor nicht
|
|
<tt>1.0</tt> ist, wird er als <b>f=...</b> mit angegeben
|
|
(der Vergrößerungsfaktor wird mit 4 Nachkommastellen ausgegeben, so dass
|
|
auch eine Angabe von <b>f=1.0000</b> nicht bedeutet, dass der Faktor
|
|
<i>exakt</i> <tt>1.0</tt> ist).
|
|
|
|
|
|
<a name=113>
|
|
<h1>CAM-Prozessor</h1>
|
|
Mit dem CAM-Prozessor können Sie jede Layer-Kombination an ein Peripheriegerät
|
|
oder in eine Datei ausgeben.
|
|
<p>
|
|
Die folgenden Hilfe-Themen führen Sie durch die erforderlichen
|
|
Schritte, von der Auswahl der Daten-Datei bis zur Konfiguration des
|
|
Ausgabegeräts (Device).
|
|
<ul>
|
|
<li><a href=#114>Datei auswählen</a>
|
|
<li><a href=#116>Device auswählen</a>
|
|
<li><a href=#127>Ausgabe-Datei wählen</a>
|
|
<li><a href=#129>Plot-Layer wählen</a>
|
|
<li><a href=#117>Device-Parameter einstellen</a>
|
|
<li><a href=#128>Flag-Optionen einstellen</a>
|
|
</ul>
|
|
Sie können verschiedene Parametersätze zu einem
|
|
<a href=#115>CAM-Prozessor-Job</a> zusammenstellen,
|
|
mit dessen Hilfe Sie einen kompletten Satz von Ausgabedateien durch
|
|
Anklicken eines Buttons erzeugen können.
|
|
<p>
|
|
<b>Siehe auch</b> <a href=#109>Drucken auf dem System-Drucker</a>
|
|
|
|
|
|
<a name=114>
|
|
<h1>CAM-Prozessor-Hauptmenü</h1>
|
|
Im <i>CAM-Prozessor-Hauptmenü</i> können Sie wählen, von welcher
|
|
Datei die Ausgabe generiert werden soll, Sie können Blenden- und
|
|
Bohrer-Konfigurationsdateien bearbeiten oder Job-Dateien laden und
|
|
sichern.
|
|
<h2>Datei</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td>Öffnen </td><td width=20><td>Board... Board-Datei für Ausgabe laden</td></tr>
|
|
<tr><td> </td><td width=20><td>Schaltplan... Schaltplan-Datei für Ausgabe laden</td></tr>
|
|
<tr><td> </td><td width=20><td>Bohrertabelle... Bohrer-Konfigurationsdatei zum Editieren laden</td></tr>
|
|
<tr><td> </td><td width=20><td>Blendentabelle... Blenden-Konfigurationsdatei zum Editieren laden</td></tr>
|
|
<tr><td> </td><td width=20><td>Job... Anderen Job laden oder neuen erzeugen</td></tr>
|
|
<tr><td>Zuletzt geöffnet</td><td width=20><td>Lädt ein der zuletzt geöffneten Dateien</td></tr>
|
|
<tr><td>Job speichern...</td><td width=20><td>Gegenwärtigen Job sichern</td></tr>
|
|
<tr><td>Schließen </td><td width=20><td>CAM-Prozessor-Fenster schließen</td></tr>
|
|
<tr><td>Beenden </td><td width=20><td>Programm beenden</td></tr>
|
|
</table>
|
|
<h2>Layer</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td>Alle abwählen </td><td width=20><td>Alle Layer deselektieren</td></tr>
|
|
<tr><td>Ausgewählte zeigen </td><td width=20><td>Nur die selektierten Layer anzeigen</td></tr>
|
|
<tr><td>Alle zeigen </td><td width=20><td>Alle Layer anzeigen</td></tr>
|
|
</table>
|
|
<h2>Fenster</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td>Control Panel </td><td width=20><td>Zum Control Panel wechseln</td></tr>
|
|
<tr><td>1 Schaltplan - ... </td><td width=20><td>Zu Fenster 1 wechseln</td></tr>
|
|
<tr><td>2 Board - ... </td><td width=20><td>Zu Fenster 2 wechseln</td></tr>
|
|
</table>
|
|
<h2>Hilfe</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td>Allgemein </td><td width=20><td>Allgemeine Hilfe-Seite öffnen</td></tr>
|
|
<tr><td>Kontext </td><td width=20><td>Öffnet die Hilfe-Seite für den momentanen Kontext</td></tr>
|
|
<tr><td>CAM-Prozessor </td><td width=20><td>CAM-Prozessor-Hilfe öffnen</td></tr>
|
|
<tr><td>Job-Hilfe </td><td width=20><td>Hilfe zum Job-Mechanismus anzeigen</td></tr>
|
|
<tr><td>Device-Hilfe </td><td width=20><td>Hilfe zu Ausgabe-Devices anzeigen</td></tr>
|
|
</table>
|
|
|
|
|
|
<a name=115>
|
|
<h1>CAM-Prozessor-Job</h1>
|
|
Ein CAM-Prozessor-<i>Job</i> besteht aus unterschiedlichen
|
|
<i>Sections</i>,
|
|
von denen jede einen kompletten Satz von CAM-Prozessor-Parametern
|
|
mit einer bestimmten Layer-Auswahl darstellt.
|
|
<p>
|
|
Ein typischer CAM-Prozessor-Job könnte zum Beispiel zwei Sections
|
|
enthalten: eine, die die Fotoplot-Dateien für die Bestückungsseite
|
|
erzeugt, und eine weitere, die die entsprechenden Daten für die Lötseite
|
|
erzeugt.
|
|
<h2>Section</h2>
|
|
Der <i>Section</i>-Selektor zeigt die gegenwärtig aktive Job-Section
|
|
an. Durch Anklicken des Buttons können Sie jede der vorher
|
|
mit dem <i>Add</i>-Button
|
|
definierten Sections auswählen.
|
|
<h2>Prompt</h2>
|
|
Wenn Sie in dieses Feld einen Text eintragen, gibt der CAM-Prozessor
|
|
diese Meldung aus, bevor er die zugehörige Job-Section bearbeitet.
|
|
Wenn Sie zum Beispiel vor jeder Ausgabe das Papier in den Stiftplotter
|
|
einlegen wollen, könnte die Meldung "Bitte Papier wechseln!" lauten.
|
|
Jede Section kann ihre eigene Meldung haben. Wenn keine Meldung definiert
|
|
ist, wird die Section ohne vorherige Unterbrechung ausgeführt.
|
|
<h2>Add</h2>
|
|
Klicken Sie den <i>Add</i>-Button an, um dem Job eine neue Section
|
|
hinzuzufügen. Sie werden dann nach dem Namen der neuen Section gefragt.
|
|
Für die neue Section gelten die Parametereinstellungen, die im Menü zu
|
|
sehen sind.<br>
|
|
Bitte achten Sie darauf, wenn Sie eine neue Job-Section anlegen, dass
|
|
Sie <b>zuerst mit 'Add' die neue Section anlegen</b>
|
|
und erst <b>danach die Parameter modifizieren</b>.
|
|
Wenn Sie zuerst die Parameter der gegenwärtigen Section modifizieren
|
|
und erst danach mit 'Add' die neue Section anlegen, werden Sie vom
|
|
Programm gefragt, ob Sie die Änderungen an der gegenwärtigen Section
|
|
abspeichern wollen oder nicht.
|
|
<h2>Del</h2>
|
|
Durch Anklicken des <i>Del</i>-Buttons löschen Sie die gegenwärtige
|
|
Job-Section. Bevor die Section gelöscht wird, müssen Sie die Rückfrage,
|
|
ob sie wirklich gelöscht werden soll, bestätigen.
|
|
<h2>Process Section</h2>
|
|
Der <i>Process Section</i>-Button startet die Datenausgabe für die gegenwärtig
|
|
angezeigte Section.
|
|
<h2>Process Job</h2>
|
|
Der <i>Process Job</i>-Button startet die Datenausgabe für den gesamten
|
|
Job. Dabei wird die zuerst definierte Section zuerst bearbeitet.
|
|
Es entstehen die gleichen Ausgabedaten, als würden Sie der Reihe nach
|
|
die unterschiedlichen Sections auswählen und mit dem <i>Process Section</i>-Button
|
|
starten.
|
|
|
|
|
|
<a name=116>
|
|
<h1>Ausgabetreiber (Output Device)</h1>
|
|
Der Ausgabetreiber (<i>Output Device</i>) legt fest, welche Art von
|
|
Daten der CAM-Prozessor erzeugt. Sie können aus den unterschiedlichsten
|
|
Treiber den geeigneten auswählen, z.B. für Foto-Plotter, Bohrstationen etc.
|
|
<h2>Device</h2>
|
|
Durch Anklicken des Device-Selectors öffnen Sie eine Liste
|
|
aller verfügbaren Device-Treiber.
|
|
<h2>Skalierungsfaktor</h2>
|
|
Bei Geräten, die eine Skalierung erlauben, können Sie in dieses Feld
|
|
einen Skalierungsfaktor eintragen. Werte über <tt>1</tt> führen
|
|
zu einer Vergrößerung, Werte unter <tt>1</tt> verkleinern die Ausgabe.
|
|
<p>
|
|
Sie können die Größe der Ausgabe auf eine bestimmte Anzahl von Seiten
|
|
beschränken, indem Sie einen negativen Wert im Scale-Feld eingeben.
|
|
In diesem Fall wird der Skalierungsfaktor auf 1.0 voreingestellt und so lange
|
|
verkleinert, bis die Zeichnung gerade noch auf die angegebene Anzahl von
|
|
Seiten passt. Wird zum Beispiel "-2" eingegeben, so entsteht eine Zeichnung
|
|
die nicht mehr als zwei Seiten benötigt. Beachten Sie bitte, dass die zur
|
|
Verfügung stehende Blattgröße (Width und Height Parameter) Ihres
|
|
Ausgabegeräts richtig eingestellt sein muss, damit dieser Mechanismus
|
|
funktioniert. Diese Größen können in den Width- und Height-Feldern oder
|
|
durch Editieren der Datei eagle.def eingestellt werden.
|
|
<h2>Datei</h2>
|
|
Sie können in dieses Feld den Namen der
|
|
<a href=#127>Ausgabedatei</a>
|
|
direkt eingeben, oder Sie klicken den
|
|
Datei-Button an, um einen Dialog für die Definition
|
|
der Ausgabedatei zu öffnen.<br>
|
|
Wenn Sie den Dateinamen aus dem Namen der
|
|
Schaltplan- oder Platinen-Datei ableiten wollen, können Sie den Namen
|
|
teilweise angeben (mindestens die Extension, z.B. <tt>.gbr</tt>). In
|
|
diesem Fall wird der Rest des Dateinamens von der Quelldatei
|
|
abgeleitet.
|
|
<h2>Blendentabelle</h2>
|
|
Sie können in dieses Feld den Namen der
|
|
<a href=#118>Blenden-Konfigurationsdatei</a>
|
|
direkt eingeben, oder Sie klicken den Wheel-Button an, um einen
|
|
Datei-Dialog zu öffnen und die
|
|
Datei zu selektieren.<br>
|
|
Wenn Sie den Dateinamen aus dem Namen der
|
|
Schaltplan- oder Platinen-Datei ableiten wollen, können Sie den Namen
|
|
teilweise angeben (mindestens die Extension, z.B. <tt>.whl</tt>). In
|
|
diesem Fall wird der Rest des Dateinamens von der Quelldatei
|
|
abgeleitet.
|
|
<h2>Bohrertabelle</h2>
|
|
Sie können in dieses Feld den Namen der
|
|
<a href=#121>Bohrer-Konfigurationsdatei</a>
|
|
direkt eingeben, oder Sie klicken den Rack-Button an, um einen
|
|
Datei-Dialog zu öffnen und die
|
|
Datei zu selektieren.<br>
|
|
Wenn Sie den Dateinamen aus dem Namen der
|
|
Schaltplan- oder Platinen-Datei ableiten wollen, können Sie den Namen
|
|
teilweise angeben (mindestens die Extension, z.B. <tt>.drl</tt>). In
|
|
diesem Fall wird der Rest des Dateinamens von der Quelldatei
|
|
abgeleitet.
|
|
Manche Treiber (wie zum Beispiel EXCELLON) können die Bohrerkonfiguration automatisch
|
|
generieren, wobei dann dieses Feld nicht verfügbar ist.
|
|
|
|
|
|
<a name=117>
|
|
<h1>Device-Parameter</h1>
|
|
Abhängig vom gewählten <a href=#116>Ausgabetreiber</a>
|
|
gibt es verschiedene treiberspezifische Parameter, mit denen Sie
|
|
die Ausgabe an Ihre Bedürfnisse anpassen können.
|
|
<ul>
|
|
<li><a href=#118>Blenden-Konfigurationsdatei</a>
|
|
<li><a href=#119>Blenden-Emulation</a>
|
|
<li><a href=#120>Blenden-Toleranzen</a>
|
|
<li><a href=#121>Bohrer-Konfigurationsdatei</a>
|
|
<li><a href=#122>Bohrer-Toleranzen</a>
|
|
<li><a href=#123>Offset</a>
|
|
<li><a href=#124>Seitengröße</a>
|
|
<li><a href=#125>Stiftdaten</a>
|
|
</ul>
|
|
|
|
|
|
<a name=118>
|
|
<h1>Blenden-Konfigurationsdatei</h1>
|
|
Dem Fotoplotter muss bekannt sein, welche Blenden den Codes in der Ausgabedatei
|
|
entsprechen. Diese Zuordnung ist in der Blenden-Konfigurationsdatei definiert.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
D010 annulus 0.004 x 0.000
|
|
D010 round 0.004
|
|
D040 square 0.004
|
|
D054 thermal 0.090 x 0.060
|
|
D100 rectangle 0.060 x 0.075
|
|
D104 oval 0.030 x 0.090
|
|
D110 draw 0.004
|
|
</pre>
|
|
Die Datei darf mehrere Blenden enthalten, die den gleichen D-Code benutzen, so
|
|
lange alle von einem der Typen draw, round oder annulus sind und die gleiche
|
|
Größe haben (im Falle von annulus muss dann der zweite Größenparameter 0 sein).
|
|
Dies kann dazu benutzt werden um Blenden, die letztlich zum gleichen Zeichenergebnis
|
|
führen, auf einen gemeinsamen D-Code abzubilden.
|
|
|
|
|
|
<a name=119>
|
|
<h1>Blenden-Emulation</h1>
|
|
Wenn die Option "Blenden" gewählt ist, werden nicht vorhandene
|
|
Blenden mit kleineren Blenden emuliert. Ist sie ausgeschaltet, werden
|
|
keine Blenden emuliert, auch nicht Thermal- oder Annulus-Blenden.
|
|
<p>
|
|
Die Optionen "Annulus" und "Thermal" werden gewählt, wenn bei
|
|
eingeschalteter Blendenemulation zusätzlich Annulus- und/oder
|
|
Thermal-Symbole emuliert werden sollen.
|
|
<p>
|
|
Achtung: Die Blendenemulation kann zu sehr langen Plot-Zeiten führen
|
|
(hohe Kosten!).
|
|
|
|
|
|
<a name=120>
|
|
<h1>Blenden-Toleranzen</h1>
|
|
Falls Sie Toleranzen für Draw- bzw. Blitz-Blenden (Flash) angeben,
|
|
verwendet der CAM-Prozessor Blenden innerhalb dieser Toleranz, falls
|
|
keine mit dem exakten Maß verfügbar ist.
|
|
<p>
|
|
Toleranzen werden in Prozent angegeben.
|
|
<p>
|
|
<b>Bitte beachten Sie, dass dadurch Ihre "Design Rules" unter Umständen
|
|
nicht mehr eingehalten werden!</b>
|
|
|
|
|
|
<a name=121>
|
|
<h1>Bohrer-Konfigurationsdatei</h1>
|
|
Falls der Treiber für die Bohrstation die Bohrerkonfiguration nicht automatisch
|
|
generieren kann, muss bekannt sein, welche Bohrer den Codes in der Ausgabedatei
|
|
entsprechen. Diese Zuordnung ist in der Bohrer-Konfigurationsdatei definiert.
|
|
<p>
|
|
Die Datei kann mit Hilfe eines User-Language-Programms drillcfg.ulp, das sich im
|
|
ULP-Verzeichnis Ihrer EAGLE-Installation befindet, erzeugt werden.
|
|
Verwenden Sie dazu den Befehl <a href=#90>RUN</a>.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
T01 0.010
|
|
T02 0.016
|
|
T03 0.032
|
|
T04 0.040
|
|
T05 0.050
|
|
T06 0.070
|
|
</pre>
|
|
|
|
|
|
<a name=122>
|
|
<h1>Bohrer-Toleranzen</h1>
|
|
Falls Sie eine Toleranz für Bohrer angeben, verwendet der
|
|
CAM-Prozessor Bohrer innerhalb dieser Toleranz, falls keiner mit dem
|
|
exakten Maß verfügbar ist.
|
|
<p>
|
|
Toleranzen werden in Prozent angegeben.
|
|
|
|
|
|
<a name=123>
|
|
<h1>Offset</h1>
|
|
Offset in x- und y-Richtung (Inch, Dezimalzahl)
|
|
<p>
|
|
Kann dazu verwendet werden den Nullpunkt von großformatigen Plottern in die linke
|
|
untere Ecke zu verlegen.
|
|
|
|
|
|
<a name=124>
|
|
<h1>Bedruckbarer Bereich</h1>
|
|
<h2>Height</h2>
|
|
Bedruckbarer Bereich in y-Richtung (Inch).
|
|
<h2>Width</h2>
|
|
Bedruckbarer Bereich in x-Richtung (Inch).
|
|
<p>
|
|
Bitte beachten Sie, dass der CAM-Prozessor die Zeichnung auf mehrere
|
|
Teile aufteilt, falls das umschließende Rechteck um alle in der
|
|
Datei enthaltenen Objekte (auch in Layern, die nicht ausgebeben
|
|
werden) nicht auf die bedruckbare Fläche passt.
|
|
|
|
|
|
<a name=125>
|
|
<h1>Stiftdaten</h1>
|
|
<h2>Diameter</h2>
|
|
Stift-Durchmesser in mm: Wird beim Füllen von Flächen zur
|
|
Berechnung der notwendigen Anzahl von Linien benutzt.
|
|
<h2>Velocity</h2>
|
|
Stiftgeschwindigkeit in cm/s (bei Stift-Plottern, die
|
|
unterschiedliche Geschwindigkeiten unterstützen). Die
|
|
Plotter-Default-Geschwindigkeit wählt man mit dem Wert 0.
|
|
|
|
|
|
<a name=126>
|
|
<h1>Eigenen Device-Treiber definieren</h1>
|
|
Die Ausgabetreiber sind in der Textdatei eagle.def definiert.
|
|
Dort finden Sie Details, wie man einen eigenen Treiber definiert.
|
|
Am besten kopieren Sie einen Block eines existierenden Treibers
|
|
für denselben Gerätetyp und passen dann die Paramter an.
|
|
<p>
|
|
Bitte verwenden Sie einen <a href=#26>Text-Editor</a>,
|
|
der keine Steuerzeichen in die Datei schreibt.
|
|
|
|
|
|
<a name=127>
|
|
<h1>Ausgabedatei</h1>
|
|
Die <i>Ausgabedatei</i> enthält die Daten, die vom CAM-Prozessor
|
|
erzeugt werden.
|
|
<p>
|
|
Folgende Dateinamen sind üblich:
|
|
<pre>
|
|
=======================================================
|
|
Datei- Selekt. Layer Bedeutung
|
|
name
|
|
=======================================================
|
|
*.cmp Top, Via, Pad Bauteilseite
|
|
*.ly2 Route2, Via, Pad Multilayer-Innenlage
|
|
*.ly3 Route3, Via, Pad Multilayer-Innenlage,
|
|
*.ly4 $User1 Multilayer-Versorgungslage
|
|
... ...
|
|
*.sol Bot, Via, Pad Lötseite
|
|
*.plc tPl, Dim, tName, Bestückungsplan Bauteilseite
|
|
*.pls bPl, Dim, bName, Bestückungsplan Lötseite
|
|
*.stc tStop Lötstopmaske Bauteilseite
|
|
*.sts bStop Lötstopmaske Lötseite
|
|
*.drd Drills, Holes Bohrdaten für NC-Bohrmaschine
|
|
=======================================================
|
|
</pre>
|
|
<h2>Platzhalter</h2>
|
|
Der Ausgabedateiname kann entweder direkt eingegeben oder mittels <i>Platzhaltern</i>
|
|
dynamisch zusammengesetzt werden. Ein Platzhalter besteht aus dem Prozentzeichen
|
|
(<tt>'%'</tt>) gefolgt von einem Buchstaben. Folgende Platzhalter sind
|
|
definitert:
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>%D{xxx}</tt></td><td width=20><td>ein String, der nur im Namen der Datendatei eingesetzt wird</td></tr>
|
|
<tr><td><tt>%E</tt> </td><td width=20><td>die Extension der geladenen Datei (ohne den <tt>'.'</tt>)</td></tr>
|
|
<tr><td><tt>%H</tt> </td><td width=20><td>das <a href=#14>Home-Verzeichnis</a> des Benutzers</td></tr>
|
|
<tr><td><tt>%I{xxx}</tt></td><td width=20><td>ein String, der nur im Namen der Info-Datei eingesetzt wird</td></tr>
|
|
<tr><td><tt>%L</tt> </td><td width=20><td>die Layer-Nummern für blind&buried Vias (siehe unten)</td></tr>
|
|
<tr><td><tt>%N</tt> </td><td width=20><td>der Name der geladenen Datei (ohne Pfad und Extension)</td></tr>
|
|
<tr><td><tt>%P</tt> </td><td width=20><td>Verzeichnis-Pfad der geladenen Datei (ohne Dateinamen)</td></tr>
|
|
<tr><td><tt>%%</tt> </td><td width=20><td>das Zeichen <tt>'%'</tt></td></tr>
|
|
</table>
|
|
<p>
|
|
Zum Beispiel würde die folgende Definition
|
|
<p>
|
|
<tt>%N.cmp%I{.info}</tt>
|
|
<p>
|
|
den Namen <tt><i>boardname</i>.cmp</tt> für die Datendatei und <tt><i>boardname</i>.cmp.info</tt>
|
|
für die Info-Datei ergeben (falls das gewählte Device eine Info-Datei erzeugt).
|
|
<h2>Bohrdaten mit blind&buried Vias</h2>
|
|
Falls das Board "blind" oder "buried" Vias enthält,
|
|
generiert der CAM-Prozessor separate Bohrdateien für jeden tatsächlich
|
|
im Board vorkommenden Via-Übergang. Die Dateinamen werden gebildet indem
|
|
die Nummern des Start- und End-Layers an den Basisnamen angehängt werden,
|
|
wie zum Beispiel in
|
|
<pre>
|
|
<i>boardname</i>.drl.0104
|
|
</pre>
|
|
welches die Bohrdatei für das Lagenpaket 1-4 wäre. Wenn Sie die Layer-Nummern
|
|
an anderer Stelle stehen haben wollen, so können Sie dafür den Platzhalter
|
|
<tt>%L</tt> verwenden:
|
|
<pre>
|
|
%N.%L.drl
|
|
</pre>
|
|
ergäbe demnach
|
|
<pre>
|
|
<i>boardname</i>.0104.drl
|
|
</pre>
|
|
Der Name der Drill-Info-Datei wird immer ohne Layer-Nummern erzeugt und
|
|
ein eventueller '.' vor dem <tt>%L</tt> wird entfernt.
|
|
Dateien aus früheren CAM-Prozessor-Aufrufen, die dem gegebenen Pattern für
|
|
den Namen der Bohrdateien entsprechen würden, werden gelöscht bevor neue
|
|
Dateien erzeugt werden. Es gibt eine Drill-Info-Datei pro Job, die (unter
|
|
anderem) eine Liste aller generierten Bohrdateien enthält.
|
|
|
|
|
|
<a name=128>
|
|
<h1>Flag-Options</h1>
|
|
<h2>Mirror</h2>
|
|
Ausgabe spiegeln. Achtung, dabei entstehen negative
|
|
Koordinaten, deshalb sollte gleichzeitig Funktion "pos. Coord."
|
|
eingeschaltet sein.
|
|
<h2>Rotate</h2>
|
|
Die Zeichnung wird um 90 Grad gedreht. Achtung, dabei
|
|
entstehen negative Koordinaten, deshalb sollte gleichzeitig die
|
|
Funktion "pos. Coord." eingeschaltet sein.
|
|
<h2>Upside down</h2>
|
|
Die Zeichnung wird um 180 Grad gedreht. Zusammen mit Rotate
|
|
wird die Zeichnung um insgesamt 270 Grad gedreht. Achtung, dabei
|
|
entstehen negative Koordinaten, deshalb sollte gleichzeitig Funktion
|
|
"pos. Coord." eingeschaltet sein.
|
|
<h2>Pos. Coord</h2>
|
|
Die Zeichnung wird so ausgegeben, dass keine negativen
|
|
Koordinaten vorkommen. Sie wird an die Koordinatenachsen
|
|
herangeschoben. Achtung: negative Koordinaten führen bei vielen
|
|
Peripheriegeräten zu Fehlern!
|
|
<h2>Quickplot</h2>
|
|
Beschleunigte Ausgabe, bei der nur die Umrisse von Objekten
|
|
erscheinen.
|
|
<h2>Optimize</h2>
|
|
Mit dieser Option schalten Sie die Wegoptimierung für die
|
|
Plotterausgabe ein oder aus.
|
|
<h2>Fill pads</h2>
|
|
Pads füllen. Diese Funktion ist nur mit Treiber des Typs "generic",
|
|
wie z. B. mit PostScript möglich.<br>
|
|
Wird die Option deselektiert, sind die Bohrungen in Pads und
|
|
Vias sichtbar.
|
|
|
|
|
|
<a name=129>
|
|
<h1>Layer und Farben</h1>
|
|
Wählen Sie die auszugebenden Layer, indem Sie die Check-Boxes in
|
|
der Layer-Liste anklicken.
|
|
<p>
|
|
Bei Peripheriegeräten, die unterschiedliche Farben unterstützen,
|
|
geben Sie die Farbnummer für den jeweiligen Layer an.
|
|
<p>
|
|
Folgende Layer-Kombinationen und
|
|
<a href=#127>Ausgabe-Dateinamen</a>
|
|
sind üblich:
|
|
<pre>
|
|
=======================================================
|
|
Datei- Selekt. Layer Bedeutung
|
|
name
|
|
=======================================================
|
|
*.cmp Top, Via, Pad Bauteilseite
|
|
*.ly2 Route2, Via, Pad Multilayer-Innenlage
|
|
*.ly3 Route3, Via, Pad Multilayer-Innenlage,
|
|
*.ly4 $User1 Multilayer-Versorgungslage
|
|
... ...
|
|
*.sol Bot, Via, Pad Lötseite
|
|
*.plc tPl, Dim, tName, Bestückungsplan Bauteilseite
|
|
*.pls bPl, Dim, bName, Bestückungsplan Lötseite
|
|
*.stc tStop Lötstopmaske Bauteilseite
|
|
*.sts bStop Lötstopmaske Lötseite
|
|
*.drd Drills, Holes Bohrdaten für NC-Bohrmaschine
|
|
=======================================================
|
|
</pre>
|
|
|
|
|
|
<a name=130>
|
|
<h1>Konturdaten</h1>
|
|
EAGLE kann Konturdaten erzeugen, die beispielsweise zum Fräsen von Prototyp-Platinen
|
|
verwendet werden können.
|
|
<p>
|
|
Das User-Language-Programm <i>outlines.ulp</i> enthält alle Schritte um diese
|
|
Daten zu erzeugen. Die folgende ausführliche Beschreibung zeigt was zu tun ist, um
|
|
Konturdaten zu generieren.
|
|
<h2>Board vorbereiten</h2>
|
|
Zuerst definieren Sie ein <a href=#77>POLYGON</a> in dem Layer für den
|
|
die Konturdaten erzeugt werden sollen.
|
|
Das Polygon muss folgende Eigenschaften haben:
|
|
<ul>
|
|
<li>es muss den Namen _OUTLINES_ haben
|
|
<li>es muss das <b>einzige</b> Element mit dem Signalnamen _OUTLINES_ sein
|
|
<li>der Wert für <i>Rank</i> muss <tt>'6'</tt> sein
|
|
<li>der Wert für <i>Width</i> muss dem Durchmesser des Fräswerkzeugs entsprechen
|
|
<li>es muss groß genug sein, um die ganze Board-Fläche zu bedecken
|
|
</ul>
|
|
Wenn sich ein solches Polygon in Ihrem Layout befindet, berechnet es der
|
|
<a href=#81>RATSNEST</a>-Befehl in der Weise, dass seine <i>Konturen</i>
|
|
genau den Linien entsprechen, die mit dem Fräswerkzeug gefahren werden müssen,
|
|
um die einzelnen Signale voneinander freizufräsen.
|
|
Die <i>Füllung</i> des berechneten Polygons bestimmt, was weggefräst werden muss, um
|
|
alle unnötigen Kupferflächen zu entfernen.
|
|
<h2>Ausgeben der Daten</h2>
|
|
Die Konturdaten können über ein <a href=#138>User Language Program</a>
|
|
aus dem Board extrahiert werden. Die Datei <i>outlines.ulp</i>, die mit EAGLE geliefert wird,
|
|
enthält diesen Prozess vollständig. Wenn Sie ein eigenes ULP schreiben wollen,
|
|
verwenden Sie am besten <i>outlines.ulp</i> als Ausgangsbasis.
|
|
Sehen Sie die Hilfe-Seite zu <a href=#199>UL_POLYGON</a> für weitere Details
|
|
über das Erzeugen von Konturdaten mit Hilfe eines Polygons.
|
|
<h2>Durchmesser des Fräswerkzeugs</h2>
|
|
Der Durchmesser des Fräsers (und somit die Strichbreite <i>width</i> des Polygons)
|
|
muss so klein sein, dass es möglich ist zwischen zwei unterschiedlichen Signalen
|
|
durchzukommen, um diese zu isolieren.
|
|
<b>
|
|
Führen Sie in jedem Fall einen <a href=#46>Design Rule Check</a> (DRC) mit
|
|
den Werten für Mindestabstände zwischen unterschiedlichen Signalen (<i>Clearance</i>) durch,
|
|
die dem Durchmesser des Fräswerkzeugs entsprechen!</b>
|
|
<p>
|
|
Werte ungleich 0 für den Isolate-Parameter können dafür verwendet werden, beim
|
|
sequentiellen Arbeiten mit unterschiedlichen Fräserdurchmessern bereits gefräste
|
|
Bereiche auszusparen.
|
|
<h2>Herstellen des ursprünglichen Zustands im Board</h2>
|
|
Stellen Sie sicher, dass Sie nach dem Erzeugen der Konturdaten das Polygon mit
|
|
dem Namen _OUTLINES_ löschen. Dieses spezielle Polygon verursacht ansonsten
|
|
Kurzschlüsse im Board, da es nicht den üblichen <a href=#133>Design Rules</a>
|
|
entspricht!
|
|
|
|
|
|
<a name=131>
|
|
<h1>Autorouter</h1>
|
|
Der integrierte Autorouter kann vom Board-Fenster aus mit dem Befehl
|
|
<a href=#33>AUTO</a> gestartet werden.
|
|
<p>
|
|
Der Autorouter wird auch als "Follow-me"-Router im
|
|
<a href=#89>ROUTE</a>-Befehl verwendet.
|
|
<p>
|
|
Bitte überprüfen Sie Ihre <a href=#345>Lizenz</a>, um
|
|
festzustellen, ob Sie Zugriff zum Autorouter haben.
|
|
|
|
|
|
<a name=132>
|
|
<h1>Überprüfen des Designs</h1>
|
|
EAGLE hat zwei Befehle zur Überprüfung Ihres Designs:
|
|
<ul>
|
|
<li>Electrical Rule Check (<a href=#48>ERC</a>)
|
|
<li>Design Rule Check (<a href=#46>DRC</a>)
|
|
</ul>
|
|
Der ERC wird in einem Schaltplan-Fenster ausgeführt. Er überprüft das
|
|
Design auf elektrische Konsistenz.
|
|
<p>
|
|
Der DRC wird in einem Platinen-Fenster ausgeführt. Er überprüft das
|
|
Design auf Überlappung von unterschiedlichen Potentialen,
|
|
Abstandsverletzungen etc.
|
|
|
|
|
|
<a name=133>
|
|
<h1>Design Rules</h1>
|
|
<i>Design Rules</i> legen alle Parameter fest denen ein Platinen-Layout entsprechen muss.
|
|
<p>
|
|
Der <a href=#46>Design Rule Check</a> prüft das Board gegenüber diesen Regeln
|
|
und meldet Verstöße gegen sie.
|
|
<p>
|
|
Die Design Rules eines Boards können mit Hilfe des Design-Rule-Dialogs modifiziert werden.
|
|
Der Dialog öffnet sich, wenn man den <a href=#46>DRC</a>-Befehl ohne
|
|
abschließendes <tt>';'</tt> aufruft.
|
|
<p>
|
|
Neu angelegte Boards übernehmen ihre Design Rules aus der Datei 'default.dru',
|
|
die in dem ersten Verzeichnis, das im "Optionen/Verzeichnisse/Design-Regeln"-Pfad
|
|
aufgeführt ist, gesucht wird.
|
|
Ist keine solche Datei vorhanden, so gelten die programminternen Standardwerte.
|
|
<p>
|
|
<b>Hinweis</b> zu den Werten für <b>Clearance</b> und <b>Distance</b>: da die interne
|
|
Auflösung der Koordinaten 1/10000mm beträgt kann der DRC nur Fehler größer als 1/10000mm
|
|
zuverlässig melden.
|
|
<h2>Datei</h2>
|
|
Das <i>Datei</i>-Tab zeigt eine Beschreibung des aktuellen Satzes von Design Rules und erlaubt
|
|
über <i>Change</i> diese Beschreibung zu verändern (das ist empfehlenswert, wenn Sie eigene
|
|
Regeln definieren). Über <i>Load</i> kann man einen anderen Satz von Design Rules
|
|
aus einer Datei laden, <i>Save as..</i> speichert die aktuellen Einstellungen in eine
|
|
Datei.<br>
|
|
Bitte beachten Sie, dass die Design Rules immer in der Board-Datei gespeichert werden,
|
|
so dass diese Regeln auch für die Produktion der Platine bei Weitergabe der brd-Datei
|
|
an den Leiterplatten-Hersteller gelten. Die "Load..." und "Save as..." Buttons dienen
|
|
lediglich dazu die Design Rules einer Platine in eine externe Datei zu kopieren bzw.
|
|
sie von dort zu laden.
|
|
<p>
|
|
Falls die Design Rules verändert wurden, wird an den Namen in der Titelzeile
|
|
des Dialogs ein Stern (<tt>'*'</tt>) angehängt, um die Veränderung anzuzeigen.
|
|
Diese Markierung verschwindet wieder, sobald die Design Rules explizit abgespeichert
|
|
werden, oder ein neuer Satz von Design Rules geladen wird.
|
|
<h2>Layers</h2>
|
|
Im <i>Layers</i>-Tab legt man fest welche Layer die Platine tatsächlich verwendet,
|
|
wie dick die einzelnen Kupfer- bzw. Isolationslagen sind und welche Via-Übergänge
|
|
möglich sind (bitte beachten Sie, dass sich dies nur auf echte <i>Vias</i> bezieht;
|
|
selbst wenn kein Via von Layer 1 bis 16 im Layer-Setup definiert wurde sind <i>Pads</i>
|
|
dennoch erlaubt).
|
|
<p>
|
|
Das Layer-Setup wird durch den String im "Setup"-Feld definiert. Dieser String
|
|
besteht aus einer Sequenz von Layer-Nummern, getrennt durch jeweils ein <tt>'*'</tt>
|
|
oder <tt>'+'</tt>, wobei <tt>'*'</tt> für <i>Kern</i>-Material (auch als <i>FR4</i>
|
|
oder dergleichen bekannt) und <tt>'+'</tt> für <i>Prepreg</i> (oder sonstiges
|
|
Isolationsmaterial) steht. Die tatsächliche <i>Kern</i>- und <i>Prepreg</i>-Sequenz
|
|
hat keine weitergehende Bedeutung für EAGLE, ausser der unterschiedlichen farblichen
|
|
Darstellung in der Anzeige oben links auf diesem Tab (das tatsächliche Multilayer-Setup
|
|
muss auf jeden Fall mit dem Leiterplatten-Hersteller abgesprochen werden). Die Vias
|
|
werden dadurch definiert, dass eine Sequenz von Layern in <tt>(...)</tt> eingeschlossen
|
|
wird. Der Setup-String
|
|
<pre>
|
|
(1*16)
|
|
</pre>
|
|
würde demnach für eine zweilagige Platine bestehend aus den Layern 1 und 16 stehen,
|
|
mit ganz durchgehenden Vias (dies ist auch der Standardwert).<br>
|
|
Für eine Multilayer-Platine könnte das Setup etwa so aussehen:
|
|
<pre>
|
|
((1*2)+(15*16))
|
|
</pre>
|
|
was eine vierlagige Platine darstellt deren Layer-Paare 1/2 und 15/16 auf Kern-Material
|
|
gefertigt und durchgebohrt werden, und schließlich mit Prepreg verpresst und am Ende
|
|
nochmals ganz durchgebohrt werden.<br>
|
|
Neben Vias die durch einen ganzen Lagenstapel gehen (gemeinhin als <i>buried</i> Vias bekannt
|
|
wenn sie keine Verbindung zum Top- und Bottom-Layer haben) gibt es auch solche, die
|
|
nicht ganz durch den Lagenstapel gebohrt werden, sondern an einem Layer im Inneren
|
|
des Stapels enden. Solche Vias werden <i>blind</i> Vias genannt und werden im "Setup"-String
|
|
dadurch festgelegt, dass eine Layer-Sequenz in <tt>[t:...:b]</tt> eingeschlossen wird,
|
|
wobei <i>t</i> und <i>b</i> die Layer bezeichnen bis zu denen das Via von der Ober-
|
|
bzw. Unterseite aus gesehen geht. Ein mögliches Setup mit <i>blind</i> Vias könnte so
|
|
aussehen:
|
|
<pre>
|
|
[2:1+((2*3)+(14*15))+16:15]
|
|
</pre>
|
|
Dies ist im wesentlichen das vorherige Beispiel, erweitert um zwei zusätzliche
|
|
Aussenlagen, die mit den nächstinneren Lagen durch <i>blind</i> Vias verbunden sind.
|
|
Es ist auch möglich nur einen der Parameter <i>t</i> bzw. <i>b</i> zu benutzen, so dass
|
|
<pre>
|
|
[2:1+((2*3)+(15*16))]
|
|
</pre>
|
|
ebenfalls ein gültiges Setup wäre. <i>blind</i> Vias müssen nicht am Top oder Bottom
|
|
Layer beginnen, sondern können auch in innenliegenden Lagenstapeln verwendet werden, etwa in
|
|
<pre>
|
|
[2:1+[3:2+(3*4)+5:4]+16:5]
|
|
</pre>
|
|
Ein <i>blind</i> Via von Layer <i>a</i> nach Layer <i>b</i> implementiert auch alle
|
|
möglichen <i>blind</i> Vias von Layer <i>a</i> nach allen Layern zwischen <i>a</i> und <i>b</i>,
|
|
so dass
|
|
<pre>
|
|
[3:1+2+(3*16)]
|
|
</pre>
|
|
<i>blind</i> Vias von Layer 1 nach 2 und von Layer 1 nach 3 erlauben würde.
|
|
<h2>Clearance</h2>
|
|
Im <i>Clearance</i>-Tab definiert man verschiedene Mindestabstände zwischen
|
|
Objekten in den Signallayern. Das sind üblicherweise Mindestwerte, die vom
|
|
Fertigungsprozess beim Leiterplatten-Hersteller vorgegeben werden. Sprechen
|
|
Sie sich dazu mit dem Hersteller ab. <br>
|
|
Der aktuelle Mindestabstand zwischen Objekten, die zu unterschiedlichen Signalen
|
|
gehören, werden auch von den Werten der unterschiedlichen <a href=#38>Netzklassen</a> beeinflusst.
|
|
<p>
|
|
<p>
|
|
Bitte beachten Sie, dass ein Polygon mit dem besonderen Namen _OUTLINES_ dazu verwendet
|
|
wird <a href=#130>Kontur-Daten</a> zu erzeugen und dieses die Design Rules
|
|
<b>nicht</b> einhält.
|
|
<h2>Distance</h2>
|
|
Im <i>Distance</i>-Tab legt man die Mindestabstände zwischen Objekten in den Signallayern
|
|
und dem Platinenrand (Dimension) und zwischen Bohrungen (Holes) fest.
|
|
Achtung: Es werden nur Signale gegenüber Dimension geprüft, die auch tatsächlich
|
|
an mindestens einem Pad oder Smd angeschlossen sind. So ist es erlaubt, Eckwinkel
|
|
zur Markierung der Platinenbegrenzung in den Signallayern zu zeichnen ohne
|
|
dass der DRC Fehler meldet.
|
|
<p>
|
|
Aus Gründen der Kompatibilität zu Version 3.5x gilt:
|
|
Wird der Parameter für den Mindestabstand zwischen Kupfer und Dimension auf <tt>0</tt>
|
|
gesetzt, so werden Objekte im Dimension-Layer beim Freirechnen der Polygone nicht
|
|
mehr berücksichtigt (ausgenommen Holes, die immer berücksichtigt werden). Es findet
|
|
dann auch keine Abstandsprüfung zwischen Kupfer und Dimension mehr statt.
|
|
<h2>Sizes</h2>
|
|
Unter <i>Sizes</i> legt man die Mindestbreite von Objekten in Signallayern und den
|
|
Mindestbohrdurchmesser fest. Diese Werte sind absolute Minimalmaße, die vom
|
|
Herstellungsprozess der Platine bestimmt werden. Sprechen Sie sich hierzu
|
|
mit dem Leiterplatten-Hersteller ab.<br>
|
|
Die Mindestbreite von Leiterbahnen und der Mindestbohrdurchmesser von Durchkontaktierungen
|
|
kann ausserdem für unterschiedliche Netzklassen festgelegt werden.
|
|
<h2>Restring</h2>
|
|
Im <i>Restring</i>-Tab definiert man die Mindestbreite des Kupferrings, die nach
|
|
dem Bohren eines Pads oder Vias um die Bohrung herum stehen bleibt. Die Werte
|
|
werden in Prozent des Bohrdurchmessers angegeben. Ausserdem kann ein Minimal- und
|
|
ein Maximalwert festgelegt werden. Die Restringbreiten für Pads können im Top-,
|
|
Bottom- und in den Innen-Layern unterschiedlich sein, während bei Durchkontaktierungen
|
|
(Vias) nur zwischen Aussen- und Innenlagen unterschieden wird.<br>
|
|
Wenn für den tatsächlichen Durchmesser eines Pads (in der Bibliothek festgelegt) oder
|
|
eines Vias ein größerer Wert vorgegeben wird, wird dieser in den Aussenlagen verwendet.
|
|
Pads können beim Anlegen von Packages mit dem Durchmesser 0 gezeichnet werden, so
|
|
dass der Restring vollständig in Abhängigkeit des Bohrdurchmessers berechnet werden
|
|
kann.
|
|
<h2>Shapes</h2>
|
|
Unter <i>Shapes</i> definiert man die Formen der Smds und Pads.<br>
|
|
Smds werden üblicherweise als Rechtecke (mit "Roundness" = 0) in der Bibliothek
|
|
definiert. Wenn Sie in Ihrem Design gerundete Smds verwenden wollen, kann man hier
|
|
einen Rundungsfaktor (Roundness) angeben.<br>
|
|
Pads werden normalerweise als Octagon (längliche Octagons wo sinnvoll)
|
|
in der Bibliothek festgelegt. In den Combo-Boxen können Sie festlegen,
|
|
ob die Pads im Layout so verwendet werden wie sie auch in der Bibliothek
|
|
definiert wurden, oder ob alle rechteckig, rund oder octagonal sein sollen.
|
|
Das kann man für Top- und Bottom-Layer separat definieren.<br>
|
|
Wird das "erste" Pad in der Bibliothek als solches markiert, kann man in der
|
|
dritten Combo-Box bestimmen, welche Form dieses Pad haben soll
|
|
(entweder rund, rechteckig, octagonal oder keine spezielle Form).<br>
|
|
Die Elongation-Parameter legen das Aussehen von Pads mit der Form Long bzw. Offset fest.
|
|
<h2>Supply</h2>
|
|
Unter <i>Supply</i> legt man die Abmessungen für Thermal- und Annulus-Symbole fest, die
|
|
in Versorgungslagen verwendet werden.<br>
|
|
Bitte beachten Sie, dass das tatsächliche Aussehen dieser Symbole von ihrer
|
|
Definition abweichen kann, wenn man Daten mit Photoplottern erzeugt, die besondere
|
|
Thermal/Annulus-Blenden verwenden. Siehe hierzu auch die Bemerkungen zum Thema
|
|
"Versorgungs-Layer" beim <a href=#61>LAYER</a>-Befehl.
|
|
<h2>Masks</h2>
|
|
Im <i>Masks</i>-Tab legt man die Abmessungen von Lötstop- (solder stop) und
|
|
Lotpasten-Symbolen (cream mask) fest. Sie werden in Prozent der kleineren Seite
|
|
eines Smds, Pads oder Vias angegeben und werden durch einen Minimal- bzw.
|
|
Maximalwert begrenzt.<br>
|
|
Eine Lötstopmaske wird automatisch für Smds, Pads und solche Vias erzeugt, die den
|
|
angegebenen Wert für den Bohrdurchmesser im Parameter "Limit" überschreiten.<br>
|
|
Die Lotpastenmaske (cream frame) wird nur für Smds ezeugt.
|
|
<h2>Misc</h2>
|
|
Unter <i>Misc</i> kann man die Prüfung von Raster, Winkel, Schriftart und
|
|
Sperrflächen aktivieren.
|
|
<p>
|
|
|
|
|
|
<a name=134>
|
|
<h1>Querverweise</h1>
|
|
Es gibt mehrere Möglichkeiten, Querverweise in EAGLE Schaltplänen zu
|
|
erzeugen, die in den folgenden Abschnitten beschrieben werden.
|
|
<ul>
|
|
<li><a href=#135>Querverweis-Labels</a>
|
|
<li><a href=#136>Bauteil-Querverweise</a>
|
|
<li><a href=#137>Kontaktspiegel</a>
|
|
</ul>
|
|
|
|
|
|
<a name=135>
|
|
<h1>Querverweis-Labels</h1>
|
|
Ein einfaches Label kann dazu benutzt werden, den Namen eines Netzes im Schaltplan
|
|
sichtbar zu machen. Wird bei einem Label die <i>xref</i>-Eigenschaft aktiviert,
|
|
so ändert sich sein Verhalten und es wird zum <i>Querverweis-Label</i>.
|
|
<p>
|
|
Querverweis-Labels werden typischerweise am rechten oder linken Rand einer
|
|
Schaltplanseite platziert und zeigen die nächste (bzw. vorherige) Seite an,
|
|
auf der ein bestimmtes Netz vorkommt. Eine genaue Beschreibung der
|
|
Funktionsweise finden Sie beim <a href=#60>LABEL</a>-Befehl.
|
|
|
|
|
|
<a name=136>
|
|
<h1>Bauteil-Querverweise</h1>
|
|
Elektro-Schaltpläne enthalten oft elektromechanische Relais ("Schütze"), die
|
|
aus einem Spulensymbol und einem oder mehreren Kontaktsymbolen bestehen. Wenn Spule
|
|
und Kontakte auf unterschiedliche Schaltplanseiten verteilt sind, ist es nützlich,
|
|
wenn bei jedem Kontakt angegeben ist, auf welcher Seite seine Spule zu finden ist.
|
|
Dies kann dadurch erreicht werden, dass dem Spulengatter im Device-Set der Add-Level
|
|
<i>Must</i> gegeben wird (siehe <a href=#29>ADD</a>-Befehl) und der
|
|
Platzhaltertext <tt>'>XREF'</tt> in den Kontaktsymbolen platziert wird
|
|
(siehe <a href=#99>TEXT</a>-Befehl).
|
|
<p>
|
|
Bei der späteren Anzeige wird der <tt>'>XREF'</tt>-Platzhaltertext (gemäß
|
|
dem <a href=#92>Format für Bauteil-Querverweise</a>) durch die
|
|
Seitennummer und Zeichnungsrahmen-Koordinate des <i>Must</i>-Gatters dieses
|
|
Bauteils ersetzt.
|
|
<p>
|
|
Das Kapitel <a href=#137>Kontaktspiegel</a> erklärt,
|
|
wie auf der Seite, die die Spule enthält, ein Querverweis auf die Kontakte
|
|
dargestellt werden kann.
|
|
|
|
|
|
<a name=137>
|
|
<h1>Kontaktspiegel</h1>
|
|
In einem aus mehreren Seiten bestehenden Elektro-Schaltplan mit
|
|
elektro-mechanischen Relais, deren Spulen und Kontakte auf unterschiedliche
|
|
Seiten verteilt sind, ist es nützlich sehen zu können, auf welchen Seiten
|
|
sich die einzelnen Kontakte eines Relais befinden.
|
|
EAGLE kann einen solchen <i>Kontaktspiegel</i> automatisch anzeigen, wenn
|
|
folgende Voraussetzungen erfüllt sind.
|
|
<p>
|
|
Die Kontakt-Symbole müssen den Platzhaltertext <tt>'>XREF'</tt> enthalten,
|
|
damit <a href=#136>Bauteil-Querverweise</a> erzeugt
|
|
werden.
|
|
<p>
|
|
Die Kontakt-Symbole sollten so gezeichnet werden, dass die Pins nach oben bzw.
|
|
unten zeigen, und dass der Ursprung in der Mitte des Symbols liegt.
|
|
<p>
|
|
Das erste Kontakt-Gatter in der Device-Set-Zeichnung sollte an der X-Koordinate
|
|
0 platziert werden, und seine Y-Koordinate sollte so groß sein, dass sein unterer
|
|
Pin sich im positiven Bereich befindet, typischerweise bei 100mil. Die restlichen
|
|
Kontakt-Gatter sollten rechts davon platziert werden, mit ihrem Ursprung
|
|
an der gleichen Y-Koordinate wie das erste. Das Spulen-Gatter kann an einer
|
|
beliebigen Stelle platziert werden.
|
|
<p>
|
|
Im Schaltplan wird der Kontaktspiegel an der selben X-Koordinate dargestellt wie
|
|
die Spule, und direkt unterhalb der Y-Koordinate, die durch den Platzhaltertext
|
|
<tt>'>CONTACT_XREF'</tt> definiert wird. Dieser Platzhaltertext kann entweder
|
|
in einem Zeichnungsrahmen-Symbol oder direkt auf der Schaltplanseite platziert
|
|
werden. Kommt er an beiden Stellen vor, so wird derjenige in der Schaltplanseite
|
|
genommen. Der Text selber ist auf der Schaltplanseite nicht sichtbar.
|
|
<p>
|
|
Die grafische Darstellung des Kontaktspiegels besteht aus allen Gattern, die einen
|
|
<tt>'>XREF'</tt> Platzhaltertext haben (ausgenommen das erste <i>Must</i>-Gatter,
|
|
welches die Spule ist und normalerweise keinen solchen Text hat). Die Gatter werden
|
|
um 90 Grad gedreht und von oben nach unten in dem gleichen Abstand dargestellt,
|
|
den sie im Device-Set von links nach rechts haben. Ihre Seitennummern und
|
|
Zeichnungsrahmen-Koordinaten werden rechts neben jedem verwendeten Gatter angezeigt.
|
|
Jegliche anderen Texte, die in den Symbolen definiert wurden, werden nicht
|
|
dargestellt, wenn die Symbole zur Anzeige des Kontaktspiegels verwendet werden.
|
|
<p>
|
|
Beachten Sie bitte, dass der Kontaktspiegel nicht mit der Maus selektiert werden kann.
|
|
Falls Sie ihn verschieben wollen, so bewegen Sie die Spule und der Kontaktspiegel
|
|
folgt ihr automatisch.
|
|
Es kann vorkommen, dass der Kontaktspiegel nach dem Einfügen, Verschieben, Löschen
|
|
oder Vertauschen von Kontakt-Gattern, bzw. einer Veränderung des <tt>'>CONTACT_XREF'</tt>
|
|
Platzhaltertexts, nicht mehr aktuell ist. Ein neuer Bildaufbau aktualisiert ihn wieder.
|
|
|
|
|
|
<a name=138>
|
|
<h1>User Language</h1>
|
|
Die EAGLE-User-Language gestattet den Zugriff auf die EAGLE-Datenstrukturen
|
|
und kann beliebige Ausgabedateien erzeugen.
|
|
<p>
|
|
Um diese Eigenschaft zu Nutzen, müssen Sie ein
|
|
<a href=#139>User-Language-Programm (ULP) schreiben</a>
|
|
und anschließend <a href=#140>ausführen</a>.
|
|
<p>
|
|
Die folgenden Abschnitte beschreiben die User Language im Detail:
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><a href=#141>Syntax</a> </td><td width=20><td>Syntax-Regeln</td></tr>
|
|
<tr><td><a href=#164>Daten-Typen</a> </td><td width=20><td>Definiert die grundlegenden Datentypen (Data types)</td></tr>
|
|
<tr><td><a href=#171>Objekt-Typen</a> </td><td width=20><td>Definiert die EAGLE-Objekte (Objects)</td></tr>
|
|
<tr><td><a href=#210>Definitionen</a> </td><td width=20><td>Zeigt, wie man eine Definition schreibt</td></tr>
|
|
<tr><td><a href=#214>Operatoren</a> </td><td width=20><td>Liste der gültigen Operatoren (Operators)</td></tr>
|
|
<tr><td><a href=#221>Ausdrücke</a> </td><td width=20><td>Zeigt, wie man einen Ausdruck (Expression) schreibt</td></tr>
|
|
<tr><td><a href=#228>Statements</a> </td><td width=20><td>Definiert die gültigen Statements</td></tr>
|
|
<tr><td><a href=#240>Builtins</a> </td><td width=20><td>Liste der Builtin-Constants, -Functions etc.</td></tr>
|
|
<tr><td><a href=#302>Dialoge</a> </td><td width=20><td>zeigt wie man grafische Dialoge in ein ULP integriert</td></tr>
|
|
</table>
|
|
|
|
|
|
<a name=139>
|
|
<h1>Schreiben eines ULP</h1>
|
|
Ein User-Language-Programm ist eine reine Textdatei und wird in einer C-ähnlichen
|
|
<a href=#141>Syntax</a> geschrieben.
|
|
User-Language-Programme
|
|
verwenden die Extension <tt>.ulp</tt>. Sie können ein ULP mit jedem beliebigen Text-Editor schreiben,
|
|
vorausgesetzt, er fügt keine Steuerzeichen ein, oder Sie können den
|
|
<a href=#26>EAGLE-Text-Editor</a> verwenden.
|
|
<p>
|
|
Ein User-Language-Programm besteht aus zwei wesentlichen Bestandteilen:
|
|
<a href=#210>Definitionen</a> und
|
|
<a href=#228>Statements</a>.
|
|
<p>
|
|
<a href=#210>Definitionen</a> werden verwendet, um Konstanten,
|
|
Variablen und Funktionen zu definieren, die wiederum in
|
|
<a href=#228>Statements</a> verwendet werden.
|
|
<p>
|
|
Ein einfaches ULP könnte so aussehen:
|
|
<pre>
|
|
#usage "Add the characters in the word 'Hello'\n"
|
|
"Usage: RUN sample.ulp"
|
|
// Definitions:
|
|
string hello = "Hello";
|
|
int count(string s)
|
|
{
|
|
int c = 0;
|
|
for (int i = 0; s[i]; ++i)
|
|
c += s[i];
|
|
return c;
|
|
}
|
|
// Statements:
|
|
output("sample") {
|
|
printf("Count is: %d\n", count(hello));
|
|
}
|
|
</pre>
|
|
Der Wert der <tt><a href=#147>#usage</a></tt>-Directive zeigt im
|
|
<a href=#12>Control Panel</a> die Beschreibung des Programms an.
|
|
<p>
|
|
Soll das Ergebnis des ULPs ein Befehl sein, der im Editor-Fenster ausgeführt
|
|
werden soll, kann man die Funktion <tt><a href=#260>exit()</a></tt>
|
|
verwenden um den Befehl an das Editor-Fenster zu schicken.
|
|
|
|
|
|
<a name=140>
|
|
<h1>ULP ausführen</h1>
|
|
User-Language-Programme werden mit Hilfe des
|
|
<a href=#90>RUN</a>-Befehls von der Kommandozeile eines
|
|
Editor-Fensters aus ausgeführt.
|
|
<p>
|
|
Ein ULP kann die Information zurückgeben, ob es erfolgreich abgeschlossen
|
|
wurde oder nicht. Sie können die
|
|
<tt><a href=#260>exit()</a></tt>-Funktion verwenden, um das Programm
|
|
zu beenden und den Rückgabewert (return value) zu setzen.
|
|
<p>
|
|
Ein "return value" von <tt>0</tt> bedeutet, das ULP wurde normal beendet
|
|
(erfolgreich), während jeder andere Wert einen unnormalen Programmabbruch
|
|
anzeigt.
|
|
<p>
|
|
Der Default-Rückgabewert jedes ULP ist <tt>0</tt>.
|
|
<p>
|
|
Wird der <a href=#90>RUN</a>-Befehl als Teil einer
|
|
<a href=#91>Script-Datei</a>, ausgeführt, dann wird die Script-Datei
|
|
abgebrochen, wenn das ULP mit einem "return value" ungleich <tt>0</tt> beendet
|
|
wurde.
|
|
<p>
|
|
Eine spezielle Variante der Funktion <tt><a href=#260>exit()</a></tt> kann
|
|
verwendet werden, um einen Befehl als Ergebnis des ULPs an ein Editor-Fenster zu schicken.
|
|
|
|
|
|
<a name=141>
|
|
<h1>Syntax</h1>
|
|
Die Grundbausteine eines User-Language-Programms sind:
|
|
<ul>
|
|
<li><a href=#142>Whitespace</a>
|
|
<li><a href=#143>Kommentare</a>
|
|
<li><a href=#144>Direktiven</a>
|
|
<li><a href=#148>Schlüsselwörter (Keywords)</a>
|
|
<li><a href=#149>Identifier</a>
|
|
<li><a href=#150>Konstanten</a>
|
|
<li><a href=#156>Punctuator-Zeichen</a>
|
|
</ul>
|
|
Alle unterliegen bestimmten Regeln, die in den entsprechenden Abschnitten
|
|
beschrieben werden.
|
|
|
|
|
|
<a name=142>
|
|
<h1>Whitespace</h1>
|
|
Bevor ein User-Language-Programm ausgeführt werden kann, muss es von einer
|
|
Datei eingelesen werden. Während dieses Vorgangs wird er Inhalt der Datei
|
|
zerlegt (<i>parsed</i>) in Tokens und in <i>Whitespace</i>.
|
|
<p>
|
|
Leerzeichen (blanks), Tabulatoren, Newline-Zeichen und
|
|
<a href=#143>Kommentar</a> werden als <i>Whitespace</i>
|
|
behandelt und nicht berücksichtigt.
|
|
<p>
|
|
Die einzige Stelle, an der ASCII-Zeichen, die <i>Whitespace</i>
|
|
repräsentieren, berücksichtigt werden, ist innerhalb von
|
|
<a href=#150>Literal Strings</a>,
|
|
wie in
|
|
<pre>
|
|
string s = "Hello World";
|
|
</pre>
|
|
wo das Leerzeichen zwischen <tt>'o'</tt> und <tt>'W'</tt> ein Teil des Strings bleibt.
|
|
<p>
|
|
Wenn dem abschließenden Newline-Zeichen einer Zeile ein Backslash
|
|
(<tt>\</tt>), vorausgeht, werden Backslash und Newline nicht berücksichtigt.
|
|
<pre>
|
|
"Hello \
|
|
World"
|
|
</pre>
|
|
wird als <tt>"Hello World"</tt> interpretiert.
|
|
|
|
|
|
<a name=143>
|
|
<h1>Kommentare</h1>
|
|
Wenn man ein ULP schreibt, sollte man möglichst erklärenden Text
|
|
hinzufügen, der einen Eindruck davon vermittelt, was dieses Programm
|
|
tut. Sie können auch Ihren Namen und, falls verfügbar, Ihre Email-Adresse
|
|
hinzufügen, damit die Anwender Ihres Programms die Möglichkeit haben,
|
|
mit Ihnen Kontakt aufzunehmen, wenn Sie Probleme oder
|
|
Verbesserungsvorschläge haben.
|
|
<p>
|
|
Es gibt zwei Möglichkeiten, Kommentare einzufügen. Die erste verwendet
|
|
die Syntax
|
|
<pre>
|
|
/* some comment text */
|
|
</pre>
|
|
bei der alle Zeichen zwischen (und einschließlich) den Zeichen
|
|
<tt>/*</tt> und <tt>*/</tt> als Kommentar interpretiert wird.
|
|
Solche Kommentare können über mehrere Zeilen gehen, wie in
|
|
<pre>
|
|
/* This is a
|
|
multi line comment
|
|
*/
|
|
</pre>
|
|
aber sie lassen sich nicht verschachteln. Das erste <tt>*/</tt> das einem <tt>/*</tt>
|
|
folgt, beendet den Kommentar.
|
|
<p>
|
|
Die zweite Möglichkeit, einen Kommentar einzufügen, verwendet die Syntax
|
|
<pre>
|
|
int i; // some comment text
|
|
</pre>
|
|
Dabei werden alle Zeichen nach (und einschließlich) dem <tt>//</tt>
|
|
bis zum Newline-Zeichen (aber nicht einschließlich) am Ende der Zeile
|
|
als Kommentar interpretiert.
|
|
|
|
|
|
<a name=144>
|
|
<h1>Direktiven</h1>
|
|
Folgende <i>Direktiven</i> sind verfügbar:
|
|
<pre>
|
|
<a href=#145>#include</a>
|
|
<a href=#146>#require</a>
|
|
<a href=#147>#usage</a>
|
|
</pre>
|
|
|
|
|
|
<a name=145>
|
|
<h1>#include</h1>
|
|
Ein ULP kann Befehle aus einem anderen ULP durch die <tt>#include</tt>-Direktive
|
|
ausführen. Die Syntax lautet
|
|
<pre>
|
|
#include "<i>filename</i>"
|
|
</pre>
|
|
Die Datei <tt>filename</tt> wird zuerst im selben Verzeichnis in dem sich auch die
|
|
Source-Datei (das ist die Datei mit der <tt>#include</tt>-Directive) befindet, gesucht.
|
|
Wird sie dort nicht gefunden, wird in den angegebenen ULP-Verzeichnissen gesucht.
|
|
<p>
|
|
Die maximale "include-Tiefe" ist 10.
|
|
<p>
|
|
Jede <tt>#include</tt>-Direktive wird nur <b>einmal</b> ausgeführt. So wird
|
|
sichergestellt, dass keine Mehrfachdefinitionen von Variablen oder Funktionen entstehen,
|
|
die Fehler verursachen könnten.
|
|
<h2>Hinweis zur Kompatibilität zwischen den Betriebssystemen</h2>
|
|
<table><tr><td valign="top"><img src="platforms-win.png"></td><td valign="middle">
|
|
Enthält <i>filename</i> eine Pfadangabe, ist es das Beste als Trennzeichen immer den
|
|
<b>Forward-Slash</b> (/)zu verwenden (auch unter Windows!). Laufwerksbuchstaben unter
|
|
Windows sollten vermieden werden. Wird das berücksichtigt, läuft das ULP unter
|
|
allen Betriebssystemen.
|
|
</td></tr></table>
|
|
|
|
|
|
<a name=146>
|
|
<h1>#require</h1>
|
|
Mit der Zeit kann es vorkommen, dass neuere EAGLE-Versionen neue oder veränderte
|
|
User Language Funktionen implementieren, die Fehlermeldungen verursachen können,
|
|
wenn ein solches ULP aus einer älteren EAGLE-Version heraus aufgerufen wird.
|
|
Um dem Benutzer eine konkrete Meldung zu geben, dass dieses ULP mindestens eine
|
|
bestimmte EAGLE-Version benötigt, kann ein ULP die <tt>#require</tt>-Direktive
|
|
enthalten. Die Syntax lautet
|
|
<pre>
|
|
#require <i>version</i>
|
|
</pre>
|
|
Die <i>version</i> muss als <a href=#153>Real-Konstante</a>
|
|
der Form
|
|
<pre>
|
|
V.RRrr
|
|
</pre>
|
|
angegeben werden, wobei <tt>V</tt> die Versionsnummer ist, <tt>RR</tt> die Release-Nummer
|
|
und <tt>rr</tt> die (optionale) Revisions-Nummer (beide mit führenden Nullen
|
|
aufgefüllt, falls sie kleiner als 10 sind). Falls also zum Beispiel ein ULP
|
|
mindestens die EAGLE-Version 4.11r06 voraussetzt (welches die Betaversion war die
|
|
als erste die <tt>#require</tt>-Direktive implementierte), könnte es
|
|
<pre>
|
|
#require 4.1106
|
|
</pre>
|
|
benutzen. Entsprechend würde für Version 5.1.2
|
|
<pre>
|
|
#require 5.0102
|
|
</pre>
|
|
gelten.
|
|
|
|
|
|
<a name=147>
|
|
<h1>#usage</h1>
|
|
Jedes User-Language-Programm sollte Informationen über seine Funktion, die Benutzung und
|
|
evtl. auch über den Autor enthalten.<br>
|
|
Die Direktive
|
|
<pre>
|
|
#usage <i>text</i> [, <i>text</i>...]
|
|
</pre>
|
|
ist die übliche Methode diese Information verfügbar zu machen.
|
|
<p>
|
|
Wird die <tt>#usage</tt>-Direktive verwendet,
|
|
wird ihr <tt>Text</tt> (der eine <a href=#154>String-Konstante</a> sein muss)
|
|
im <a href=#12>Control Panel</a> verwendet, um die Beschreibung des Programms anzuzeigen.
|
|
<p>
|
|
Für den Fall, dass das ULP diese Information z. B. in einer
|
|
<a href=#306>dlgMessageBox()</a> benötigt, ist dieser <tt>Text</tt> durch die
|
|
<a href=#241>Builtin-Konstante</a> <tt>usage</tt> im ULP verfügbar.
|
|
<p>
|
|
Es wird nur die <tt>#usage</tt>-Direktive des Hauptprogramms (das ist die Datei, die mit
|
|
dem <a href=#90>RUN</a>-Befehl gestartet wurde) berücksichtigt.
|
|
Deshalb sollten reine <a href=#145>include</a>-Dateien auch eine
|
|
eigene <tt>#usage</tt>-Directive enthalten.
|
|
<p>
|
|
Am besten ist die <tt>#usage</tt>-Direktive an den Anfang der Datei zu stellen,
|
|
so muss das Control Panel nicht den ganzen Text der Datei durchsuchen,
|
|
um die Informationen, die angezeigt werden sollen, zu finden.
|
|
<p>
|
|
Soll die Usage-Information in mehreren Sprachen verfügbar gemacht werden, so
|
|
sind die Texte der verschiedenen Sprachen durch Kommas getrennt anzugeben.
|
|
Dabei muss jeder Text mit dem zweibuchstabigen Code der jeweiligen Sprache
|
|
(so wie er auch von der <a href=#261>language()</a>-Funktion geliefert wird),
|
|
gefolgt von einem Doppelpunkt und beliebig vielen Leerzeichen beginnen.
|
|
Falls für die auf dem aktuellen System verwendete Sprache kein passender
|
|
Text gefunden wird, so wird der erste angegebene Text verwendet (dieser
|
|
sollte generell Englisch sein um das Programm einer möglichst großen Zahl
|
|
von Benutzern zugänglich zu machen).
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
#usage "en: A sample ULP\n"
|
|
"Implements an example that shows how to use the EAGLE User Language\n"
|
|
"Usage: RUN sample.ulp\n"
|
|
"Author: john@home.org",
|
|
"de: Beispiel eines ULPs\n"
|
|
"Implementiert ein Beispiel das zeigt, wie man die EAGLE User Language benutzt\n"
|
|
"Aufruf: RUN sample.ulp\n"
|
|
"Autor: john@home.org"
|
|
</pre>
|
|
|
|
|
|
<a name=148>
|
|
<h1>Schlüsselwörter (Keywords)</h1>
|
|
Die folgenden <i>Schlüsselwörter</i> sind für spezielle Zwecke reserviert
|
|
und dürfen nicht als normale Identifier-Namen verwendet werden:
|
|
<pre>
|
|
<a href=#232>break</a>
|
|
<a href=#238>case</a>
|
|
<a href=#165>char</a>
|
|
<a href=#233>continue</a>
|
|
<a href=#238>default</a>
|
|
<a href=#234>do</a>
|
|
<a href=#236>else</a>
|
|
<a href=#211>enum</a>
|
|
<a href=#235>for</a>
|
|
<a href=#236>if</a>
|
|
<a href=#166>int</a>
|
|
<a href=#212>numeric</a>
|
|
<a href=#167>real</a>
|
|
<a href=#237>return</a>
|
|
<a href=#168>string</a>
|
|
<a href=#238>switch</a>
|
|
<a href=#164>void</a>
|
|
<a href=#239>while</a>
|
|
</pre>
|
|
Zusätzlich sind die Namen von
|
|
<a href=#240>Builtins</a> und
|
|
<a href=#171>Objekt-Typen</a>
|
|
reserviert und dürfen nicht als Identifier-Namen verwendet werden.
|
|
|
|
|
|
<a name=149>
|
|
<h1>Identifier</h1>
|
|
Ein <i>Identifier</i> ist ein Name, der dazu benutzt wird, eine benutzerdefinierte
|
|
<a href=#211>Konstante</a>,
|
|
<a href=#212>Variable</a> oder
|
|
<a href=#213>Funktion</a>
|
|
einzuführen.
|
|
<p>
|
|
Identifier bestehen aus einer Sequenz von Buchstaben (<tt>a b c</tt>..., <tt>A B C</tt>...),
|
|
Ziffern (<tt>1 2 3</tt>...) und Unterstreichungszeichen (<tt>_</tt>). Das erste Zeichen
|
|
eines Identifiers <b>muss</b> ein Buchstabe oder ein Unterstreichungszeichen sein.
|
|
<p>
|
|
Identifier sind case-sensitive, das bedeutet, dass
|
|
<pre>
|
|
int Number, number;
|
|
</pre>
|
|
zwei unterschiedliche Integer-Variablen definieren würde.
|
|
<p>
|
|
Die maximale Länge eines Identifiers ist 100 Zeichen, von denen alle signifikant sind.
|
|
|
|
|
|
<a name=150>
|
|
<h1>Konstanten</h1>
|
|
Konstanten sind gleichbleibende Daten, die in ein User-Language-Programm
|
|
geschrieben werden. Analog zu den verschiedenen
|
|
<a href=#164>Datentypen</a>
|
|
gibt es auch unterschiedliche Typen von Konstanten.
|
|
<ul>
|
|
<li><a href=#151>Character-Konstanten</a>
|
|
<li><a href=#152>Integer-Konstanten</a>
|
|
<li><a href=#153>Real-Konstanten</a>
|
|
<li><a href=#154>String-Konstanten</a>
|
|
</ul>
|
|
|
|
|
|
<a name=151>
|
|
<h1>Character-Konstanten</h1>
|
|
Eine <i>Character-Konstante</i> besteht aus einem einzelnen Buchstaben
|
|
oder einer
|
|
<a href=#155>Escape-Sequenz</a>, eingeschlossen in
|
|
einfachen Hochkommas, wie in
|
|
<pre>
|
|
'a'
|
|
'='
|
|
'\n'
|
|
</pre>
|
|
Der Typ der Character-Konstante ist
|
|
<tt><a href=#165>char</a></tt>.
|
|
|
|
|
|
<a name=152>
|
|
<h1>Integer-Konstanten</h1>
|
|
Abhängig vom ersten (eventuell auch vom zweiten) Zeichen wird eine
|
|
<i>Integer-Konstante</i> unterschiedlich interpretiert:
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td>erstes</td> <td width=20><td>zweites</td> <td width=20><td>Konstante interpretiert als</td></tr>
|
|
<tr><td><tt>0</tt></td> <td width=20><td><tt>1-7</tt></td> <td width=20><td>oktal (Basis 8)</td></tr>
|
|
<tr><td><tt>0</tt></td> <td width=20><td><tt>x,X</tt></td> <td width=20><td>hexadezimal (Basis 16)</td></tr>
|
|
<tr><td><tt>1-9</tt></td> <td width=20><td> </td> <td width=20><td>dezimal (Basis 10)</td></tr>
|
|
</table>
|
|
<p>
|
|
Der Typ einer Integer-Konstante ist
|
|
<tt><a href=#166>int</a></tt>.
|
|
<h2>Beispiele</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>16</tt> </td><td width=20><td>dezimal</td></tr>
|
|
<tr><td><tt>020</tt> </td><td width=20><td>oktal</td></tr>
|
|
<tr><td><tt>0x10</tt> </td><td width=20><td>hexadezimal</td></tr>
|
|
</table>
|
|
|
|
|
|
<a name=153>
|
|
<h1>Real-Konstanten</h1>
|
|
Eine <i>Real-Konstante</i> folgt dem allgemeinen Muster
|
|
<pre>
|
|
[-]<i>int</i>.<i>frac</i>[e|E[±]<i>exp</i>]
|
|
</pre>
|
|
wobei die einzelnen Teile für
|
|
<ul>
|
|
<li>Vorzeichen (optional)
|
|
<li>Dezimal-Integer
|
|
<li>Dezimalpunkt
|
|
<li>Dezimalbruch
|
|
<li><tt>e</tt> oder <tt>E</tt> und ein Integer-Exponent mit Vorzeichen
|
|
</ul>
|
|
stehen.
|
|
<p>
|
|
Sie können entweder Dezimal-Integer-Zahl oder Dezimalbruch weglassen
|
|
(aber nicht beides). Sie können entweder den Dezimalpunkt oder
|
|
den Buchstaben <tt>e</tt> oder <tt>E</tt> und den Integer-Exponenten mit
|
|
Vorzeichen weglassen (aber nicht beides).
|
|
<p>
|
|
Der Typ einer Real-Konstante ist
|
|
<tt><a href=#167>real</a></tt>.
|
|
<h2>Beispiele</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td>Konstante </td><td width=20><td>Wert</td></tr>
|
|
<tr><td><tt>23.45e6</tt> </td><td width=20><td>23.45 x 10^6</td></tr>
|
|
<tr><td><tt>.0</tt> </td><td width=20><td>0.0</td></tr>
|
|
<tr><td><tt>0.</tt> </td><td width=20><td>0.0</td></tr>
|
|
<tr><td><tt>1.</tt> </td><td width=20><td>1.0</td></tr>
|
|
<tr><td><tt>-1.23</tt> </td><td width=20><td>-1.23</td></tr>
|
|
<tr><td><tt>2e-5</tt> </td><td width=20><td>2.0 x 10^-5</td></tr>
|
|
<tr><td><tt>3E+10</tt> </td><td width=20><td>3.0 x 10^10</td></tr>
|
|
<tr><td><tt>.09E34</tt> </td><td width=20><td>0.09 x 10^34</td></tr>
|
|
</table>
|
|
|
|
|
|
<a name=154>
|
|
<h1>String-Konstanten</h1>
|
|
Eine <i>String-Konstante</i> besteht aus einer Sequenz von Buchstaben
|
|
oder einer <a href=#155>Escape-Sequenz</a>,
|
|
eingeschlossen in doppelte Anführungszeichen, wie in
|
|
<pre>
|
|
"Hello world\n"
|
|
</pre>
|
|
Der Typ einer String-Konstante ist
|
|
<tt><a href=#168>string</a></tt>.
|
|
<p>
|
|
String-Konstanten können jede beliebige Länge haben, vorausgesetzt
|
|
es steht genügend Speicher zur Verfügung.
|
|
<p>
|
|
String-Konstanten können mit dem einfach aneinandergereiht werden
|
|
um längere Strings zu bilden:
|
|
<pre>
|
|
string s = "Hello" " world\n";
|
|
</pre>
|
|
Es ist auch möglich, eine String-Konstante über mehrere Zeilen zu schreiben,
|
|
indem man das Newline-Zeichen mit Hilfe des Backslash (<tt>\</tt>) "ausblendet":
|
|
<pre>
|
|
string s = "Hello \
|
|
world\n";
|
|
</pre>
|
|
|
|
|
|
<a name=155>
|
|
<h1>Escape-Sequenzen</h1>
|
|
Eine <i>Escape-Sequenz</i> besteht aus einem Backslash (<tt>\</tt>),
|
|
gefolgt von einem oder mehreren Sonderzeichen:
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td>Sequenz </td><td width=20><td>Bedeutung</td></tr>
|
|
<tr><td><tt>\a</tt> </td><td width=20><td>audible bell</td></tr>
|
|
<tr><td><tt>\b</tt> </td><td width=20><td>backspace</td></tr>
|
|
<tr><td><tt>\f</tt> </td><td width=20><td>form feed</td></tr>
|
|
<tr><td><tt>\n</tt> </td><td width=20><td>new line</td></tr>
|
|
<tr><td><tt>\r</tt> </td><td width=20><td>carriage return</td></tr>
|
|
<tr><td><tt>\t</tt> </td><td width=20><td>horizontal tab</td></tr>
|
|
<tr><td><tt>\v</tt> </td><td width=20><td>vertical tab</td></tr>
|
|
<tr><td><tt>\\</tt> </td><td width=20><td>backslash</td></tr>
|
|
<tr><td><tt>\'</tt> </td><td width=20><td>single quote</td></tr>
|
|
<tr><td><tt>\"</tt> </td><td width=20><td>double quote</td></tr>
|
|
<tr><td><tt>\O</tt> </td><td width=20><td><tt>O</tt> = bis 3 octal digits</td></tr>
|
|
<tr><td><tt>\xH</tt> </td><td width=20><td><tt>H</tt> = bis 2 hex digits</td></tr>
|
|
</table>
|
|
<p>
|
|
Jedes Zeichen nach dem Backslash, das nicht in der Liste aufgeführt ist,
|
|
wird als dieses Zeichen (ohne Backslash) behandelt.
|
|
<p>
|
|
Escape-Sequenzen können in
|
|
<a href=#151>Character-Konstanten</a> und
|
|
<a href=#154>String-Konstanten</a> verwendet werden.
|
|
<h2>Beispiele</h2>
|
|
<pre>
|
|
'\n'
|
|
"A tab\tinside a text\n"
|
|
"Ring the bell\a\n"
|
|
</pre>
|
|
|
|
|
|
<a name=156>
|
|
<h1>Punctuator-Zeichen</h1>
|
|
Die <i>Punctuator-Zeichen</i>, die in einem User-Language-Programm
|
|
benutzt werden können, sind
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>[]</tt> </td><td width=20><td><a href=#157>Eckige Klammern (Brackets)</a></td></tr>
|
|
<tr><td><tt>()</tt> </td><td width=20><td><a href=#158>Runde Klammern (Parentheses)</a></td></tr>
|
|
<tr><td><tt>{}</tt> </td><td width=20><td><a href=#159>Geschweifte Klammern (Braces)</a></td></tr>
|
|
<tr><td><tt>,</tt> </td><td width=20><td><a href=#160>Komma</a></td></tr>
|
|
<tr><td><tt>;</tt> </td><td width=20><td><a href=#161>Semikolon</a></td></tr>
|
|
<tr><td><tt>:</tt> </td><td width=20><td><a href=#162>Doppelpunkt (Colon)</a></td></tr>
|
|
<tr><td><tt>=</tt> </td><td width=20><td><a href=#163>Gleichheitszeichen</a></td></tr>
|
|
</table>
|
|
<p>
|
|
Andere Sonderzeichen werden als
|
|
<a href=#214>Operatoren</a>
|
|
verwendet.
|
|
|
|
|
|
<a name=157>
|
|
<h1>Eckige Klammern</h1>
|
|
Eckige Klammern (<i>Brackets</i>) werden verwendet in Array-Definitionen:
|
|
<pre>
|
|
int ai[];
|
|
</pre>
|
|
in Array-Subscripts
|
|
<pre>
|
|
n = ai[2];
|
|
</pre>
|
|
und in String-Subscripts, um auf die einzelnen Zeichen eines Strings
|
|
zuzugreifen
|
|
<pre>
|
|
string s = "Hello world";
|
|
char c = s[2];
|
|
</pre>
|
|
|
|
|
|
<a name=158>
|
|
<h1>Runde Klammern</h1>
|
|
Runde Klammern (<i>Parentheses</i>) gruppieren
|
|
<a href=#221>Ausdrücke</a>
|
|
(ändern eventuell die Priorität der <a href=#214>Operatoren</a>),
|
|
isolieren bedingte Ausdrücke und bezeichnen
|
|
<a href=#227>Funktionsaufrufe</a> und Funktionsparameter:
|
|
<pre>
|
|
d = c * (a + b);
|
|
if (d == z) ++x;
|
|
func();
|
|
void func2(int n) { ... }
|
|
</pre>
|
|
|
|
|
|
<a name=159>
|
|
<h1>Geschweifte Klammern</h1>
|
|
Geschweifte Klammern (<i>Braces</i>) bezeichnen den Beginn und das Ende
|
|
einer Verbundanweisung (<i>Compound Statement</i>)
|
|
<pre>
|
|
if (d == z) {
|
|
++x;
|
|
func();
|
|
}
|
|
</pre>
|
|
und werden auch verwendet, um die Werte für die Array-Initialisierung zu
|
|
gruppieren:
|
|
<pre>
|
|
int ai[] = { 1, 2, 3 };
|
|
</pre>
|
|
|
|
|
|
<a name=160>
|
|
<h1>Komma</h1>
|
|
Das <i>Komma</i> trennt die Elemente einer Funktionsargument-Liste
|
|
oder die Parameter eines Funktionsaufrufs:
|
|
<pre>
|
|
int func(int n, real r, string s) { ... }
|
|
int i = func(1, 3.14, "abc");
|
|
</pre>
|
|
Es trennt auch die Wertangaben bei der Array-Initialisierung:
|
|
<pre>
|
|
int ai[] = { 1, 2, 3 };
|
|
</pre>
|
|
und es begrenzt die Elemente einer Variablen-Definition:
|
|
<pre>
|
|
int i, j, k;
|
|
</pre>
|
|
|
|
|
|
<a name=161>
|
|
<h1>Semikolon</h1>
|
|
Der <i>Semikolon</i> schließt ein <a href=#228>Statement</a>
|
|
ab, wie in
|
|
<pre>
|
|
i = a + b;
|
|
</pre>
|
|
und er begrenzt die Init-, Test- und Inkrement-Ausdrücke eines
|
|
<a href=#235>for</a> Statements:
|
|
<pre>
|
|
for (int n = 0; n < 3; ++n) {
|
|
func(n);
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=162>
|
|
<h1>Doppelpunkt</h1>
|
|
Der <i>Doppelpunkt</i> bezeichnet das Ende eines Labels in einem
|
|
<a href=#238>Switch</a>-Statement:
|
|
<pre>
|
|
switch (c) {
|
|
case 'a': printf("It was an 'a'\n"); break;
|
|
case 'b': printf("It was a 'b'\n"); break;
|
|
default: printf("none of them\n");
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=163>
|
|
<h1>Gleichheitszeichen</h1>
|
|
Das <i>Gleichheitszeichen</i> trennt Variablen-Definitionen von
|
|
Initialisierungsliste:
|
|
<pre>
|
|
int i = 10;
|
|
char c[] = { 'a', 'b', 'c' };
|
|
</pre>
|
|
Es wird auch als
|
|
<a href=#219>Zuweisungsoperator</a> verwendet.
|
|
|
|
|
|
<a name=164>
|
|
<h1>Datentypen</h1>
|
|
Ein User-Language-Programm kann Variablen unterschiedlicher Typen definieren,
|
|
die unterschiedliche Arten von EAGLE-Daten repräsentieren.
|
|
<p>
|
|
Die vier grundlegenden Datentypen sind
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt><a href=#165>char</a></tt> </td><td width=20><td>für Einzelzeichen</td></tr>
|
|
<tr><td><tt><a href=#166>int</a></tt> </td><td width=20><td>für Ganzzahlen</td></tr>
|
|
<tr><td><tt><a href=#167>real</a></tt> </td><td width=20><td>für Gleitkommazahlen</td></tr>
|
|
<tr><td><tt><a href=#168>string</a></tt> </td><td width=20><td>für Textinformation</td></tr>
|
|
</table>
|
|
<p>
|
|
Neben diesen grundlegenden Datentypen gibt es auch
|
|
High-level-<a href=#171>Objekt-Typen</a>,
|
|
die die Datenstrukturen repräsentieren, wie sie in den EAGLE-Dateien
|
|
gespeichert sind.
|
|
<p>
|
|
Der Datentyp <tt>void</tt> wird nur als Return-Typ einer
|
|
<a href=#213>Funktion</a> verwendet. Er zeigt
|
|
an, dass diese Funktion keinen Wert zurückgibt.
|
|
|
|
|
|
<a name=165>
|
|
<h1>char</h1>
|
|
Der Datentyp <tt>char</tt> speichert Einzelzeichen, wie die Buchstaben des
|
|
Alphabets oder kleine Zahlen ohne Vorzeichen.
|
|
<p>
|
|
Eine Variable des Typs <tt>char</tt> belegt 8 bit (1 Byte), und kann jeden Wert
|
|
im Bereich <tt>0..255</tt> speichern.
|
|
<p>
|
|
<b>Siehe auch</b> <a href=#214>Operatoren</a>,
|
|
<a href=#151>Character-Konstanten</a>
|
|
|
|
|
|
<a name=166>
|
|
<h1>int</h1>
|
|
Der Datentyp <tt>int</tt> speichert Ganzzahlen mit Vorzeichen, wie die Koordinaten
|
|
eines Objekts.
|
|
<p>
|
|
Eine Variable vom Typ <tt>int</tt> belegt 32 bit (4 Byte), und kann
|
|
jeden Wert im Bereich <tt>-2147483648..2147483647</tt> speichern.
|
|
<p>
|
|
<b>Siehe auch</b> <a href=#152>Integer-Konstanten</a>
|
|
|
|
|
|
<a name=167>
|
|
<h1>real</h1>
|
|
Der Datentyp <tt>real</tt> speichert Gleitkommazahlen mit Vorzeichen, z.B.
|
|
den Rasterabstand.
|
|
<p>
|
|
Eine Variable vom Typ <tt>real</tt> belegt 64 bit (8 Byte), und kann jeden Wert
|
|
im Bereich <tt>±2.2e-308..±1.7e+308</tt> mit einer Genauigkeit von 15 Digits
|
|
speichern.
|
|
<p>
|
|
<b>Siehe auch</b> <a href=#153>Real-Konstanten</a>
|
|
|
|
|
|
<a name=168>
|
|
<h1>string</h1>
|
|
Der Datentyp <tt>string</tt> speichert Textinformation, z.B. den Namen eines Bauteils
|
|
oder eines Netzes.
|
|
<p>
|
|
Eine Variable des Typs <tt>string</tt> ist nicht auf eine bestimmte Länge beschränkt,
|
|
vorausgesetzt, es steht genügend Speicher zur Verfügung.
|
|
<p>
|
|
Variablen des Typs <tt>string</tt> sind ohne explizite Länge definiert. Sie
|
|
"wachsen" automatisch, soweit erforderlich, während der Programmausführung.
|
|
<p>
|
|
Die Elemente einer <tt>String</tt>-Variablen sind vom Typ
|
|
<tt><a href=#165>char</a></tt>, und
|
|
man kann auf sie individuell zugreifen, indem man
|
|
<tt>[index]</tt> benutzt.
|
|
<p>
|
|
Das erste Zeichen eines <tt>Strings</tt> hat den Index <tt>0</tt>:
|
|
<pre>
|
|
string s = "Layout";
|
|
printf("Third char is: %c\n", s[2]);
|
|
</pre>
|
|
Hier würde das Zeichen <tt>'y'</tt> ausgedruckt.
|
|
Beachten Sie, dass <tt>s[2]</tt> das dritte Zeichen des Strings
|
|
<tt>s</tt> liefert!
|
|
<p>
|
|
<b>Siehe auch</b> <a href=#214>Operatoren</a>,
|
|
<a href=#243>Builtin-Functions</a>,
|
|
<a href=#154>String-Konstanten</a>
|
|
<h2>Implementierungs-Details</h2>
|
|
Der Datentyp <tt>string</tt> ist implementiert wie von C her bekannte
|
|
"Zero-terminated-Strings", (also mit <tt>char[]</tt>).
|
|
Betrachtet man die folgende Variablen-Definition
|
|
<pre>
|
|
string s = "abcde";
|
|
</pre>
|
|
dann ist <tt>s[4]</tt> das Zeichen <tt>'e'</tt>, und <tt>s[5]</tt> ist das Zeichen
|
|
<tt>'\0'</tt>, oder der Integer-Wert <tt>0x00</tt>.
|
|
Diese Tatsache kann dazu ausgenutzt werden, das Ende eines Strings
|
|
ohne die Funktion <tt><a href=#274>strlen()</a></tt> festzustellen, wie
|
|
in
|
|
<pre>
|
|
for (int i = 0; s[i]; ++i) {
|
|
// do something with s[i]
|
|
}
|
|
</pre>
|
|
Es ist auch völlig in Ordnung, einen String "abzuschneiden", indem man
|
|
den Wert "0" an der gewünschten Stelle einfügt:
|
|
<pre>
|
|
string s = "abcde";
|
|
s[3] = 0;
|
|
</pre>
|
|
Als Ergebnis erhält man für den String <tt>s</tt> den Wert <tt>"abc"</tt>.
|
|
Beachten Sie bitte, dass alles, was auf den Wert "0" folgt, wirklich
|
|
verschwunden ist, und auch nicht mehr zurückgeholt werden kann, indem
|
|
der ursprüngliche Wert wieder eingesetzt wird. Das gleiche gilt auch
|
|
für jede andere Operation, bei der ein Zeichen zu 0 wird, wie etwa --s[3].
|
|
|
|
|
|
<a name=169>
|
|
<h1>Typ-Umwandlung</h1>
|
|
Der Typ des Ergebnisses eines arithmetischen
|
|
<a href=#221>Ausdrucks</a>, wie z.B. <tt>a + b</tt>,
|
|
wobei <tt>a</tt> und <tt>b</tt> unterschiedliche arithmetische Typen sind,
|
|
ist gleich dem "größeren" der beiden Operanden-Typen.
|
|
<p>
|
|
Arithmetische Typen sind
|
|
<tt><a href=#165>char</a></tt>,
|
|
<tt><a href=#166>int</a></tt> und
|
|
<tt><a href=#167>real</a></tt>
|
|
(in dieser Reihenfolge). Ist zum Beispiel <tt>a</tt> vom Typ
|
|
<tt><a href=#166>int</a></tt>
|
|
und <tt>b</tt> vom Typ
|
|
<tt><a href=#167>real</a></tt>, dann ist das Ergebnis
|
|
<tt>a + b</tt> vom Typ
|
|
<tt><a href=#167>real</a></tt>.
|
|
<p>
|
|
<b>Siehe auch</b> <a href=#170>Typecast</a>
|
|
|
|
|
|
<a name=170>
|
|
<h1>Typecast</h1>
|
|
Der Ergebnis-Typ eines arithmetischen
|
|
<a href=#221>Ausdrucks</a>
|
|
kann explizit in einen anderen arithmetischen Typ umgewandelt werden,
|
|
indem man einen
|
|
<i>Typecast</i> darauf anwendet.
|
|
<p>
|
|
Die allgemeine Syntax eines Typecast ist
|
|
<pre>
|
|
type(expression)
|
|
</pre>
|
|
wobei <tt>type</tt>
|
|
<tt><a href=#165>char</a></tt>,
|
|
<tt><a href=#166>int</a></tt> oder
|
|
<tt><a href=#167>real</a></tt> ist und
|
|
<tt>expression</tt> jeder arithmetische
|
|
<a href=#221>Ausdruck</a> sein kann.
|
|
<p>
|
|
Wenn man mit Typecast einen Ausdruck vom Typ
|
|
<tt><a href=#167>real</a></tt> in
|
|
<tt><a href=#166>int</a></tt> umwandelt, wird der Dezimalbruch
|
|
des Wertes abgeschnitten.
|
|
<p>
|
|
<b>Siehe auch</b> <a href=#169>Typ-Umwandlung</a>
|
|
|
|
|
|
<a name=171>
|
|
<h1>Objekt-Typen</h1>
|
|
Die EAGLE-Datenstruktur ist in drei Binärdatei-Typen gespeichert:
|
|
<ul>
|
|
<li>Library (*.lbr)
|
|
<li>Schaltplan (*.sch)
|
|
<li>Board (*.brd)
|
|
</ul>
|
|
Diese Dateien enthalten Objekte, die hierarchisch gegliedert sind.
|
|
In einem User-Language-Programm kann man auf die Hierarchiestufen mit
|
|
Hilfe der entsprechenden Builtin-Zugriffs-Statements zugreifen:
|
|
<pre>
|
|
<a href=#296>library</a>(L) { ... }
|
|
<a href=#299>schematic</a>(S) { ... }
|
|
<a href=#294>board</a>(B) { ... }
|
|
</pre>
|
|
Diese Zugriffs-Statements schaffen einen Kontext, innerhalb dessen Sie
|
|
auf alle Objekte in Bibliotheken, Schaltplänen oder Platinen zugreifen können.
|
|
<p>
|
|
Auf die "Properties" dieser Objekte kann mit Hilfe von <i>Members</i>
|
|
zugegriffen werden.
|
|
<p>
|
|
Es gibt zwei Arten von Members:
|
|
<ul>
|
|
<li>Data members
|
|
<li>Loop members
|
|
</ul>
|
|
<b>Data members</b> liefern die Objektdaten unmittelbar.
|
|
Zum Beispiel in
|
|
<pre>
|
|
board(B) {
|
|
printf("%s\n", B.name);
|
|
}
|
|
</pre>
|
|
liefert Data member <i>name</i> des Board-Objekts <i>B</i>
|
|
den Board-Namen.<br>
|
|
Data members können auch andere Objekte zurückgeben, wie in
|
|
<pre>
|
|
board(B) {
|
|
printf("%f\n", B.grid.size);
|
|
}
|
|
</pre>
|
|
wo Data member <i>grid</i> des Boards ein Grid-Objekt zurückliefert,
|
|
dessen Data member <i>size</i> dann Grid-Size (Rastergröße) zurückgibt.
|
|
<p>
|
|
<b>Loop members</b> werden verwendet, um auf Mehrfach-Objekte
|
|
derselben Art zuzugreifen, die in einem Objekt einer höheren Hierarchiestufe
|
|
enthalten sind:
|
|
<pre>
|
|
board(B) {
|
|
B.elements(E) {
|
|
printf("%-8s %-8s\n", E.name, E.value);
|
|
}
|
|
}
|
|
</pre>
|
|
Dieses Beispiel verwendet Loop member <i>elements()</i> des Boards,
|
|
um eine Schleife durch alle Board-Elemente zu realisieren. Der Block nach
|
|
dem <tt>B.elements(E)</tt>-Statement wird der Reihe nach für jedes Element
|
|
ausgeführt, und das gegenwärtige Element kann innerhalb des Blocks unter
|
|
dem Namen <tt>E</tt> angesprochen werden.
|
|
<p>
|
|
Loop members behandeln Objekte in alpha-numerisch sortierter Reihenfolge,
|
|
falls die Objekte einen Namen haben.
|
|
<p>
|
|
Eine Loop-member-Funktion erzeugt eine Variable vom erforderlichen Typ,
|
|
um die Objekte zu speichern. Sie dürfen jeden gültigen Namen für eine
|
|
derartige Variable verwenden, so dass das obige Beispiel auch so lauten könnte:
|
|
<pre>
|
|
board(MyBoard) {
|
|
MyBoard.elements(TheCurrentElement) {
|
|
printf("%-8s %-8s\n", TheCurrentElement.name, TheCurrentElement.value);
|
|
}
|
|
}
|
|
</pre>
|
|
Das Ergebnis wäre identisch mit dem vorhergehenden Beispiel. Der Gültigkeitsbereich
|
|
einer Variablen, die von einer Loop-member-Funktion angelegt wird, ist
|
|
auf das Statement oder den Block unmittelbar nach dem Loop-Funktionsaufruf
|
|
beschränkt.
|
|
<p>
|
|
Objekt-Hierarchie einer Bibliothek:
|
|
<pre>
|
|
<a href=#192>LIBRARY</a>
|
|
<a href=#186>GRID</a>
|
|
<a href=#191>LAYER</a>
|
|
<a href=#182>DEVICESET</a>
|
|
<a href=#181>DEVICE</a>
|
|
<a href=#185>GATE</a>
|
|
<a href=#194>PACKAGE</a>
|
|
<a href=#179>CONTACT</a>
|
|
<a href=#195>PAD</a>
|
|
<a href=#205>SMD</a>
|
|
<a href=#177>CIRCLE</a>
|
|
<a href=#187>HOLE</a>
|
|
<a href=#200>RECTANGLE</a>
|
|
<a href=#184>FRAME</a>
|
|
<a href=#207>TEXT</a>
|
|
<a href=#209>WIRE</a>
|
|
<a href=#199>POLYGON</a>
|
|
<a href=#209>WIRE</a>
|
|
<a href=#206>SYMBOL</a>
|
|
<a href=#197>PIN</a>
|
|
<a href=#177>CIRCLE</a>
|
|
<a href=#200>RECTANGLE</a>
|
|
<a href=#184>FRAME</a>
|
|
<a href=#207>TEXT</a>
|
|
<a href=#209>WIRE</a>
|
|
<a href=#199>POLYGON</a>
|
|
<a href=#209>WIRE</a>
|
|
</pre>
|
|
Objekt-Hierarchie eines Schaltplans:
|
|
<pre>
|
|
<a href=#201>SCHEMATIC</a>
|
|
<a href=#186>GRID</a>
|
|
<a href=#191>LAYER</a>
|
|
<a href=#192>LIBRARY</a>
|
|
<a href=#203>SHEET</a>
|
|
<a href=#177>CIRCLE</a>
|
|
<a href=#200>RECTANGLE</a>
|
|
<a href=#184>FRAME</a>
|
|
<a href=#207>TEXT</a>
|
|
<a href=#209>WIRE</a>
|
|
<a href=#199>POLYGON</a>
|
|
<a href=#209>WIRE</a>
|
|
<a href=#196>PART</a>
|
|
<a href=#188>INSTANCE</a>
|
|
<a href=#174>ATTRIBUTE</a>
|
|
<a href=#176>BUS</a>
|
|
<a href=#202>SEGMENT</a>
|
|
<a href=#190>LABEL</a>
|
|
<a href=#207>TEXT</a>
|
|
<a href=#209>WIRE</a>
|
|
<a href=#209>WIRE</a>
|
|
<a href=#193>NET</a>
|
|
<a href=#202>SEGMENT</a>
|
|
<a href=#189>JUNCTION</a>
|
|
<a href=#198>PINREF</a>
|
|
<a href=#207>TEXT</a>
|
|
<a href=#209>WIRE</a>
|
|
</pre>
|
|
Objekt-Hierarchie einer Platine:
|
|
<pre>
|
|
<a href=#175>BOARD</a>
|
|
<a href=#186>GRID</a>
|
|
<a href=#191>LAYER</a>
|
|
<a href=#192>LIBRARY</a>
|
|
<a href=#177>CIRCLE</a>
|
|
<a href=#187>HOLE</a>
|
|
<a href=#200>RECTANGLE</a>
|
|
<a href=#184>FRAME</a>
|
|
<a href=#207>TEXT</a>
|
|
<a href=#209>WIRE</a>
|
|
<a href=#199>POLYGON</a>
|
|
<a href=#209>WIRE</a>
|
|
<a href=#183>ELEMENT</a>
|
|
<a href=#174>ATTRIBUTE</a>
|
|
<a href=#204>SIGNAL</a>
|
|
<a href=#180>CONTACTREF</a>
|
|
<a href=#199>POLYGON</a>
|
|
<a href=#209>WIRE</a>
|
|
<a href=#208>VIA</a>
|
|
<a href=#209>WIRE</a>
|
|
</pre>
|
|
|
|
|
|
<a name=172>
|
|
<h1>UL_ARC</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Data members</b>
|
|
<dd>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>angle1</tt> </td><td width=20><td><a href=#167>real</a> (Startwinkel, <tt>0.0</tt>...<tt>359.9</tt>)</td></tr>
|
|
<tr><td><tt>angle2</tt> </td><td width=20><td><a href=#167>real</a> (Endwinkel, <tt>0.0</tt>...<tt>719.9</tt>)</td></tr>
|
|
<tr><td><tt>cap</tt> </td><td width=20><td><a href=#166>int</a> (<tt>CAP_...</tt>)</td></tr>
|
|
<tr><td><tt>layer</tt> </td><td width=20><td><a href=#166>int</a></td></tr>
|
|
<tr><td><tt>radius</tt> </td><td width=20><td><a href=#166>int</a></td></tr>
|
|
<tr><td><tt>width</tt> </td><td width=20><td><a href=#166>int</a></td></tr>
|
|
<tr><td><tt>x1, y1</tt> </td><td width=20><td><a href=#166>int</a> (Startpunkt)</td></tr>
|
|
<tr><td><tt>x2, y2</tt> </td><td width=20><td><a href=#166>int</a> (Endpunkt)</td></tr>
|
|
<tr><td><tt>xc, yc</tt> </td><td width=20><td><a href=#166>int</a> (Mittelpunkt)</td></tr>
|
|
</table>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#209>UL_WIRE</a>
|
|
<h2>Konstanten</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>CAP_FLAT</tt> </td><td width=20><td>flache Kreisbogen-Enden</td></tr>
|
|
<tr><td><tt>CAP_ROUND</tt> </td><td width=20><td>runde Kreisbogen-Enden</td></tr>
|
|
</table>
|
|
<h2>Anmerkung</h2>
|
|
Start- und Endwinkel werden im mathematisch positiven Sinne ausgegeben
|
|
(also gegen den Uhrzeigersinn, "counterclockwise"),
|
|
wobei gilt <tt>angle1</tt> < <tt>angle2</tt>.
|
|
Um diese Bedingung einzuhalten kann es sein, dass Start- und Endpunkt eines UL_ARC
|
|
gegenüber denen des UL_WIRE, von dem der Kreisbogen abstammt, vertauscht sind.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
board(B) {
|
|
B.wires(W) {
|
|
if (W.arc)
|
|
printf("Arc: (%d %d), (%d %d), (%d %d)\n",
|
|
W.arc.x1, W.arc.y1, W.arc.x2, W.arc.y2, W.arc.xc, W.arc.yc);
|
|
}
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=173>
|
|
<h1>UL_AREA</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Data members</b>
|
|
<dd>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>x1, y1</tt> </td><td width=20><td><a href=#166>int</a> (linke untere Ecke)</td></tr>
|
|
<tr><td><tt>x2, y2</tt> </td><td width=20><td><a href=#166>int</a> (rechte obere Ecke)</td></tr>
|
|
</table>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#175>UL_BOARD</a>,
|
|
<a href=#181>UL_DEVICE</a>,
|
|
<a href=#194>UL_PACKAGE</a>,
|
|
<a href=#203>UL_SHEET</a>,
|
|
<a href=#206>UL_SYMBOL</a>
|
|
<p>
|
|
UL_AREA ist ein Pseudo-Objekt, das Informationen über die Fläche liefert,
|
|
die ein Objekt einnimmt. Für UL_DEVICE, UL_PACKAGE und UL_SYMBOL ist die
|
|
Fläche definiert als umschließendes Rechteck der Objekt-Definition
|
|
in der Bibliothek.
|
|
Deshalb geht der Offset in einem Board nicht in die Fläche ein, obwohl
|
|
UL_PACKAGE von UL_ELEMENT abgeleitet wird.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
board(B) {
|
|
printf("Area: (%d %d), (%d %d)\n",
|
|
B.area.x1, B.area.y1, B.area.x2, B.area.y2);
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=174>
|
|
<h1>UL_ATTRIBUTE</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Data members</b>
|
|
<dd>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>constant</tt> </td><td width=20><td><a href=#166>int</a> (0=variabel, d.h. überschreiben erlaubt, 1=konstant - siehe Anmerkung)</td></tr>
|
|
<tr><td><tt>defaultvalue</tt> </td><td width=20><td><a href=#168>string</a> (siehe Anmerkung)</td></tr>
|
|
<tr><td><tt>display</tt> </td><td width=20><td><a href=#166>int</a> (<tt>ATTRIBUTE_DISPLAY_FLAG_...</tt>)</td></tr>
|
|
<tr><td><tt>name</tt> </td><td width=20><td><a href=#168>string</a></td></tr>
|
|
<tr><td><tt>text</tt> </td><td width=20><td><a href=#207>UL_TEXT</a> (siehe Anmerkung)</td></tr>
|
|
<tr><td><tt>value</tt> </td><td width=20><td><a href=#168>string</a></td></tr>
|
|
</table>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#181>UL_DEVICE</a>,
|
|
<a href=#196>UL_PART</a>,
|
|
<a href=#188>UL_INSTANCE</a>,
|
|
<a href=#183>UL_ELEMENT</a>
|
|
<h2>Konstanten</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>ATTRIBUTE_DISPLAY_FLAG_OFF</tt> </td><td width=20><td>keine Anzeige</td></tr>
|
|
<tr><td><tt>ATTRIBUTE_DISPLAY_FLAG_VALUE</tt> </td><td width=20><td>Wert wird angezeigt</td></tr>
|
|
<tr><td><tt>ATTRIBUTE_DISPLAY_FLAG_NAME</tt> </td><td width=20><td>Name wird angezeigt</td></tr>
|
|
</table>
|
|
<p>
|
|
Ein UL_ATTRIBUTE kann dazu benutzt werden, die <i>Attribute</i> anzusprechen,
|
|
die für ein Device in der Bibliothek definiert wurden, bzw. einem Bauteil
|
|
im Schaltplan oder Board zugewiesen wurden.
|
|
<h2>Anmerkung</h2>
|
|
<tt>display</tt> enthält einen bitweise ODER-verknüpften Wert, bestehend aus <tt>ATTRIBUTE_DISPLAY_FLAG_...</tt>,
|
|
der angibt welche Teile des Attributs dargestellt werden.
|
|
Dieser Wert ist nur dann gültig, wenn <tt>display</tt> in einem UL_INSTANCE- oder UL_ELEMENT-Kontext
|
|
benutzt wird.
|
|
<p>
|
|
In einem UL_ELEMENT-Kontext liefert <tt>constant</tt> nur bei aktiver F/B-Annotation
|
|
einen tatsächlichen Wert, ansonsten wird 0 geliefert.
|
|
<p>
|
|
Das <tt>defaultvalue</tt>-Member liefert den Wert, wie er in der Bibliothek definiert
|
|
wurde (falls sich dieser vom tatsächlichen Wert unterscheidet, ansonsten ist es
|
|
der selbe Wert wie bei <tt>value</tt>).
|
|
In einem UL_ELEMENT-Kontext liefert <tt>defaultvalue</tt> nur bei aktiver F/B-Annotation
|
|
einen tatsächlichen Wert, ansonsten wird ein leerer String geliefert.
|
|
<p>
|
|
Das <tt>text</tt>-Member ist nur in einem UL_INSTANCE- oder UL_ELEMENT-Kontext
|
|
verfügbar und liefert ein UL_TEXT-Objekt welches alle Text-Parameter enthält.
|
|
Der Wert dieses Text-Objekts ist der Text wie er gemäß dem 'display'-Parameter
|
|
des UL_ATTRIBUTE angezeigt wird. Wird diese Funktion aus einem anderen Kontext
|
|
heraus aufgerufen, so sind die Werte des zurückgegebenen UL_TEXT-Objekts
|
|
undefiniert.
|
|
<p>
|
|
Bei globalen Attributen sind nur <tt>name</tt> und <tt>value</tt> definiert.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
schematic(SCH) {
|
|
SCH.parts(P) {
|
|
P.attributes(A) {
|
|
printf("%s = %s\n", A.name, A.value);
|
|
}
|
|
}
|
|
}
|
|
schematic(SCH) {
|
|
SCH.attributes(A) { // global attributes
|
|
printf("%s = %s\n", A.name, A.value);
|
|
}
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=175>
|
|
<h1>UL_BOARD</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Data members</b>
|
|
<dd>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>area</tt> </td><td width=20><td><a href=#173>UL_AREA</a></td></tr>
|
|
<tr><td><tt>grid</tt> </td><td width=20><td><a href=#186>UL_GRID</a></td></tr>
|
|
<tr><td><tt>name</tt> </td><td width=20><td><a href=#168>string</a> (siehe Anmerkung)</td></tr>
|
|
</table>
|
|
<dt>
|
|
<b>Loop members</b>
|
|
<dd>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>attributes()</tt> </td><td width=20><td><a href=#174>UL_ATTRIBUTE</a> (siehe Anmerkung)</td></tr>
|
|
<tr><td><tt>circles()</tt> </td><td width=20><td><a href=#177>UL_CIRCLE</a></td></tr>
|
|
<tr><td><tt>classes()</tt> </td><td width=20><td><a href=#178>UL_CLASS</a></td></tr>
|
|
<tr><td><tt>elements()</tt> </td><td width=20><td><a href=#183>UL_ELEMENT</a></td></tr>
|
|
<tr><td><tt>frames()</tt> </td><td width=20><td><a href=#184>UL_FRAME</a></td></tr>
|
|
<tr><td><tt>holes()</tt> </td><td width=20><td><a href=#187>UL_HOLE</a></td></tr>
|
|
<tr><td><tt>layers()</tt> </td><td width=20><td><a href=#191>UL_LAYER</a></td></tr>
|
|
<tr><td><tt>libraries()</tt> </td><td width=20><td><a href=#192>UL_LIBRARY</a></td></tr>
|
|
<tr><td><tt>polygons()</tt> </td><td width=20><td><a href=#199>UL_POLYGON</a></td></tr>
|
|
<tr><td><tt>rectangles()</tt> </td><td width=20><td><a href=#200>UL_RECTANGLE</a></td></tr>
|
|
<tr><td><tt>signals()</tt> </td><td width=20><td><a href=#204>UL_SIGNAL</a></td></tr>
|
|
<tr><td><tt>texts()</tt> </td><td width=20><td><a href=#207>UL_TEXT</a></td></tr>
|
|
<tr><td><tt>wires()</tt> </td><td width=20><td><a href=#209>UL_WIRE</a></td></tr>
|
|
</table>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#192>UL_LIBRARY</a>,
|
|
<a href=#201>UL_SCHEMATIC</a>
|
|
<h2>Anmerkung</h2>
|
|
Das <tt>name</tt> Member liefert den vollständigen Dateinamen, inklusive Verzeichnis.
|
|
<p>
|
|
Das Loop member <tt>attributes()</tt> geht durch die <i>globalen</i> Attribute.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
board(B) {
|
|
B.elements(E) printf("Element: %s\n", E.name);
|
|
B.signals(S) printf("Signal: %s\n", S.name);
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=176>
|
|
<h1>UL_BUS</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Data members</b>
|
|
<dd>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>name</tt> </td><td width=20><td><a href=#168>string</a> (<tt>BUS_NAME_LENGTH</tt>)</td></tr>
|
|
</table>
|
|
<dt>
|
|
<b>Loop members</b>
|
|
<dd>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>segments()</tt> </td><td width=20><td><a href=#202>UL_SEGMENT</a></td></tr>
|
|
</table>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#203>UL_SHEET</a>
|
|
<h2>Konstanten</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>BUS_NAME_LENGTH</tt> </td><td width=20><td>max. Länge eines Busnamens (obsolet - ab Version 4 können Bus-Namen beliebig lang sein)</td></tr>
|
|
</table>
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
schematic(SCH) {
|
|
SCH.sheets(SH) {
|
|
SH.busses(B) printf("Bus: %s\n", B.name);
|
|
}
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=177>
|
|
<h1>UL_CIRCLE</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Data members</b>
|
|
<dd>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>layer</tt> </td><td width=20><td><a href=#166>int</a></td></tr>
|
|
<tr><td><tt>radius</tt> </td><td width=20><td><a href=#166>int</a></td></tr>
|
|
<tr><td><tt>width</tt> </td><td width=20><td><a href=#166>int</a></td></tr>
|
|
<tr><td><tt>x, y</tt> </td><td width=20><td><a href=#166>int</a> (Mittelpunkt)</td></tr>
|
|
</table>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#175>UL_BOARD</a>,
|
|
<a href=#194>UL_PACKAGE</a>,
|
|
<a href=#203>UL_SHEET</a>,
|
|
<a href=#206>UL_SYMBOL</a>
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
board(B) {
|
|
B.circles(C) {
|
|
printf("Circle: (%d %d), r=%d, w=%d\n",
|
|
C.x, C.y, C.radius, C.width);
|
|
}
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=178>
|
|
<h1>UL_CLASS</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Data members</b>
|
|
<dd>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>clearance[number]</tt></td><td width=20><td><a href=#166>int</a> (siehe Anmerkung)</td></tr>
|
|
<tr><td><tt>drill</tt> </td><td width=20><td><a href=#166>int</a></td></tr>
|
|
<tr><td><tt>name</tt> </td><td width=20><td><a href=#168>string</a> (siehe Anmerkung)</td></tr>
|
|
<tr><td><tt>number</tt> </td><td width=20><td><a href=#166>int</a></td></tr>
|
|
<tr><td><tt>width</tt> </td><td width=20><td><a href=#166>int</a></td></tr>
|
|
</table>
|
|
</dl>
|
|
<b>Siehe auch </b> <a href=#133>Design Rules</a>,
|
|
<a href=#193>UL_NET</a>,
|
|
<a href=#204>UL_SIGNAL</a>,
|
|
<a href=#201>UL_SCHEMATIC</a>,
|
|
<a href=#175>UL_BOARD</a>
|
|
<h2>Anmerkung</h2>
|
|
Das <tt>clearance</tt> Data Member liefert den Mindestabstand zwischen dieser
|
|
Netzklasse und der Netzklasse mit der angegebenen Nummer. Wird keine Nummer
|
|
angegeben (und damit auch keine eckigen Klammern), wird der Mindestabstand der
|
|
Netzklasse selber geliefert. Wird eine Nummer angegeben, so muss diese zwischen
|
|
0 und der Nummer dieser Netzklasse liegen.
|
|
<p>
|
|
Wenn <tt>name</tt> einen leeren String liefert, ist die Netzklasse nicht definiert und wird somit
|
|
auch nicht von einem Signal oder Netz benutzt.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
board(B) {
|
|
B.signals(S) {
|
|
printf("%-10s %d %s\n", S.name, S.class.number, S.class.name);
|
|
}
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=179>
|
|
<h1>UL_CONTACT</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Data members</b>
|
|
<dd>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>name</tt> </td><td width=20><td><a href=#168>string</a> (<tt>CONTACT_NAME_LENGTH</tt>)</td></tr>
|
|
<tr><td><tt>pad</tt> </td><td width=20><td><a href=#195>UL_PAD</a></td></tr>
|
|
<tr><td><tt>signal</tt> </td><td width=20><td><a href=#168>string</a></td></tr>
|
|
<tr><td><tt>smd</tt> </td><td width=20><td><a href=#205>UL_SMD</a></td></tr>
|
|
<tr><td><tt>x, y</tt> </td><td width=20><td><a href=#166>int</a> (Mittelpunkt, siehe Anmerkung)</td></tr>
|
|
</table>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#194>UL_PACKAGE</a>,
|
|
<a href=#195>UL_PAD</a>,
|
|
<a href=#205>UL_SMD</a>,
|
|
<a href=#180>UL_CONTACTREF</a>,
|
|
<a href=#198>UL_PINREF</a>
|
|
<h2>Konstanten</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>CONTACT_NAME_LENGTH</tt> </td><td width=20><td>max. empfohlene Länge eines "Contact"-Namens (wird nur für formatierte Ausgaben benutzt)</td></tr>
|
|
</table>
|
|
<h2>Anmerkung</h2>
|
|
Das <tt>signal</tt> Data Member liefert den Namen des Signals, an das dieser Contact
|
|
angeschlossen ist (nur in einem Board-Kontext verfügbar).
|
|
<p>
|
|
Die Koordinaten (<tt>x, y</tt>) des "Contacts" hängen vom Kontext ab aus dem sie aufgerufen werden:
|
|
<ul>
|
|
<li>Wird "Contact" aus einem UL_LIBRARY-Kontext aufgerufen, sind die Koordinaten dieselben, wie
|
|
in der Package-Zeichnung
|
|
<li>In allen anderen Fällen gelten die aktuellen Werte in der Board-Datei
|
|
</ul>
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
library(L) {
|
|
L.packages(PAC) {
|
|
PAC.contacts(C) {
|
|
printf("Contact: '%s', (%d %d)\n",
|
|
C.name, C.x, C.y);
|
|
}
|
|
}
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=180>
|
|
<h1>UL_CONTACTREF</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Data members</b>
|
|
<dd>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>contact</tt> </td><td width=20><td><a href=#179>UL_CONTACT</a></td></tr>
|
|
<tr><td><tt>element</tt> </td><td width=20><td><a href=#183>UL_ELEMENT</a></td></tr>
|
|
</table>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#204>UL_SIGNAL</a>,
|
|
<a href=#198>UL_PINREF</a>
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
board(B) {
|
|
B.signals(S) {
|
|
printf("Signal '%s'\n", S.name);
|
|
S.contactrefs(C) {
|
|
printf("\t%s, %s\n", C.element.name, C.contact.name);
|
|
}
|
|
}
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=181>
|
|
<h1>UL_DEVICE</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Data members</b>
|
|
<dd>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>area</tt> </td><td width=20><td><a href=#173>UL_AREA</a></td></tr>
|
|
<tr><td><tt>description</tt> </td><td width=20><td><a href=#168>string</a></td></tr>
|
|
<tr><td><tt>headline</tt> </td><td width=20><td><a href=#168>string</a></td></tr>
|
|
<tr><td><tt>library</tt> </td><td width=20><td><a href=#168>string</a></td></tr>
|
|
<tr><td><tt>name</tt> </td><td width=20><td><a href=#168>string</a> (<tt>DEVICE_NAME_LENGTH</tt>)</td></tr>
|
|
<tr><td><tt>package</tt> </td><td width=20><td><a href=#194>UL_PACKAGE</a> (siehe Anmerkung)</td></tr>
|
|
<tr><td><tt>prefix</tt> </td><td width=20><td><a href=#168>string</a> (<tt>DEVICE_PREFIX_LENGTH</tt>)</td></tr>
|
|
<tr><td><tt>technologies</tt> </td><td width=20><td><a href=#168>string</a> (siehe Anmerkung)</td></tr>
|
|
<tr><td><tt>value</tt> </td><td width=20><td><a href=#168>string</a> ("On" oder "Off")</td></tr>
|
|
</table>
|
|
<dt>
|
|
<b>Loop members</b>
|
|
<dd>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>attributes()</tt> </td><td width=20><td><a href=#174>UL_ATTRIBUTE</a> (siehe Anmerkung)</td></tr>
|
|
<tr><td><tt>gates()</tt> </td><td width=20><td><a href=#185>UL_GATE</a></td></tr>
|
|
</table>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#182>UL_DEVICESET</a>,
|
|
<a href=#192>UL_LIBRARY</a>,
|
|
<a href=#196>UL_PART</a>
|
|
<h2>Konstanten</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>DEVICE_NAME_LENGTH</tt> </td><td width=20><td>max. empfohlene Länge eines Device-Namens (wird nur für formatierte Ausgaben benutzt)</td></tr>
|
|
<tr><td><tt>DEVICE_PREFIX_LENGTH</tt> </td><td width=20><td>max. empfohlene Länge eines Device-Präfix (wird nur für formatierte Ausgaben benutzt)</td></tr>
|
|
</table>
|
|
<p>
|
|
Alle UL_DEVICE-Member, mit Ausnahme von <tt>name</tt> und <tt>technologies</tt>, liefern
|
|
dieselben Werte wie die zugehörigen UL_DEVICESET-Member in dem UL_DEVICE definiert wurde.
|
|
Das <tt>name</tt>-Member liefert den Namen der Package-Variante, für welche dieses
|
|
Device mit dem <a href=#72>PACKAGE</a>-Befehl erzeugt worden ist.
|
|
Bitte denken Sie daran: Der <tt>description</tt>-Text darf Newline-Zeichen (<tt>'\n'</tt>) enthalten.
|
|
<h2>Anmerkung</h2>
|
|
Das <tt>package</tt> Data Member liefert das <a href=#194>Package</a>,
|
|
das dem Device durch einen <a href=#72>PACKAGE</a>-Befehl zugewiesen
|
|
worden ist. Es kann als boolsche Funktion verwendet werden um zu prüfen, ob dem Device
|
|
ein Package zugewiesen wurde (siehe Beispiel unten).
|
|
<p>
|
|
Der Wert des <tt>technologies</tt>-Member hängt vom Kontext ab aus dem es aufgerufen wurde:
|
|
<ul>
|
|
<li>Wird das Device über UL_DEVICESET hergeleitet, liefert <tt>technologies</tt> einen String,
|
|
der alles über die Technologien des Devices, durch Leerzeichen getrennt, enthält
|
|
<li>Wird das Device über UL_PART hergeleitet, wird nur die aktuelle Technologie, die von diesem
|
|
Bauteil benutzt wird, ausgegeben.
|
|
</ul>
|
|
<p>
|
|
Das Loop member <tt>attributes()</tt> erwartet einen zusätzlichen Parameter der
|
|
angibt, für welche Technology die Attribute geliefert werden sollen (siehe das
|
|
zweite Beispiel).
|
|
<h2>Beispiele</h2>
|
|
<pre>
|
|
library(L) {
|
|
L.devicesets(S) {
|
|
S.devices(D) {
|
|
if (D.package)
|
|
printf("Device: %s, Package: %s\n", D.name, D.package.name);
|
|
D.gates(G) {
|
|
printf("\t%s\n", G.name);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</pre>
|
|
<pre>
|
|
library(L) {
|
|
L.devicesets(DS) {
|
|
DS.devices(D) {
|
|
string t[];
|
|
int n = strsplit(t, D.technologies, ' ');
|
|
for (int i = 0; i < n; i++) {
|
|
D.attributes(A, t[i]) {
|
|
printf("%s = %s\n", A.name, A.value);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=182>
|
|
<h1>UL_DEVICESET</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Data members</b>
|
|
<dd>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>area</tt> </td><td width=20><td><a href=#173>UL_AREA</a></td></tr>
|
|
<tr><td><tt>description</tt> </td><td width=20><td><a href=#168>string</a></td></tr>
|
|
<tr><td><tt>headline</tt> </td><td width=20><td><a href=#168>string</a> (siehe Anmerkung)</td></tr>
|
|
<tr><td><tt>library</tt> </td><td width=20><td><a href=#168>string</a></td></tr>
|
|
<tr><td><tt>name</tt> </td><td width=20><td><a href=#168>string</a> (<tt>DEVICE_NAME_LENGTH</tt>)</td></tr>
|
|
<tr><td><tt>prefix</tt> </td><td width=20><td><a href=#168>string</a> (<tt>DEVICE_PREFIX_LENGTH</tt>)</td></tr>
|
|
<tr><td><tt>value</tt> </td><td width=20><td><a href=#168>string</a> ("On" oder "Off")</td></tr>
|
|
</table>
|
|
<dt>
|
|
<b>Loop members</b>
|
|
<dd>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>devices()</tt> </td><td width=20><td><a href=#181>UL_DEVICE</a></td></tr>
|
|
<tr><td><tt>gates()</tt> </td><td width=20><td><a href=#185>UL_GATE</a></td></tr>
|
|
</table>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#181>UL_DEVICE</a>,
|
|
<a href=#192>UL_LIBRARY</a>,
|
|
<a href=#196>UL_PART</a>
|
|
<h2>Konstanten</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>DEVICE_NAME_LENGTH</tt> </td><td width=20><td>max. empfohlene Länge des Device-Namen (wird nur bei formatierten Ausgaben benutzt)</td></tr>
|
|
<tr><td><tt>DEVICE_PREFIX_LENGTH</tt> </td><td width=20><td>max. empfohlene Länge des Prefix (wird nur bei formatierten Ausgaben benutzt)</td></tr>
|
|
</table>
|
|
<h2>Anmerkung</h2>
|
|
Das <tt>description</tt>-Member liefert den vollständigen Beschreibungstext, der mit dem
|
|
<a href=#44>DESCRIPTION</a>-Befehl erzeugt wurde, während das <tt>headline</tt>-Member
|
|
nur die erste Zeile der Beschreibung ohne <a href=#339>HTML</a>-Tags ausgibt.
|
|
Wenn Sie <tt>description</tt>-Text schreiben, denken Sie daran, dass dieser Newline-Anweisungen
|
|
(<tt>'\n'</tt>) enthalten darf.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
library(L) {
|
|
L.devicesets(D) {
|
|
printf("Device set: %s, Description: %s\n", D.name, D.description);
|
|
D.gates(G) {
|
|
printf("\t%s\n", G.name);
|
|
}
|
|
}
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=183>
|
|
<h1>UL_ELEMENT</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Data members</b>
|
|
<dd>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>angle</tt> </td><td width=20><td><a href=#167>real</a> (<tt>0.0</tt>...<tt>359.9</tt>)</td></tr>
|
|
<tr><td><tt>attribute[]</tt> </td><td width=20><td><a href=#168>string</a> (siehe Anmerkung)</td></tr>
|
|
<tr><td><tt>column</tt> </td><td width=20><td><a href=#168>string</a> (siehe Anmerkung)</td></tr>
|
|
<tr><td><tt>locked</tt> </td><td width=20><td><a href=#166>int</a></td></tr>
|
|
<tr><td><tt>mirror</tt> </td><td width=20><td><a href=#166>int</a></td></tr>
|
|
<tr><td><tt>name</tt> </td><td width=20><td><a href=#168>string</a> (<tt>ELEMENT_NAME_LENGTH</tt>)</td></tr>
|
|
<tr><td><tt>package</tt> </td><td width=20><td><a href=#194>UL_PACKAGE</a></td></tr>
|
|
<tr><td><tt>row</tt> </td><td width=20><td><a href=#168>string</a> (siehe Anmerkung)</td></tr>
|
|
<tr><td><tt>smashed</tt> </td><td width=20><td><a href=#166>int</a> (siehe Anmerkung)</td></tr>
|
|
<tr><td><tt>spin</tt> </td><td width=20><td><a href=#166>int</a></td></tr>
|
|
<tr><td><tt>value</tt> </td><td width=20><td><a href=#168>string</a> (<tt>ELEMENT_VALUE_LENGTH</tt>)</td></tr>
|
|
<tr><td><tt>x, y</tt> </td><td width=20><td><a href=#166>int</a> (Ursprung, Aufhängepunkt)</td></tr>
|
|
</table>
|
|
<dt>
|
|
<b>Loop members</b>
|
|
<dd>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>attributes()</tt> </td><td width=20><td><a href=#174>UL_ATTRIBUTE</a></td></tr>
|
|
<tr><td><tt>texts()</tt> </td><td width=20><td><a href=#207>UL_TEXT</a> (siehe Anmerkung)</td></tr>
|
|
</table>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#175>UL_BOARD</a>,
|
|
<a href=#180>UL_CONTACTREF</a>
|
|
<h2>Konstanten</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>ELEMENT_NAME_LENGTH</tt> </td><td width=20><td>max. empfohlene Länge eines Element-Namens (wird nur für formatierte Ausgaben benutzt)</td></tr>
|
|
<tr><td><tt>ELEMENT_VALUE_LENGTH</tt> </td><td width=20><td>max. empfohlene Länge eines Element-Values (wird nur für formatierte Ausgaben benutzt)</td></tr>
|
|
</table>
|
|
<h2>Anmerkung</h2>
|
|
Mit dem <tt>attribute[]</tt>-Member kann man ein UL_ELEMENT nach dem Wert eines
|
|
bestimmten Attributs fragen (siehe das zweite Beispiel). Der zurückgelieferte
|
|
String ist leer, wenn es kein Attribut mit dem angegebenen Namen gibt, oder
|
|
wenn dieses Attribut explizit leer ist.
|
|
<p>
|
|
Das <tt>texts()</tt>-Member läuft nur durch die mittels <a href=#95><b>SMASH</b></a> vom
|
|
Element losgelösten Texte und durch die sichtbaren Texte der Attribute, die diesem Element zugewiesen wurden.
|
|
Um alle Texte eines Elements zu bearbeiten (zum Beispiel um es zu zeichnen), müssen Sie eine Schleife
|
|
durch das <tt>texts()</tt>-Member des Elements selbst und
|
|
durch das <tt>texts()</tt>-Member des zum Element gehörenden
|
|
<a href=#194>Package</a>
|
|
bilden.
|
|
<p>
|
|
<tt>angle</tt> gibt an um wieviel Grad das Element gegen den Uhrzeigersinn um seinen
|
|
Aufhängepunkt gedreht ist.
|
|
<p>
|
|
Die <tt>column()</tt>- und <tt>row()</tt>-Members liefern die Spalten- bzw. Zeilenposition
|
|
innerhalb des <a href=#184>Rahmens</a> in der Board-Zeichnung.
|
|
Falls es in der Zaichnung keinen Rahmen gibt, oder das Element außerhalb des Rahmens liegt,
|
|
wird ein <tt>'?'</tt> (Fragezeichen) zurückgegeben.
|
|
<p>
|
|
Das <tt>smashed</tt>-Member gibt Auskunft darüber, ob ein Element gesmasht ist.
|
|
Diese Funktion kann auch verwendet werden um herauszufinden, ob es einen losgelösten
|
|
Platzhaltertext gibt, indem der Name des Platzhalters in eckigen Klammern angegeben
|
|
wird, wie in <tt>smashed["VALUE"]</tt>. Dies ist nützlich falls Sie einen solchen Text
|
|
mit dem <a href=#67>MOVE</a>-Befehl etwa durch <tt>MOVE R5>VALUE</tt>
|
|
selektieren wollen. Gültige Platzhalternamen sind "NAME" und "VALUE", sowie die
|
|
Namen etwaiger benutzerdefinierter <a href=#174>Attribute</a>.
|
|
Groß-/Kleinschreibung spielt keine Rolle, und sie dürfen ein vorangestelltes
|
|
<tt>'>'</tt> Zeichen haben.
|
|
<h2>Beispiele</h2>
|
|
<pre>
|
|
board(B) {
|
|
B.elements(E) {
|
|
printf("Element: %s, (%d %d), Package=%s\n",
|
|
E.name, E.x, E.y, E.package.name);
|
|
}
|
|
}
|
|
</pre>
|
|
<pre>
|
|
board(B) {
|
|
B.elements(E) {
|
|
if (E.attribute["REMARK"])
|
|
printf("%s: %s\n", E.name, E.attribute("REMARK"));
|
|
}
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=184>
|
|
<h1>UL_FRAME</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Data members</b>
|
|
<dd>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>columns</tt> </td><td width=20><td><a href=#166>int</a> (<tt>-127</tt>...<tt>127</tt>)</td></tr>
|
|
<tr><td><tt>rows</tt> </td><td width=20><td><a href=#166>int</a> (<tt>-26</tt>...<tt>26</tt>)</td></tr>
|
|
<tr><td><tt>border</tt> </td><td width=20><td><a href=#166>int</a> (<tt>FRAME_BORDER_...</tt>)</td></tr>
|
|
<tr><td><tt>layer</tt> </td><td width=20><td><a href=#166>int</a></td></tr>
|
|
<tr><td><tt>x1, y1</tt> </td><td width=20><td><a href=#166>int</a> (lower left corner)</td></tr>
|
|
<tr><td><tt>x2, y2</tt> </td><td width=20><td><a href=#166>int</a> (upper right corner)</td></tr>
|
|
</table>
|
|
<dt>
|
|
<b>Loop members</b>
|
|
<dd>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>texts()</tt> </td><td width=20><td><a href=#207>UL_TEXT</a></td></tr>
|
|
<tr><td><tt>wires()</tt> </td><td width=20><td><a href=#209>UL_WIRE</a></td></tr>
|
|
</table>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#175>UL_BOARD</a>,
|
|
<a href=#194>UL_PACKAGE</a>,
|
|
<a href=#203>UL_SHEET</a>,
|
|
<a href=#206>UL_SYMBOL</a>
|
|
<h2>Konstanten</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>FRAME_BORDER_BOTTOM</tt> </td><td width=20><td>unterer Rand wird dargestellt</td></tr>
|
|
<tr><td><tt>FRAME_BORDER_RIGHT</tt> </td><td width=20><td>rechter Rand wird dargestellt</td></tr>
|
|
<tr><td><tt>FRAME_BORDER_TOP</tt> </td><td width=20><td>oberer Rand wird dargestellt</td></tr>
|
|
<tr><td><tt>FRAME_BORDER_LEFT</tt> </td><td width=20><td>linker Rand wird dargestellt</td></tr>
|
|
</table>
|
|
<h2>Anmerkung</h2>
|
|
<tt>border</tt> enthält einen bitweise ODER-verknüpften Wert, bestehend aus <tt>FRAME_BORDER_...</tt>,
|
|
der angibt welche der vier Ränder dargestellt werden.
|
|
<p>
|
|
Die Loop-Members <tt>texts()</tt> und <tt>wires()</tt> gehen durch alle Texte und
|
|
Linien, aus denen der Frame besteht.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
board(B) {
|
|
B.frames(F) {
|
|
printf("Frame: (%d %d), (%d %d)\n",
|
|
F.x1, F.y1, F.x2, F.y2);
|
|
}
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=185>
|
|
<h1>UL_GATE</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Data members</b>
|
|
<dd>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>addlevel</tt> </td><td width=20><td><a href=#166>int</a> (<tt>GATE_ADDLEVEL_...</tt>)</td></tr>
|
|
<tr><td><tt>name</tt> </td><td width=20><td><a href=#168>string</a> (<tt>GATE_NAME_LENGTH</tt>)</td></tr>
|
|
<tr><td><tt>swaplevel</tt> </td><td width=20><td><a href=#166>int</a></td></tr>
|
|
<tr><td><tt>symbol</tt> </td><td width=20><td><a href=#206>UL_SYMBOL</a></td></tr>
|
|
<tr><td><tt>x, y</tt> </td><td width=20><td><a href=#166>int</a> (Aufhängepunkt, siehe Anmerkung)</td></tr>
|
|
</table>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#181>UL_DEVICE</a>
|
|
<h2>Konstanten</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>GATE_ADDLEVEL_MUST</tt> </td><td width=20><td>must</td></tr>
|
|
<tr><td><tt>GATE_ADDLEVEL_CAN</tt> </td><td width=20><td>can</td></tr>
|
|
<tr><td><tt>GATE_ADDLEVEL_NEXT</tt> </td><td width=20><td>next</td></tr>
|
|
<tr><td><tt>GATE_ADDLEVEL_REQUEST</tt> </td><td width=20><td>request</td></tr>
|
|
<tr><td><tt>GATE_ADDLEVEL_ALWAYS</tt> </td><td width=20><td>always</td></tr>
|
|
</table>
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>GATE_NAME_LENGTH</tt> </td><td width=20><td>max. empfohlene Länge eines Gate-Namens (wird nur für formatierte Ausgaben benutzt)</td></tr>
|
|
</table>
|
|
<h2>Anmerkung</h2>
|
|
Die Koordinaten des Aufhängepunktes (x, y) sind immer bezogen auf die Lage des Gates
|
|
im Device, auch wenn das UL_GATE über ein <a href=#188>UL_INSTANCE</a> geholt wurde.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
library(L) {
|
|
L.devices(D) {
|
|
printf("Device: %s, Package: %s\n", D.name, D.package.name);
|
|
D.gates(G) {
|
|
printf("\t%s, swaplevel=%d, symbol=%s\n",
|
|
G.name, G.swaplevel, G.symbol.name);
|
|
}
|
|
}
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=186>
|
|
<h1>UL_GRID</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Data members</b>
|
|
<dd>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>distance</tt> </td><td width=20><td><a href=#167>real</a></td></tr>
|
|
<tr><td><tt>dots</tt> </td><td width=20><td><a href=#166>int</a> (0=lines, 1=dots)</td></tr>
|
|
<tr><td><tt>multiple</tt> </td><td width=20><td><a href=#166>int</a></td></tr>
|
|
<tr><td><tt>on</tt> </td><td width=20><td><a href=#166>int</a> (0=off, 1=on)</td></tr>
|
|
<tr><td><tt>unit</tt> </td><td width=20><td><a href=#166>int</a> (<tt>GRID_UNIT_...</tt>)</td></tr>
|
|
<tr><td><tt>unitdist</tt> </td><td width=20><td><a href=#166>int</a> (<tt>GRID_UNIT_...</tt>)</td></tr>
|
|
</table>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#175>UL_BOARD</a>,
|
|
<a href=#192>UL_LIBRARY</a>,
|
|
<a href=#201>UL_SCHEMATIC</a>,
|
|
<a href=#267>Unit Conversions</a>
|
|
<h2>Konstanten</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>GRID_UNIT_MIC</tt> </td><td width=20><td>Micron</td></tr>
|
|
<tr><td><tt>GRID_UNIT_MM</tt> </td><td width=20><td>Millimeter</td></tr>
|
|
<tr><td><tt>GRID_UNIT_MIL</tt> </td><td width=20><td>Mil</td></tr>
|
|
<tr><td><tt>GRID_UNIT_INCH</tt> </td><td width=20><td>Inch</td></tr>
|
|
</table>
|
|
<h2>Anmerkung</h2>
|
|
<tt>unitdist</tt> liefert die Grid-Einheit mit der die tatsächliche Größe des Rasters
|
|
(die durch <tt>distance</tt> geliefert wird) definiert wurde, während <tt>unit</tt>
|
|
die Grid-Einheit liefert, die für die Anzeige von Werten und die Umrechnung von
|
|
Benutzereingaben verwendet wird.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
board(B) {
|
|
printf("Gridsize=%f\n", B.grid.distance);
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=187>
|
|
<h1>UL_HOLE</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Data members</b>
|
|
<dd>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>diameter[layer]</tt> </td><td width=20><td><a href=#166>int</a> (siehe Anmerkung)</td></tr>
|
|
<tr><td><tt>drill</tt> </td><td width=20><td><a href=#166>int</a></td></tr>
|
|
<tr><td><tt>drillsymbol</tt> </td><td width=20><td><a href=#166>int</a></td></tr>
|
|
<tr><td><tt>x, y</tt> </td><td width=20><td><a href=#166>int</a> (Mittelpunkt)</td></tr>
|
|
</table>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#175>UL_BOARD</a>,
|
|
<a href=#194>UL_PACKAGE</a>
|
|
<h2>Anmerkung</h2>
|
|
<tt>diameter[]</tt> ist nur für die Layer <tt>LAYER_TSTOP</tt> und <tt>LAYER_BSTOP</tt> definiert
|
|
und liefert den Durchmesser der Lötstopmaske im jeweiligen Layer.
|
|
<p>
|
|
<tt>drillsymbol</tt> liefert die Nummer des Bohrsymbols, welches diesem Bohrdurchmesser
|
|
zugeordnet worden ist (siehe die Liste der definierten Bohrsymbole im Handbuch).
|
|
Ein Wert von <tt>0</tt> bedeutet, dass diesem Bohrdurchmesser kein Bohrsymbol zugeordnet ist.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
board(B) {
|
|
B.holes(H) {
|
|
printf("Hole: (%d %d), drill=%d\n",
|
|
H.x, H.y, H.drill);
|
|
}
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=188>
|
|
<h1>UL_INSTANCE</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Data members</b>
|
|
<dd>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>angle</tt> </td><td width=20><td><a href=#167>real</a> (<tt>0</tt>, <tt>90</tt>, <tt>180</tt> und <tt>270</tt>)</td></tr>
|
|
<tr><td><tt>column</tt> </td><td width=20><td><a href=#168>string</a> (siehe Anmerkung)</td></tr>
|
|
<tr><td><tt>gate</tt> </td><td width=20><td><a href=#185>UL_GATE</a></td></tr>
|
|
<tr><td><tt>mirror</tt> </td><td width=20><td><a href=#166>int</a></td></tr>
|
|
<tr><td><tt>name</tt> </td><td width=20><td><a href=#168>string</a> (<tt>INSTANCE_NAME_LENGTH</tt>)</td></tr>
|
|
<tr><td><tt>row</tt> </td><td width=20><td><a href=#168>string</a> (siehe Anmerkung)</td></tr>
|
|
<tr><td><tt>sheet</tt> </td><td width=20><td><a href=#166>int</a> (0=unbenutzt, >0=Seitennummer)</td></tr>
|
|
<tr><td><tt>smashed</tt> </td><td width=20><td><a href=#166>int</a> (siehe Anmerkung)</td></tr>
|
|
<tr><td><tt>value</tt> </td><td width=20><td><a href=#168>string</a> (<tt>PART_VALUE_LENGTH</tt>)</td></tr>
|
|
<tr><td><tt>x, y</tt> </td><td width=20><td><a href=#166>int</a> (Aufhängepunkt)</td></tr>
|
|
</table>
|
|
<dt>
|
|
<b>Loop members</b>
|
|
<dd>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>attributes()</tt> </td><td width=20><td><a href=#174>UL_ATTRIBUTE</a> (siehe Anmerkung)</td></tr>
|
|
<tr><td><tt>texts()</tt> </td><td width=20><td><a href=#207>UL_TEXT</a> (siehe Anmerkung)</td></tr>
|
|
<tr><td><tt>xrefs()</tt> </td><td width=20><td><a href=#185>UL_GATE</a> (siehe Anmerkung)</td></tr>
|
|
</table>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#196>UL_PART</a>,
|
|
<a href=#198>UL_PINREF</a>
|
|
<h2>Konstanten</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>INSTANCE_NAME_LENGTH</tt> </td><td width=20><td>max. empfohlene Länge eines Instance-Namen (wird nur für formatierte Ausgaben benutzt)</td></tr>
|
|
<tr><td><tt>PART_VALUE_LENGTH</tt> </td><td width=20><td>max. empfohlene Länge eines Bauteil-Values (Instances haben keinen eigenen Value!)</td></tr>
|
|
</table>
|
|
<h2>Anmerkung</h2>
|
|
Das <tt>attributes()</tt>-Member läuft nur durch die Attribute, die explizit dieser
|
|
Instance zugewiesen wurden (einschließlich <i>gesmashter</i> Attribute).
|
|
<p>
|
|
Das <tt>texts()</tt>-Member läuft nur durch die mittels <a href=#95><b>SMASH</b></a>
|
|
von der Instance losgelösten Texte, und durch die sichtbaren Texte der Attribute, die dieser Instance zugewiesen wurden.
|
|
Um alle Texte einer Instance zu bearbeiten, müssen Sie eine Schleife
|
|
durch das <tt>texts()</tt>-Member der Instance selbst und
|
|
durch das <tt>texts()</tt>-Member des zu dem Gate der Instance gehörenden
|
|
<a href=#206>Symbols</a> bilden.
|
|
Wurden einer Instance Attribute zugewiesen, so liefert <tt>texts()</tt> deren Texte
|
|
so, wie sie momentan dargestellt werden.
|
|
<p>
|
|
Die <tt>column()</tt>- und <tt>row()</tt>-Members liefern die Spalten- bzw. Zeilenposition
|
|
innerhalb des <a href=#184>Rahmens</a> auf der Schaltplanseite, auf der diese
|
|
Instance platziert ist.
|
|
Falls es auf dieser Seite keinen Rahmen gibt, oder die Instance außerhalb des Rahmens liegt,
|
|
wird ein <tt>'?'</tt> (Fragezeichen) zurückgegeben.
|
|
Diese Members können nur in einem UL_SHEET-Kontext verwendet werden.
|
|
<p>
|
|
Das <tt>smashed</tt>-Member gibt Auskunft darüber, ob eine Instance gesmasht ist.
|
|
Diese Funktion kann auch verwendet werden um herauszufinden, ob es einen losgelösten
|
|
Platzhaltertext gibt, indem der Name des Platzhalters in eckigen Klammern angegeben
|
|
wird, wie in <tt>smashed["VALUE"]</tt>. Dies ist nützlich falls Sie einen solchen Text
|
|
mit dem <a href=#67>MOVE</a>-Befehl etwa durch <tt>MOVE R5>VALUE</tt>
|
|
selektieren wollen. Gültige Platzhalternamen sind "NAME", "VALUE", "Part" und "GATE", sowie die
|
|
Namen etwaiger benutzerdefinierter <a href=#174>Attribute</a>.
|
|
Groß-/Kleinschreibung spielt keine Rolle, und sie dürfen ein vorangestelltes
|
|
<tt>'>'</tt> Zeichen haben.
|
|
<p>
|
|
Das <tt>xrefs()</tt>-Member läuft durch die Gatter des <a href=#137>Kontaktspiegels</a>
|
|
dieser Instance. Diese sind nur dann von Bedeutung, wenn das ULP eine zeichnerische
|
|
Darstellung des Schaltplans erzeugt (wie etwa eine DXF-Datei).
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
schematic(S) {
|
|
S.parts(P) {
|
|
printf("Part: %s\n", P.name);
|
|
P.instances(I) {
|
|
if (I.sheet != 0)
|
|
printf("\t%s used on sheet %d\n", I.name, I.sheet);
|
|
}
|
|
}
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=189>
|
|
<h1>UL_JUNCTION</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Data members</b>
|
|
<dd>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>diameter</tt> </td><td width=20><td><a href=#166>int</a></td></tr>
|
|
<tr><td><tt>x, y</tt> </td><td width=20><td><a href=#166>int</a> (Mittelpunkt)</td></tr>
|
|
</table>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#202>UL_SEGMENT</a>
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
schematic(SCH) {
|
|
SCH.sheets(SH) {
|
|
SH.nets(N) {
|
|
N.segments(SEG) {
|
|
SEG.junctions(J) {
|
|
printf("Junction: (%d %d)\n", J.x, J.y);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=190>
|
|
<h1>UL_LABEL</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Data members</b>
|
|
<dd>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>angle</tt> </td><td width=20><td><a href=#167>real</a> (<tt>0.0</tt>...<tt>359.9</tt>)</td></tr>
|
|
<tr><td><tt>layer</tt> </td><td width=20><td><a href=#166>int</a></td></tr>
|
|
<tr><td><tt>mirror</tt> </td><td width=20><td><a href=#166>int</a></td></tr>
|
|
<tr><td><tt>spin</tt> </td><td width=20><td><a href=#166>int</a></td></tr>
|
|
<tr><td><tt>text</tt> </td><td width=20><td><a href=#207>UL_TEXT</a></td></tr>
|
|
<tr><td><tt>x, y</tt> </td><td width=20><td><a href=#166>int</a> (Aufhängepunkt)</td></tr>
|
|
<tr><td><tt>xref</tt> </td><td width=20><td><a href=#166>int</a> (0=normal, 1=Querverweis)</td></tr>
|
|
</table>
|
|
<dt>
|
|
<b>Loop members</b>
|
|
<dd>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>wires()</tt> </td><td width=20><td><a href=#209>UL_WIRE</a> (siehe Anmerkung)</td></tr>
|
|
</table>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#202>UL_SEGMENT</a>
|
|
<h2>Anmerkung</h2>
|
|
Falls <tt>xref</tt> ungleich 0 ist, läuft das <tt>wires()</tt> Loop member durch die
|
|
Wires, aus denen die Umrandung des Querverweis-Labels besteht. Ansonsten ist die
|
|
Schleife leer.
|
|
<p>
|
|
Die <tt>angle</tt>, <tt>layer</tt>, <tt>mirror</tt> und <tt>spin</tt> Members liefern
|
|
immer den selben Wert wie diejenigen des UL_TEXT-Objekts, das vom <tt>text</tt> Member
|
|
geliefert wird. Die <tt>x</tt> und <tt>y</tt> Members des Textes liefern etwas versetzte
|
|
Werte für Querverweis-Labels <tt>xref</tt> ungleich 0), ansonsten liefern sie die
|
|
gleichen Werte wie das UL_LABEL.
|
|
<p>
|
|
<tt>xref</tt> hat nur für Netz-Labels eine Bedeutung. Für Bus-Labels liefert es immer 0.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
sheet(SH) {
|
|
SH.nets(N) {
|
|
N.segments(S) {
|
|
S.labels(L) {
|
|
printf("Label: %d %d '%s'", L.x, L.y, L.text.value);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=191>
|
|
<h1>UL_LAYER</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Data members</b>
|
|
<dd>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>color</tt> </td><td width=20><td><a href=#166>int</a></td></tr>
|
|
<tr><td><tt>fill</tt> </td><td width=20><td><a href=#166>int</a></td></tr>
|
|
<tr><td><tt>name</tt> </td><td width=20><td><a href=#168>string</a> (<tt>LAYER_NAME_LENGTH</tt>)</td></tr>
|
|
<tr><td><tt>number</tt> </td><td width=20><td><a href=#166>int</a></td></tr>
|
|
<tr><td><tt>used</tt> </td><td width=20><td><a href=#166>int</a> (0=unbenutzt, 1=benutzt)</td></tr>
|
|
<tr><td><tt>visible</tt> </td><td width=20><td><a href=#166>int</a> (0=off, 1=on)</td></tr>
|
|
</table>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#175>UL_BOARD</a>,
|
|
<a href=#192>UL_LIBRARY</a>,
|
|
<a href=#201>UL_SCHEMATIC</a>
|
|
<h2>Konstanten</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>LAYER_NAME_LENGTH</tt> </td><td width=20><td>max. empfohlene Länge eines Layer-Namens (wird nur für formatierte Ausgaben benutzt)</td></tr>
|
|
<tr><td><tt>LAYER_TOP</tt> </td><td width=20><td>Layer-Nummern</td></tr>
|
|
<tr><td><tt>LAYER_BOTTOM</tt> </td><td width=20><td></td></tr>
|
|
<tr><td><tt>LAYER_PADS</tt> </td><td width=20><td></td></tr>
|
|
<tr><td><tt>LAYER_VIAS</tt> </td><td width=20><td></td></tr>
|
|
<tr><td><tt>LAYER_UNROUTED</tt> </td><td width=20><td></td></tr>
|
|
<tr><td><tt>LAYER_DIMENSION</tt> </td><td width=20><td></td></tr>
|
|
<tr><td><tt>LAYER_TPLACE</tt> </td><td width=20><td></td></tr>
|
|
<tr><td><tt>LAYER_BPLACE</tt> </td><td width=20><td></td></tr>
|
|
<tr><td><tt>LAYER_TORIGINS</tt> </td><td width=20><td></td></tr>
|
|
<tr><td><tt>LAYER_BORIGINS</tt> </td><td width=20><td></td></tr>
|
|
<tr><td><tt>LAYER_TNAMES</tt> </td><td width=20><td></td></tr>
|
|
<tr><td><tt>LAYER_BNAMES</tt> </td><td width=20><td></td></tr>
|
|
<tr><td><tt>LAYER_TVALUES</tt> </td><td width=20><td></td></tr>
|
|
<tr><td><tt>LAYER_BVALUES</tt> </td><td width=20><td></td></tr>
|
|
<tr><td><tt>LAYER_TSTOP</tt> </td><td width=20><td></td></tr>
|
|
<tr><td><tt>LAYER_BSTOP</tt> </td><td width=20><td></td></tr>
|
|
<tr><td><tt>LAYER_TCREAM</tt> </td><td width=20><td></td></tr>
|
|
<tr><td><tt>LAYER_BCREAM</tt> </td><td width=20><td></td></tr>
|
|
<tr><td><tt>LAYER_TFINISH</tt> </td><td width=20><td></td></tr>
|
|
<tr><td><tt>LAYER_BFINISH</tt> </td><td width=20><td></td></tr>
|
|
<tr><td><tt>LAYER_TGLUE</tt> </td><td width=20><td></td></tr>
|
|
<tr><td><tt>LAYER_BGLUE</tt> </td><td width=20><td></td></tr>
|
|
<tr><td><tt>LAYER_TTEST</tt> </td><td width=20><td></td></tr>
|
|
<tr><td><tt>LAYER_BTEST</tt> </td><td width=20><td></td></tr>
|
|
<tr><td><tt>LAYER_TKEEPOUT</tt> </td><td width=20><td></td></tr>
|
|
<tr><td><tt>LAYER_BKEEPOUT</tt> </td><td width=20><td></td></tr>
|
|
<tr><td><tt>LAYER_TRESTRICT</tt> </td><td width=20><td></td></tr>
|
|
<tr><td><tt>LAYER_BRESTRICT</tt> </td><td width=20><td></td></tr>
|
|
<tr><td><tt>LAYER_VRESTRICT</tt> </td><td width=20><td></td></tr>
|
|
<tr><td><tt>LAYER_DRILLS</tt> </td><td width=20><td></td></tr>
|
|
<tr><td><tt>LAYER_HOLES</tt> </td><td width=20><td></td></tr>
|
|
<tr><td><tt>LAYER_MILLING</tt> </td><td width=20><td></td></tr>
|
|
<tr><td><tt>LAYER_MEASURES</tt> </td><td width=20><td></td></tr>
|
|
<tr><td><tt>LAYER_DOCUMENT</tt> </td><td width=20><td></td></tr>
|
|
<tr><td><tt>LAYER_REFERENCE</tt> </td><td width=20><td></td></tr>
|
|
<tr><td><tt>LAYER_TDOCU</tt> </td><td width=20><td></td></tr>
|
|
<tr><td><tt>LAYER_BDOCU</tt> </td><td width=20><td></td></tr>
|
|
<tr><td><tt>LAYER_NETS</tt> </td><td width=20><td></td></tr>
|
|
<tr><td><tt>LAYER_BUSSES</tt> </td><td width=20><td></td></tr>
|
|
<tr><td><tt>LAYER_PINS</tt> </td><td width=20><td></td></tr>
|
|
<tr><td><tt>LAYER_SYMBOLS</tt> </td><td width=20><td></td></tr>
|
|
<tr><td><tt>LAYER_NAMES</tt> </td><td width=20><td></td></tr>
|
|
<tr><td><tt>LAYER_VALUES</tt> </td><td width=20><td></td></tr>
|
|
<tr><td><tt>LAYER_INFO</tt> </td><td width=20><td></td></tr>
|
|
<tr><td><tt>LAYER_GUIDE</tt> </td><td width=20><td></td></tr>
|
|
<tr><td><tt>LAYER_USER</tt> </td><td width=20><td>niedrigste Nummer für benutzerdefinierte Layer (100)</td></tr>
|
|
</table>
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
board(B) {
|
|
B.layers(L) printf("Layer %3d %s\n", L.number, L.name);
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=192>
|
|
<h1>UL_LIBRARY</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Data members</b>
|
|
<dd>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>description</tt> </td><td width=20><td><a href=#168>string</a> (siehe Anmerkung)</td></tr>
|
|
<tr><td><tt>grid</tt> </td><td width=20><td><a href=#186>UL_GRID</a></td></tr>
|
|
<tr><td><tt>headline</tt> </td><td width=20><td><a href=#168>string</a></td></tr>
|
|
<tr><td><tt>name</tt> </td><td width=20><td><a href=#168>string</a> (<tt>LIBRARY_NAME_LENGTH</tt>, siehe Anmerkung)</td></tr>
|
|
</table>
|
|
<dt>
|
|
<b>Loop members</b>
|
|
<dd>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>devices()</tt> </td><td width=20><td><a href=#181>UL_DEVICE</a></td></tr>
|
|
<tr><td><tt>devicesets()</tt> </td><td width=20><td><a href=#182>UL_DEVICESET</a></td></tr>
|
|
<tr><td><tt>layers()</tt> </td><td width=20><td><a href=#191>UL_LAYER</a></td></tr>
|
|
<tr><td><tt>packages()</tt> </td><td width=20><td><a href=#194>UL_PACKAGE</a></td></tr>
|
|
<tr><td><tt>symbols()</tt> </td><td width=20><td><a href=#206>UL_SYMBOL</a></td></tr>
|
|
</table>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#175>UL_BOARD</a>,
|
|
<a href=#201>UL_SCHEMATIC</a>
|
|
<h2>Konstanten</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>LIBRARY_NAME_LENGTH</tt> </td><td width=20><td>max. empfohlene Länge eines Bibliotheksnamens (wird nur für formatierte Ausgaben benutzt)</td></tr>
|
|
</table>
|
|
<p>
|
|
Das <tt>devices()</tt>-Member geht durch alle Package-Varianten und Technologien von
|
|
UL_DEVICESET in der Bibliothek, so dass alle möglichen Device-Variationen verfügbar werden.
|
|
Das <tt>devicesets()</tt>-Member geht nur durch die UL_DEVICESETs, die wiederum nach deren
|
|
UL_DEVICE-Member abgefragt werden können.
|
|
<h2>Anmerkung</h2>
|
|
Das <tt>description</tt>-Member liefert den vollständigen Beschreibungstext, der mit dem
|
|
<a href=#44>DESCRIPTION</a>-Befehl erzeugt wurde, während das <tt>headline</tt>-Member
|
|
nur die erste Zeile der Beschreibung ohne <a href=#339>HTML</a>-Tags ausgibt.
|
|
Wenn Sie den <tt>description</tt>-Text benutzen, denken Sie daran, dass dieser Newline-Anweisungen (<tt>'\n'</tt>) enthalten darf.
|
|
Die <tt>description</tt> und <tt>headline</tt> Texte stehen nur direkt innerhalb einer Library-Zeichnung
|
|
zur Verfügung, nicht wenn die Bibliothek aus einem UL_BOARD- oder UL_SCHEMATIC-Kontext heraus angesprochen wird.
|
|
<p>
|
|
Wird die Bibliothek aus einem UL_BOARD- oder UL_SCHEMATIC-Kontext heraus angesprochen, liefert <tt>name</tt>
|
|
den reinen Bibliotheksnamen (ohne Extension). Ansonsten wird der volle Dateiname ausgegeben.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
library(L) {
|
|
L.devices(D) printf("Dev: %s\n", D.name);
|
|
L.devicesets(D) printf("Dev: %s\n", D.name);
|
|
L.packages(P) printf("Pac: %s\n", P.name);
|
|
L.symbols(S) printf("Sym: %s\n", S.name);
|
|
}
|
|
schematic(S) {
|
|
S.libraries(L) printf("Library: %s\n", L.name);
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=193>
|
|
<h1>UL_NET</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Data members</b>
|
|
<dd>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>class</tt> </td><td width=20><td><a href=#178>UL_CLASS</a></td></tr>
|
|
<tr><td><tt>column</tt> </td><td width=20><td><a href=#168>string</a> (see note)</td></tr>
|
|
<tr><td><tt>name</tt> </td><td width=20><td><a href=#168>string</a> (<tt>NET_NAME_LENGTH</tt>)</td></tr>
|
|
<tr><td><tt>row</tt> </td><td width=20><td><a href=#168>string</a> (see note)</td></tr>
|
|
</table>
|
|
<dt>
|
|
<b>Loop members</b>
|
|
<dd>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>pinrefs()</tt> </td><td width=20><td><a href=#198>UL_PINREF</a> (siehe Anmerkung)</td></tr>
|
|
<tr><td><tt>segments()</tt> </td><td width=20><td><a href=#202>UL_SEGMENT</a> (siehe Anmerkung)</td></tr>
|
|
</table>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#203>UL_SHEET</a>,
|
|
<a href=#201>UL_SCHEMATIC</a>
|
|
<h2>Konstanten</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>NET_NAME_LENGTH</tt> </td><td width=20><td>max. empfohlene Länge eines Netznamens (wird nur für formatierte Ausgaben benutzt)</td></tr>
|
|
</table>
|
|
<h2>Anmerkung</h2>
|
|
Das Loop member <tt>pinrefs()</tt> kann nur benutzt werden, wenn das
|
|
Net innerhalb eines UL_SCHEMATIC-Kontexts verwendet wird.<br>
|
|
Das Loop member <tt>segments()</tt> kann nur benutzt werden,
|
|
wenn das Net innerhalb eines UL_SHEET-Kontexts verwendet wird.
|
|
<p>
|
|
Die <tt>column()</tt>- und <tt>row()</tt>-Members liefern die Spalten- bzw. Zeilenpositionen
|
|
innerhalb des <a href=#184>Rahmens</a> auf der Schaltplanseite, auf der dieses Netz
|
|
liegt. Da ein Netz sich über einen bestimmten Bereich erstrecken kann, liefert jede dieser
|
|
Funktionen zwei durch ein Leerzeichen getrennte Werte zurück. Im Falle von <tt>column()</tt>
|
|
sind die die am weitesten links bzw. rechts liegende Spalte, die von diesem Netz berührt wird,
|
|
und bei <tt>row()</tt> ist es die am weitesten oben bzw. unten liegende Zeile.
|
|
Falls es auf dieser Seite keinen Rahmen gibt, wird <tt>"? ?"</tt> (zwei Fragezeichen) zurückgegeben.
|
|
Liegt irgend ein Punkt des Netzes außerhalb des Rahmens, so kann jeder der Werte <tt>'?'</tt>
|
|
(Fragezeichen) sein.
|
|
Diese Members können nur in einem UL_SHEET-Kontext verwendet werden.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
schematic(S) {
|
|
S.nets(N) {
|
|
printf("Net: %s\n", N.name);
|
|
// N.segments(SEG) will NOT work here!
|
|
}
|
|
}
|
|
schematic(S) {
|
|
S.sheets(SH) {
|
|
SH.nets(N) {
|
|
printf("Net: %s\n", N.name);
|
|
N.segments(SEG) {
|
|
SEG.wires(W) {
|
|
printf("\tWire: (%d %d) (%d %d)\n",
|
|
W.x1, W.y1, W.x2, W.y2);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=194>
|
|
<h1>UL_PACKAGE</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Data members</b>
|
|
<dd>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>area</tt> </td><td width=20><td><a href=#173>UL_AREA</a></td></tr>
|
|
<tr><td><tt>description</tt> </td><td width=20><td><a href=#168>string</a></td></tr>
|
|
<tr><td><tt>headline</tt> </td><td width=20><td><a href=#168>string</a></td></tr>
|
|
<tr><td><tt>library</tt> </td><td width=20><td><a href=#168>string</a></td></tr>
|
|
<tr><td><tt>name</tt> </td><td width=20><td><a href=#168>string</a> (<tt>PACKAGE_NAME_LENGTH</tt>)</td></tr>
|
|
</table>
|
|
<dt>
|
|
<b>Loop members</b>
|
|
<dd>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>circles()</tt> </td><td width=20><td><a href=#177>UL_CIRCLE</a></td></tr>
|
|
<tr><td><tt>contacts()</tt> </td><td width=20><td><a href=#179>UL_CONTACT</a></td></tr>
|
|
<tr><td><tt>frames()</tt> </td><td width=20><td><a href=#184>UL_FRAME</a></td></tr>
|
|
<tr><td><tt>holes()</tt> </td><td width=20><td><a href=#187>UL_HOLE</a></td></tr>
|
|
<tr><td><tt>polygons()</tt> </td><td width=20><td><a href=#199>UL_POLYGON</a></td></tr>
|
|
<tr><td><tt>rectangles()</tt> </td><td width=20><td><a href=#200>UL_RECTANGLE</a></td></tr>
|
|
<tr><td><tt>texts()</tt> </td><td width=20><td><a href=#207>UL_TEXT</a> (siehe Anmerkung)</td></tr>
|
|
<tr><td><tt>wires()</tt> </td><td width=20><td><a href=#209>UL_WIRE</a></td></tr>
|
|
</table>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#181>UL_DEVICE</a>,
|
|
<a href=#183>UL_ELEMENT</a>,
|
|
<a href=#192>UL_LIBRARY</a>
|
|
<h2>Konstanten</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>PACKAGE_NAME_LENGTH</tt> </td><td width=20><td>max. empfohlene Länge eines Package-Namens (wird nur für formatierte Ausgaben benutzt)</td></tr>
|
|
</table>
|
|
<h2>Anmerkung</h2>
|
|
Das <tt>description</tt>-Member liefert den vollständigen Beschreibungstext, der mit dem
|
|
<a href=#44>DESCRIPTION</a>-Befehl erzeugt wurde, während das <tt>headline</tt>-Member
|
|
nur die erste Zeile der Beschreibung ohne <a href=#339>HTML</a>-Tags ausgibt.
|
|
Wenn Sie <tt>description</tt>-Text schreiben, denken Sie daran, dass dieser Newline-Anweisungen (<tt>'\n'</tt>) enthalten darf.
|
|
<p>
|
|
Stammt das UL_PACKAGE aus einem UL_ELEMENT-Kontext, so durchläuft das <tt>texts()</tt>-Member
|
|
nur die nicht losgelösten Texte dieses Elements.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
library(L) {
|
|
L.packages(PAC) {
|
|
printf("Package: %s\n", PAC.name);
|
|
PAC.contacts(C) {
|
|
if (C.pad)
|
|
printf("\tPad: %s, (%d %d)\n",
|
|
C.name, C.pad.x, C.pad.y);
|
|
else if (C.smd)
|
|
printf("\tSmd: %s, (%d %d)\n",
|
|
C.name, C.smd.x, C.smd.y);
|
|
}
|
|
}
|
|
}
|
|
board(B) {
|
|
B.elements(E) {
|
|
printf("Element: %s, Package: %s\n", E.name, E.package.name);
|
|
}
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=195>
|
|
<h1>UL_PAD</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Data members</b>
|
|
<dd>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>angle</tt> </td><td width=20><td><a href=#167>real</a> (<tt>0.0</tt>...<tt>359.9</tt>)</td></tr>
|
|
<tr><td><tt>diameter[layer]</tt> </td><td width=20><td><a href=#166>int</a></td></tr>
|
|
<tr><td><tt>drill</tt> </td><td width=20><td><a href=#166>int</a></td></tr>
|
|
<tr><td><tt>drillsymbol</tt> </td><td width=20><td><a href=#166>int</a></td></tr>
|
|
<tr><td><tt>elongation</tt> </td><td width=20><td><a href=#166>int</a></td></tr>
|
|
<tr><td><tt>flags</tt> </td><td width=20><td><a href=#166>int</a> (<tt>PAD_FLAG_...</tt>)</td></tr>
|
|
<tr><td><tt>name</tt> </td><td width=20><td><a href=#168>string</a> (<tt>PAD_NAME_LENGTH</tt>)</td></tr>
|
|
<tr><td><tt>shape[layer]</tt> </td><td width=20><td><a href=#166>int</a> (<tt>PAD_SHAPE_...</tt>)</td></tr>
|
|
<tr><td><tt>signal</tt> </td><td width=20><td><a href=#168>string</a></td></tr>
|
|
<tr><td><tt>x, y</tt> </td><td width=20><td><a href=#166>int</a> (Mittelpunkt, siehe Anmerkung)</td></tr>
|
|
</table>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#194>UL_PACKAGE</a>,
|
|
<a href=#179>UL_CONTACT</a>,
|
|
<a href=#205>UL_SMD</a>
|
|
<h2>Konstanten</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>PAD_FLAG_STOP</tt> </td><td width=20><td>Lötstopmaske generieren</td></tr>
|
|
<tr><td><tt>PAD_FLAG_THERMALS</tt> </td><td width=20><td>Thermals generieren</td></tr>
|
|
<tr><td><tt>PAD_FLAG_FIRST</tt> </td><td width=20><td>spezielle Form für "erstes Pad" verwenden</td></tr>
|
|
</table>
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>PAD_SHAPE_SQUARE</tt> </td><td width=20><td>square</td></tr>
|
|
<tr><td><tt>PAD_SHAPE_ROUND</tt> </td><td width=20><td>round</td></tr>
|
|
<tr><td><tt>PAD_SHAPE_OCTAGON</tt> </td><td width=20><td>octagon</td></tr>
|
|
<tr><td><tt>PAD_SHAPE_LONG</tt> </td><td width=20><td>long</td></tr>
|
|
<tr><td><tt>PAD_SHAPE_OFFSET</tt> </td><td width=20><td>offset</td></tr>
|
|
<tr><td><tt>PAD_SHAPE_ANNULUS</tt> </td><td width=20><td>annulus (nur in Verbindung mit Supply-Layern)</td></tr>
|
|
<tr><td><tt>PAD_SHAPE_THERMAL</tt> </td><td width=20><td>thermal (nur in Verbindung mit Supply-Layern)</td></tr>
|
|
</table>
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>PAD_NAME_LENGTH</tt> </td><td width=20><td>max. empfohlene Länge eines Pad-Namens (identisch mit <tt>CONTACT_NAME_LENGTH</tt>)</td></tr>
|
|
</table>
|
|
<h2>Anmerkung</h2>
|
|
Die Parameter des Pads hängen vom Kontext ab in dem es angesprochen wird:
|
|
<ul>
|
|
<li>Wird das Pad aus einem UL_LIBRARY-Kontext angesprochen, sind die Koordinaten (<tt>x, y</tt>) und der Winkel (<tt>angle</tt>) dieselben, wie
|
|
in der Package-Zeichnung
|
|
<li>In allen anderen Fällen gelten die aktuellen Werte vom Board
|
|
</ul>
|
|
<p>
|
|
Durchmesser und Form des Pads hängen vom Layer ab für den es erzeugt werden soll, da diese Werte,
|
|
abhängig von den <a href=#133>Design Rules</a>, unterschiedlich sein können.
|
|
Wird als Index für das Data Member "diameter" oder "shape" einer der <a href=#191>Layer</a>
|
|
LAYER_TOP...LAYER_BOTTOM, LAYER_TSTOP oder LAYER_BSTOP angegeben, berechnet sich der Wert nach den
|
|
Vorgaben der Design Rules. Gibt man LAYER_PADS an, wird der in der Bibliothek definierte Wert
|
|
verwendet.
|
|
<p>
|
|
<tt>drillsymbol</tt> liefert die Nummer des Bohrsymbols, welches diesem Bohrdurchmesser
|
|
zugeordnet worden ist (siehe die Liste der definierten Bohrsymbole im Handbuch).
|
|
Ein Wert von <tt>0</tt> bedeutet, dass diesem Bohrdurchmesser kein Bohrsymbol zugeordnet ist.
|
|
<p>
|
|
<tt>angle</tt> gibt an um wieviel Grad das Pad gegen den Uhrzeigersinn um seinen
|
|
Mittelpunkt gedreht ist.
|
|
<p>
|
|
<tt>elongation</tt> ist nur für die Pad-Formen PAD_SHAPE_LONG und PAD_SHAPE_OFFSET gültig
|
|
und bestimmt um wieviel Prozent die lange Seite eines solchen Pads länger ist als
|
|
seine schmale Seite. Für alle anderen Pad-Formen liefert dieses Member den Wert 0.
|
|
<p>
|
|
Der Wert, den <tt>flags</tt> liefert, muss mit den <tt>PAD_FLAG_...</tt> Konstanten
|
|
maskiert werden um die einzelnen Flag-Einstellungen zu ermitteln, wie zum Beispiel in
|
|
<pre>
|
|
if (pad.flags & PAD_FLAG_STOP) {
|
|
...
|
|
}
|
|
</pre>
|
|
Falls Ihr ULP lediglich die Objekte darstellen soll, brauchen Sie sich nicht
|
|
explizit um diese Flags zu kümmern. Die <tt>diameter[]</tt> und <tt>shape[]</tt>
|
|
Members liefern die richtigen Daten; ist zum Beispiel <tt>PAD_FLAG_STOP</tt>
|
|
gesetzt, so liefert <tt>diameter[LAYER_TSTOP]</tt> den Wert <tt>0</tt>, was
|
|
zur Folge haben sollte, dass in diesem Layer nichts gezeichnet wird.
|
|
Das <tt>flags</tt> Member ist hauptsächlich für ULPs gedacht, die Script-Dateien
|
|
erzeugen mit denen Bibliotheksobjekte kreiert werden.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
library(L) {
|
|
L.packages(PAC) {
|
|
PAC.contacts(C) {
|
|
if (C.pad)
|
|
printf("Pad: '%s', (%d %d), d=%d\n",
|
|
C.name, C.pad.x, C.pad.y, C.pad.diameter[LAYER_BOTTOM]);
|
|
}
|
|
}
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=196>
|
|
<h1>UL_PART</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Data members</b>
|
|
<dd>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>attribute[]</tt> </td><td width=20><td><a href=#168>string</a> (siehe Anmerkung)</td></tr>
|
|
<tr><td><tt>device</tt> </td><td width=20><td><a href=#181>UL_DEVICE</a></td></tr>
|
|
<tr><td><tt>deviceset</tt> </td><td width=20><td><a href=#182>UL_DEVICESET</a></td></tr>
|
|
<tr><td><tt>name</tt> </td><td width=20><td><a href=#168>string</a> (<tt>PART_NAME_LENGTH</tt>)</td></tr>
|
|
<tr><td><tt>value</tt> </td><td width=20><td><a href=#168>string</a> (<tt>PART_VALUE_LENGTH</tt>)</td></tr>
|
|
</table>
|
|
<dt>
|
|
<b>Loop members</b>
|
|
<dd>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>attributes()</tt> </td><td width=20><td><a href=#174>UL_ATTRIBUTE</a> (siehe Anmerkung)</td></tr>
|
|
<tr><td><tt>instances()</tt> </td><td width=20><td><a href=#188>UL_INSTANCE</a> (siehe Anmerkung)</td></tr>
|
|
</table>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#201>UL_SCHEMATIC</a>,
|
|
<a href=#203>UL_SHEET</a>
|
|
<h2>Konstanten</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>PART_NAME_LENGTH</tt> </td><td width=20><td>max. empfohlene Länge eines Part-Namens (wird nur für formatierte Ausgaben benutzt)</td></tr>
|
|
<tr><td><tt>PART_VALUE_LENGTH</tt> </td><td width=20><td>max. empfohlene Länge eines Part-Values (wird nur für formatierte Ausgaben benutzt)</td></tr>
|
|
</table>
|
|
<h2>Anmerkung</h2>
|
|
Mit dem <tt>attribute[]</tt>-Member kann man ein UL_PART nach dem Wert eines
|
|
bestimmten Attributs fragen (siehe das zweite Beispiel). Der zurückgelieferte
|
|
String ist leer, wenn es kein Attribut mit dem angegebenen Namen gibt, oder
|
|
wenn dieses Attribut explizit leer ist.
|
|
<p>
|
|
Beim Durchlaufen der <tt>attributes()</tt> eines UL_PART haben nur die
|
|
<tt>name</tt>, <tt>value</tt>, <tt>defaultvalue</tt> und <tt>constant</tt>
|
|
Members des resultierenden UL_ATTRIBUTE gültige Werte.
|
|
<p>
|
|
Wenn sich Part in einem UL_SHEET-Kontext befindet, bearbeitet
|
|
Loop member <tt>instances()</tt> nur solche Instances, die tatsächlich
|
|
auf dieser Seite benutzt werden.
|
|
Wenn sich Part in einem UL_SCHEMATIC-Kontext befindet, geht die Schleife
|
|
durch alle Instances.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
schematic(S) {
|
|
S.parts(P) printf("Part: %s\n", P.name);
|
|
}
|
|
</pre>
|
|
<pre>
|
|
schematic(SCH) {
|
|
SCH.parts(P) {
|
|
if (P.attribute["REMARK"])
|
|
printf("%s: %s\n", P.name, P.attribute["REMARK"]);
|
|
}
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=197>
|
|
<h1>UL_PIN</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Data members</b>
|
|
<dd>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>angle</tt> </td><td width=20><td><a href=#167>real</a> (<tt>0</tt>, <tt>90</tt>, <tt>180</tt> und <tt>270</tt>)</td></tr>
|
|
<tr><td><tt>contact</tt> </td><td width=20><td><a href=#179>UL_CONTACT</a> (siehe Anmerkung)</td></tr>
|
|
<tr><td><tt>direction</tt> </td><td width=20><td><a href=#166>int</a> (<tt>PIN_DIRECTION_...</tt>)</td></tr>
|
|
<tr><td><tt>function</tt> </td><td width=20><td><a href=#166>int</a> (<tt>PIN_FUNCTION_FLAG_...</tt>)</td></tr>
|
|
<tr><td><tt>length</tt> </td><td width=20><td><a href=#166>int</a> (<tt>PIN_LENGTH_...</tt>)</td></tr>
|
|
<tr><td><tt>name</tt> </td><td width=20><td><a href=#168>string</a> (<tt>PIN_NAME_LENGTH</tt>)</td></tr>
|
|
<tr><td><tt>net</tt> </td><td width=20><td><a href=#168>string</a> (siehe Anmerkung)</td></tr>
|
|
<tr><td><tt>swaplevel</tt> </td><td width=20><td><a href=#166>int</a></td></tr>
|
|
<tr><td><tt>visible</tt> </td><td width=20><td><a href=#166>int</a> (<tt>PIN_VISIBLE_FLAG_...</tt>)</td></tr>
|
|
<tr><td><tt>x, y</tt> </td><td width=20><td><a href=#166>int</a> (Anschlusspunkt)</td></tr>
|
|
</table>
|
|
<dt>
|
|
<b>Loop members</b>
|
|
<dd>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>circles()</tt> </td><td width=20><td><a href=#177>UL_CIRCLE</a></td></tr>
|
|
<tr><td><tt>texts()</tt> </td><td width=20><td><a href=#207>UL_TEXT</a></td></tr>
|
|
<tr><td><tt>wires()</tt> </td><td width=20><td><a href=#209>UL_WIRE</a></td></tr>
|
|
</table>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#206>UL_SYMBOL</a>,
|
|
<a href=#198>UL_PINREF</a>,
|
|
<a href=#180>UL_CONTACTREF</a>
|
|
<h2>Konstanten</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>PIN_DIRECTION_NC</tt> </td><td width=20><td>Not connected</td></tr>
|
|
<tr><td><tt>PIN_DIRECTION_IN</tt> </td><td width=20><td>Input</td></tr>
|
|
<tr><td><tt>PIN_DIRECTION_OUT</tt> </td><td width=20><td>Output (totem-pole)</td></tr>
|
|
<tr><td><tt>PIN_DIRECTION_IO</tt> </td><td width=20><td>In/Output (bidirectional)</td></tr>
|
|
<tr><td><tt>PIN_DIRECTION_OC</tt> </td><td width=20><td>Open Collector</td></tr>
|
|
<tr><td><tt>PIN_DIRECTION_PWR</tt> </td><td width=20><td>Power-Input-Pin</td></tr>
|
|
<tr><td><tt>PIN_DIRECTION_PAS</tt> </td><td width=20><td>Passiv</td></tr>
|
|
<tr><td><tt>PIN_DIRECTION_HIZ</tt> </td><td width=20><td>High-Impedance-Output</td></tr>
|
|
<tr><td><tt>PIN_DIRECTION_SUP</tt> </td><td width=20><td>Supply-Pin</td></tr>
|
|
</table>
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>PIN_FUNCTION_FLAG_NONE</tt> </td><td width=20><td>kein Symbol</td></tr>
|
|
<tr><td><tt>PIN_FUNCTION_FLAG_DOT</tt> </td><td width=20><td>Inverter-Symbol</td></tr>
|
|
<tr><td><tt>PIN_FUNCTION_FLAG_CLK</tt> </td><td width=20><td>Taktsymbol</td></tr>
|
|
</table>
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>PIN_LENGTH_POINT</tt> </td><td width=20><td>kein Wire</td></tr>
|
|
<tr><td><tt>PIN_LENGTH_SHORT</tt> </td><td width=20><td>0.1-Inch-Wire</td></tr>
|
|
<tr><td><tt>PIN_LENGTH_MIDDLE</tt> </td><td width=20><td>0.2-Inch-Wire</td></tr>
|
|
<tr><td><tt>PIN_LENGTH_LONG</tt> </td><td width=20><td>0.3-Inch-Wire</td></tr>
|
|
</table>
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>PIN_NAME_LENGTH</tt> </td><td width=20><td>max. empfohlene Länge eines Pin-Namens (wird nur für formatierte Ausgaben benutzt)</td></tr>
|
|
</table>
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>PIN_VISIBLE_FLAG_OFF</tt> </td><td width=20><td>kein Name sichtbar</td></tr>
|
|
<tr><td><tt>PIN_VISIBLE_FLAG_PAD</tt> </td><td width=20><td>Pad-Name sichtbar</td></tr>
|
|
<tr><td><tt>PIN_VISIBLE_FLAG_PIN</tt> </td><td width=20><td>Pin-Name sichtbar</td></tr>
|
|
</table>
|
|
<h2>Anmerkung</h2>
|
|
Das <tt>contact</tt> Data Member liefert den <a href=#179>Contact</a>,
|
|
der dem Pin durch einen <a href=#40>CONNECT</a>-Befehl zugewiesen
|
|
worden ist. Es kann als boolsche Funktion verwendet werden um zu prüfen, ob dem Pin
|
|
ein Contact zugewiesen wurde (siehe Beispiel unten).
|
|
<p>
|
|
Die Koordinaten (und der Layer, im Falle eines SMD) des durch das
|
|
<tt>contact</tt> Data Member gelieferten Contacts hängen vom Kontext ab,
|
|
in dem es aufgerufen wird:
|
|
<ul>
|
|
<li>falls der Pin von einem UL_PART stammt, welches auf einer Schaltplanseite verwendet
|
|
wird, und wenn es ein dazugehöriges Element im Board gibt, dann erhält
|
|
der Contact die Koordinaten die er im Board hat
|
|
<li>in allen anderen Fällen erhält der Contact die Koordinaten wie sie
|
|
in der Package-Zeichnung definiert sind
|
|
</ul>
|
|
Das <tt>name</tt> Data Member liefert den Namen des Pins immer so, wie er in der Bibliothek
|
|
definiert wurde, einschließlich eines etwaigen <tt>'@'</tt>-Zeichens für Pins mit dem gleichen Namen
|
|
(siehe <a href=#75>PIN</a>-Befehl).<br>
|
|
Das <tt>texts</tt> Loop-Member dagegen liefert den Pin-Namen (sofern er sichtbar ist) immer
|
|
in der Form, wie er im aktuellen Zeichnungstyp dargestellt wird.
|
|
<p>
|
|
Das <tt>net</tt> Data Member liefert den Namen des Netzes, an das der Pin angeschlossen ist
|
|
(nur in einem UL_SCHEMATIC-Kontext verfügbar).
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
library(L) {
|
|
L.symbols(S) {
|
|
printf("Symbol: %s\n", S.name);
|
|
S.pins(P) {
|
|
printf("\tPin: %s, (%d %d)", P.name, P.x, P.y);
|
|
if (P.direction == PIN_DIRECTION_IN)
|
|
printf(" input");
|
|
if ((P.function & PIN_FUNCTION_FLAG_DOT) != 0)
|
|
printf(" inverted");
|
|
printf("\n");
|
|
}
|
|
}
|
|
L.devices(D) {
|
|
D.gates(G) {
|
|
G.symbol.pins(P) {
|
|
if (!P.contact)
|
|
printf("Unconnected pin: %s/%s/%s\n", D.name, G.name, P.name);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=198>
|
|
<h1>UL_PINREF</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Data members</b>
|
|
<dd>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>instance</tt> </td><td width=20><td><a href=#188>UL_INSTANCE</a></td></tr>
|
|
<tr><td><tt>part</tt> </td><td width=20><td><a href=#196>UL_PART</a></td></tr>
|
|
<tr><td><tt>pin</tt> </td><td width=20><td><a href=#197>UL_PIN</a></td></tr>
|
|
</table>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#202>UL_SEGMENT</a>,
|
|
<a href=#180>UL_CONTACTREF</a>
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
schematic(SCH) {
|
|
SCH.sheets(SH) {
|
|
printf("Sheet: %d\n", SH.number);
|
|
SH.nets(N) {
|
|
printf("\tNet: %s\n", N.name);
|
|
N.segments(SEG) {
|
|
SEG.pinrefs(P) {
|
|
printf("connected to: %s, %s, %s\n",
|
|
P.part.name, P.instance.name, P.pin.name);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=199>
|
|
<h1>UL_POLYGON</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Data members</b>
|
|
<dd>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>isolate</tt> </td><td width=20><td><a href=#166>int</a></td></tr>
|
|
<tr><td><tt>layer</tt> </td><td width=20><td><a href=#166>int</a></td></tr>
|
|
<tr><td><tt>orphans</tt> </td><td width=20><td><a href=#166>int</a> (0=off, 1=on)</td></tr>
|
|
<tr><td><tt>pour</tt> </td><td width=20><td><a href=#166>int</a> (<tt>POLYGON_POUR_...</tt>)</td></tr>
|
|
<tr><td><tt>rank</tt> </td><td width=20><td><a href=#166>int</a></td></tr>
|
|
<tr><td><tt>spacing</tt> </td><td width=20><td><a href=#166>int</a></td></tr>
|
|
<tr><td><tt>thermals</tt> </td><td width=20><td><a href=#166>int</a> (0=off, 1=on)</td></tr>
|
|
<tr><td><tt>width</tt> </td><td width=20><td><a href=#166>int</a></td></tr>
|
|
</table>
|
|
<dt>
|
|
<b>Loop members</b>
|
|
<dd>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>contours()</tt> </td><td width=20><td><a href=#209>UL_WIRE</a> (siehe Anmerkung)</td></tr>
|
|
<tr><td><tt>fillings()</tt> </td><td width=20><td><a href=#209>UL_WIRE</a></td></tr>
|
|
<tr><td><tt>wires()</tt> </td><td width=20><td><a href=#209>UL_WIRE</a></td></tr>
|
|
</table>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#175>UL_BOARD</a>,
|
|
<a href=#194>UL_PACKAGE</a>,
|
|
<a href=#203>UL_SHEET</a>,
|
|
<a href=#204>UL_SIGNAL</a>,
|
|
<a href=#206>UL_SYMBOL</a>
|
|
<h2>Konstanten</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>POLYGON_POUR_SOLID</tt> </td><td width=20><td>solid</td></tr>
|
|
<tr><td><tt>POLYGON_POUR_HATCH</tt> </td><td width=20><td>hatch</td></tr>
|
|
</table>
|
|
<h2>Anmerkung</h2>
|
|
Die Loop-Member <tt>contours()</tt> und <tt>fillings()</tt> gehen durch alle Wires, mit
|
|
denen das Polygon gezeichnet wird, sofern es zu einem Signal gehört und mit
|
|
dem Befehl <a href=#81>RATSNEST</a> freigerechnet wurde.
|
|
Das Loop-Member <tt>wires()</tt> geht immer durch die Wires, die vom Benutzer gezeichnet
|
|
wurden. Für nicht freigerechnete Signal-Polygone liefert <tt>contours()</tt> dasselbe
|
|
Ergebnis wie <tt>wires()</tt>. <tt>Fillings()</tt> hat dann keine Bedeutung.
|
|
<p>
|
|
Wird das <tt>contours()</tt> Loop-Member ohne einem zweiten Parameter aufgerufen,
|
|
so läuft es durch alle Umriss-Linien, egal ob sie zu einem positiven oder negativen
|
|
Polygon gehören. Falls Sie daran interessiert sind, die positiven und negativen
|
|
Umriss-Linien getrennt voneienander zu erhalten, können Sie <tt>contours()</tt>
|
|
mit einem zusätzlichen Integer-Parameter aufrufen (siehe zweites Beispiel unten).
|
|
Das Vorzeichen dieses Parameters bestimmt, ob ein positives oder negatives Polygon
|
|
behandelt wird, und der Wert gibt den Index dieses Polygons an. Falls es kein
|
|
Polygon mit dem gegebenen Index gibt, wird die Anweisung nicht ausgeführt.
|
|
Ein weiterer Vorteil dieser Methode ist, dass Sie Anfang und Ende eines bestimmten
|
|
Polygons nicht selber (durch Vergleich von Koordinaten) bestimmen müssen. Für jeden
|
|
Index wird die Anweisung für alle Wires dieses Polygons ausgeführt.
|
|
Mit <tt>0</tt> als zweitem Parameter ist das Verhalten genau so, als wäre kein
|
|
zweiter Parameter angegeben worden.
|
|
<h2>Polygon-Strichstärke</h2>
|
|
Wenn Sie das Loop-Member <tt>fillings()</tt> verwenden um die Füll-Linien
|
|
des Polygons zu erreichen, stellen Sie sicher, dass die Strichstärke
|
|
<i>width</i> des Polygons nicht null ist (sie sollte etwas über null liegen,
|
|
bzw. mindestens der Auflösung des Ausgabetreibers mit dem Sie die Zeichnung ausgeben
|
|
wollen entsprechen).
|
|
<b>Zeichnen Sie ein Polygon mit Strichstärke = 0, ergibt sich eine riesige Datenmenge, da
|
|
das Polygon mit der kleinsten Editor-Auflösung von 1/10000mm berechnet wird. </b>
|
|
<h2>Teilpolygone</h2>
|
|
Ein berechnetes Polygon kann aus verschiedenen getrennten Teilen (<i>positive</i>Polygone
|
|
genannt) bestehen, wobei jedes davon Aussparungen (<i>negative</i> Polygone genannt)
|
|
enthalten kann, die von anderen Objekten, die vom Polygon subtrahiert werden,
|
|
herrühren. Negative Polygone können wiederum weitere positive Polygone enthalten
|
|
und so weiter.
|
|
<p>
|
|
Die Wires, die mit <tt>contours()</tt> erreicht werden, beginnen immer in einem
|
|
positiven Polygon. Um herauszufinden wo ein Teilpolygon endet und das nächste beginnt,
|
|
speichern Sie einfach die Koordinate (x1,y1) des ersten Wires und prüfen diese
|
|
gegenüber (x2,y2) jedes folgenden Wires. Sobald die beiden Werte identisch sind,
|
|
ist der letzte Wire des Teilpolygons gefunden. Es gilt immer, dass
|
|
der zweite Punkt (x2,y2) identisch mit dem ersten Punkt (x1,y1) des nächsten Wires
|
|
in diesem Teilpolygon ist.
|
|
<p>
|
|
Um herauszufinden ob man innerhalb bzw. ausserhalb der Polygons ist, nehmen
|
|
Sie einen beliebigen Umriss-Wire und stellen sich Sie vor, von dessen Punkt (x1,y1)
|
|
zum Punkt (x2,y2) zu sehen. Rechts vom Wire ist immer innerhalb des Polygons.
|
|
Hinweis: Wenn Sie einfach ein Polygon zeichnen wollen, brauchen Sie all
|
|
diese Details nicht.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
board(B) {
|
|
B.signals(S) {
|
|
S.polygons(P) {
|
|
int x0, y0, first = 1;
|
|
P.contours(W) {
|
|
if (first) {
|
|
// a new partial polygon is starting
|
|
x0 = W.x1;
|
|
y0 = W.y1;
|
|
}
|
|
// ...
|
|
// do something with the wire
|
|
// ...
|
|
if (first)
|
|
first = 0;
|
|
else if (W.x2 == x0 && W.y2 == y0) {
|
|
// this was the last wire of the partial polygon,
|
|
// so the next wire (if any) will be the first wire
|
|
// of the next partial polygon
|
|
first = 1;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</pre>
|
|
<p>
|
|
<pre>
|
|
board(B) {
|
|
B.signals(S) {
|
|
S.polygons(P) {
|
|
// handle only the "positive" polygons:
|
|
int i = 1;
|
|
int active;
|
|
do {
|
|
active = 0;
|
|
P.contours(W, i) {
|
|
active = 1;
|
|
// do something with the wire
|
|
}
|
|
i++;
|
|
} while (active);
|
|
}
|
|
}
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=200>
|
|
<h1>UL_RECTANGLE</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Data members</b>
|
|
<dd>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>angle</tt> </td><td width=20><td><a href=#167>real</a> (<tt>0.0</tt>...<tt>359.9</tt>)</td></tr>
|
|
<tr><td><tt>layer</tt> </td><td width=20><td><a href=#166>int</a></td></tr>
|
|
<tr><td><tt>x1, y1</tt> </td><td width=20><td><a href=#166>int</a> (linke untere Ecke)</td></tr>
|
|
<tr><td><tt>x2, y2</tt> </td><td width=20><td><a href=#166>int</a> (rechte obere Ecke)</td></tr>
|
|
</table>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#175>UL_BOARD</a>,
|
|
<a href=#194>UL_PACKAGE</a>,
|
|
<a href=#203>UL_SHEET</a>,
|
|
<a href=#206>UL_SYMBOL</a>
|
|
<p>
|
|
<tt>angle</tt> gibt an um wieviel Grad das Rechteck gegen den Uhrzeigersinn um seinen
|
|
Mittelpunkt gedreht ist. Der Mittelpunkt ergibt sich aus <tt>(x1+x2)/2</tt> und <tt>(y1+y2)/2</tt>.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
board(B) {
|
|
B.rectangles(R) {
|
|
printf("Rectangle: (%d %d), (%d %d)\n",
|
|
R.x1, R.y1, R.x2, R.y2);
|
|
}
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=201>
|
|
<h1>UL_SCHEMATIC</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Data members</b>
|
|
<dd>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>grid</tt> </td><td width=20><td><a href=#186>UL_GRID</a></td></tr>
|
|
<tr><td><tt>name</tt> </td><td width=20><td><a href=#168>string</a> (siehe Anmerkung)</td></tr>
|
|
<tr><td><tt>xreflabel</tt> </td><td width=20><td><a href=#168>string</a></td></tr>
|
|
</table>
|
|
<dt>
|
|
<b>Loop members</b>
|
|
<dd>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>attributes()</tt> </td><td width=20><td><a href=#174>UL_ATTRIBUTE</a> (siehe Anmerkung)</td></tr>
|
|
<tr><td><tt>classes()</tt> </td><td width=20><td><a href=#178>UL_CLASS</a></td></tr>
|
|
<tr><td><tt>layers()</tt> </td><td width=20><td><a href=#191>UL_LAYER</a></td></tr>
|
|
<tr><td><tt>libraries()</tt> </td><td width=20><td><a href=#192>UL_LIBRARY</a></td></tr>
|
|
<tr><td><tt>nets()</tt> </td><td width=20><td><a href=#193>UL_NET</a></td></tr>
|
|
<tr><td><tt>parts()</tt> </td><td width=20><td><a href=#196>UL_PART</a></td></tr>
|
|
<tr><td><tt>sheets()</tt> </td><td width=20><td><a href=#203>UL_SHEET</a></td></tr>
|
|
</table>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#175>UL_BOARD</a>,
|
|
<a href=#192>UL_LIBRARY</a>
|
|
<h2>Anmerkung</h2>
|
|
Das <tt>name</tt> Member liefert den vollständigen Dateinamen, inklusive Verzeichnis.
|
|
<p>
|
|
Das <tt>xreflabel</tt> Member liefert den Format-String der für die Darstellung von
|
|
<a href=#60>Querverweis-Labels</a> benutzt wird.
|
|
<p>
|
|
Das Loop member <tt>attributes()</tt> geht durch die <i>globalen</i> Attribute.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
schematic(S) {
|
|
S.parts(P) printf("Part: %s\n", P.name);
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=202>
|
|
<h1>UL_SEGMENT</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Loop members</b>
|
|
<dd>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>junctions()</tt> </td><td width=20><td><a href=#189>UL_JUNCTION</a> (siehe Anmerkung)</td></tr>
|
|
<tr><td><tt>labels()</tt> </td><td width=20><td><a href=#190>UL_LABEL</a></td></tr>
|
|
<tr><td><tt>pinrefs()</tt> </td><td width=20><td><a href=#198>UL_PINREF</a> (siehe Anmerkung)</td></tr>
|
|
<tr><td><tt>texts()</tt> </td><td width=20><td><a href=#207>UL_TEXT</a> (veraltet, siehe Anmerkung)</td></tr>
|
|
<tr><td><tt>wires()</tt> </td><td width=20><td><a href=#209>UL_WIRE</a></td></tr>
|
|
</table>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#176>UL_BUS</a>,
|
|
<a href=#193>UL_NET</a>
|
|
<h2>Anmerkung</h2>
|
|
Die Loop members <tt>junctions()</tt> und <tt>pinrefs()</tt>
|
|
sind nur für Netzsegmente zugänglich.
|
|
<p>
|
|
Das Loop member <tt>texts()</tt> wurde in früheren EAGLE-Versionen benutzt um durch die
|
|
Labels eines Segments zu gehen und ist nur noch aus Kompatibilitätsgründen vorhanden.
|
|
Es liefert den Text von Querverweis-Labels nicht an der richtigen Position. Benutzen
|
|
Sie das <tt>labels()</tt> Loop member um die Labels eines Segments anzusprechen.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
schematic(SCH) {
|
|
SCH.sheets(SH) {
|
|
printf("Sheet: %d\n", SH.number);
|
|
SH.nets(N) {
|
|
printf("\tNet: %s\n", N.name);
|
|
N.segments(SEG) {
|
|
SEG.pinrefs(P) {
|
|
printf("connected to: %s, %s, %s\n",
|
|
P.part.name, P.instance.name, P.pin.name);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=203>
|
|
<h1>UL_SHEET</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Data members</b>
|
|
<dd>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>area</tt> </td><td width=20><td><a href=#173>UL_AREA</a></td></tr>
|
|
<tr><td><tt>number</tt> </td><td width=20><td><a href=#166>int</a></td></tr>
|
|
</table>
|
|
<dt>
|
|
<b>Loop members</b>
|
|
<dd>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>busses()</tt> </td><td width=20><td><a href=#176>UL_BUS</a></td></tr>
|
|
<tr><td><tt>circles()</tt> </td><td width=20><td><a href=#177>UL_CIRCLE</a></td></tr>
|
|
<tr><td><tt>frames()</tt> </td><td width=20><td><a href=#184>UL_FRAME</a></td></tr>
|
|
<tr><td><tt>nets()</tt> </td><td width=20><td><a href=#193>UL_NET</a></td></tr>
|
|
<tr><td><tt>parts()</tt> </td><td width=20><td><a href=#196>UL_PART</a></td></tr>
|
|
<tr><td><tt>polygons()</tt> </td><td width=20><td><a href=#199>UL_POLYGON</a></td></tr>
|
|
<tr><td><tt>rectangles()</tt> </td><td width=20><td><a href=#200>UL_RECTANGLE</a></td></tr>
|
|
<tr><td><tt>texts()</tt> </td><td width=20><td><a href=#207>UL_TEXT</a></td></tr>
|
|
<tr><td><tt>wires()</tt> </td><td width=20><td><a href=#209>UL_WIRE</a></td></tr>
|
|
</table>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#201>UL_SCHEMATIC</a>
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
schematic(SCH) {
|
|
SCH.sheets(S) {
|
|
printf("Sheet: %d\n", S.number);
|
|
}
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=204>
|
|
<h1>UL_SIGNAL</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Data members</b>
|
|
<dd>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>airwireshidden</tt></td><td width=20><td><a href=#166>int</a></td></tr>
|
|
<tr><td><tt>class</tt> </td><td width=20><td><a href=#178>UL_CLASS</a></td></tr>
|
|
<tr><td><tt>name</tt> </td><td width=20><td><a href=#168>string</a> (<tt>SIGNAL_NAME_LENGTH</tt>)</td></tr>
|
|
</table>
|
|
<dt>
|
|
<b>Loop members</b>
|
|
<dd>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>contactrefs()</tt> </td><td width=20><td><a href=#180>UL_CONTACTREF</a></td></tr>
|
|
<tr><td><tt>polygons()</tt> </td><td width=20><td><a href=#199>UL_POLYGON</a></td></tr>
|
|
<tr><td><tt>vias()</tt> </td><td width=20><td><a href=#208>UL_VIA</a></td></tr>
|
|
<tr><td><tt>wires()</tt> </td><td width=20><td><a href=#209>UL_WIRE</a></td></tr>
|
|
</table>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#175>UL_BOARD</a>
|
|
<h2>Konstanten</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>SIGNAL_NAME_LENGTH</tt> </td><td width=20><td>max. empfohlene Länge eines Signalnamens (wird nur für formatierte Ausgaben benutzt)</td></tr>
|
|
</table>
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
board(B) {
|
|
B.signals(S) printf("Signal: %s\n", S.name);
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=205>
|
|
<h1>UL_SMD</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Data members</b>
|
|
<dd>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>angle</tt> </td><td width=20><td><a href=#167>real</a> (<tt>0.0</tt>...<tt>359.9</tt>)</td></tr>
|
|
<tr><td><tt>dx[layer], dy[layer]</tt> </td><td width=20><td><a href=#166>int</a> (size)</td></tr>
|
|
<tr><td><tt>flags</tt> </td><td width=20><td><a href=#166>int</a> (<tt>SMD_FLAG_...</tt>)</td></tr>
|
|
<tr><td><tt>layer</tt> </td><td width=20><td><a href=#166>int</a> (siehe Anmerkung)</td></tr>
|
|
<tr><td><tt>name</tt> </td><td width=20><td><a href=#168>string</a> (<tt>SMD_NAME_LENGTH</tt>)</td></tr>
|
|
<tr><td><tt>roundness</tt> </td><td width=20><td><a href=#166>int</a> (siehe Anmerkung)</td></tr>
|
|
<tr><td><tt>signal</tt> </td><td width=20><td><a href=#168>string</a></td></tr>
|
|
<tr><td><tt>x, y</tt> </td><td width=20><td><a href=#166>int</a> (Mittelpunkt, siehe Anmerkung)</td></tr>
|
|
</table>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#194>UL_PACKAGE</a>,
|
|
<a href=#179>UL_CONTACT</a>,
|
|
<a href=#195>UL_PAD</a>
|
|
<h2>Konstanten</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>SMD_FLAG_STOP</tt> </td><td width=20><td>Lötstopmaske generieren</td></tr>
|
|
<tr><td><tt>SMD_FLAG_THERMALS</tt> </td><td width=20><td>Thermals generieren</td></tr>
|
|
<tr><td><tt>SMD_FLAG_CREAM</tt> </td><td width=20><td>Lotpastenmaske generieren</td></tr>
|
|
</table>
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>SMD_NAME_LENGTH</tt> </td><td width=20><td>max. empfohlenen Länge eines Smd-Namens (identisch mit <tt>CONTACT_NAME_LENGTH</tt>)</td></tr>
|
|
</table>
|
|
<h2>Anmerkung</h2>
|
|
Die Parameter des SMDs hängen vom Kontext ab in dem es angesprochen wird:
|
|
<ul>
|
|
<li>Wird das Smd aus einem UL_LIBRARY-Kontext angesprochen, entsprechen die Werte der Koordinaten (<tt>x, y</tt>), des Winkels (<tt>angle</tt>)
|
|
und die Angabe für Layer und Roundness denen in der Package-Zeichnung
|
|
<li>in allen anderen Fällen erhalten Sie die aktuellen Werte aus dem Board
|
|
</ul>
|
|
Ruft man die Data Member <tt>dx</tt> und <tt>dy</tt> mit einem optionalen Layer-Index auf,
|
|
werden die Werte für den zugehörigen Layer, entsprechend den <a href=#133>Design Rules</a>
|
|
ausgegeben.
|
|
Gültige <a href=#191>Layer</a> sind LAYER_TOP, LAYER_TSTOP und LAYER_TCREAM für ein
|
|
Smd im Top-Layer, und LAYER_BOTTOM, LAYER_BSTOP und LAYER_BCREAM für ein Smd im Bottom-Layer.
|
|
<p>
|
|
<tt>angle</tt> gibt an um wieviel Grad das Smd gegen den Uhrzeigersinn um seinen
|
|
Mittelpunkt gedreht ist.
|
|
<p>
|
|
Der Wert, den <tt>flags</tt> liefert, muss mit den <tt>SMD_FLAG_...</tt> Konstanten
|
|
maskiert werden um die einzelnen Flag-Einstellungen zu ermitteln, wie zum Beispiel in
|
|
<pre>
|
|
if (smd.flags & SMD_FLAG_STOP) {
|
|
...
|
|
}
|
|
</pre>
|
|
Falls Ihr ULP lediglich die Objekte darstellen soll, brauchen Sie sich nicht
|
|
explizit um diese Flags zu kümmern. Die <tt>dx[]</tt> und <tt>dy[]</tt>
|
|
Members liefern die richtigen Daten; ist zum Beispiel <tt>SMD_FLAG_STOP</tt>
|
|
gesetzt, so liefert <tt>dx[LAYER_TSTOP]</tt> den Wert <tt>0</tt>, was
|
|
zur Folge haben sollte, dass in diesem Layer nichts gezeichnet wird.
|
|
Das <tt>flags</tt> Member ist hauptsächlich für ULPs gedacht, die Script-Dateien
|
|
erzeugen mit denen Bibliotheksobjekte kreiert werden.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
library(L) {
|
|
L.packages(PAC) {
|
|
PAC.contacts(C) {
|
|
if (C.smd)
|
|
printf("Smd: '%s', (%d %d), dx=%d, dy=%d\n",
|
|
C.name, C.smd.x, C.smd.y, C.smd.dx, C.smd.dy);
|
|
}
|
|
}
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=206>
|
|
<h1>UL_SYMBOL</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Data members</b>
|
|
<dd>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>area</tt> </td><td width=20><td><a href=#173>UL_AREA</a></td></tr>
|
|
<tr><td><tt>library</tt> </td><td width=20><td><a href=#168>string</a></td></tr>
|
|
<tr><td><tt>name</tt> </td><td width=20><td><a href=#168>string</a> (<tt>SYMBOL_NAME_LENGTH</tt>)</td></tr>
|
|
</table>
|
|
<dt>
|
|
<b>Loop members</b>
|
|
<dd>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>circles()</tt> </td><td width=20><td><a href=#177>UL_CIRCLE</a></td></tr>
|
|
<tr><td><tt>frames()</tt> </td><td width=20><td><a href=#184>UL_FRAME</a></td></tr>
|
|
<tr><td><tt>rectangles()</tt> </td><td width=20><td><a href=#200>UL_RECTANGLE</a></td></tr>
|
|
<tr><td><tt>pins()</tt> </td><td width=20><td><a href=#197>UL_PIN</a></td></tr>
|
|
<tr><td><tt>polygons()</tt> </td><td width=20><td><a href=#199>UL_POLYGON</a></td></tr>
|
|
<tr><td><tt>texts()</tt> </td><td width=20><td><a href=#207>UL_TEXT</a> (siehe Anmerkung)</td></tr>
|
|
<tr><td><tt>wires()</tt> </td><td width=20><td><a href=#209>UL_WIRE</a></td></tr>
|
|
</table>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#185>UL_GATE</a>,
|
|
<a href=#192>UL_LIBRARY</a>
|
|
<h2>Konstanten</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>SYMBOL_NAME_LENGTH</tt> </td><td width=20><td>max. empfohlene Länge eines Symbol-Namens (wird nur für formatierte Ausgaben benutzt)</td></tr>
|
|
</table>
|
|
<h2>Anmerkung</h2>
|
|
Stammt das UL_SYMBOL aus einem UL_INSTANCE-Kontext, so durchläuft das <tt>texts()</tt>-Member
|
|
nur die nicht losgelösten Texte dieser Instance.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
library(L) {
|
|
L.symbols(S) printf("Sym: %s\n", S.name);
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=207>
|
|
<h1>UL_TEXT</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Data members</b>
|
|
<dd>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>angle</tt> </td><td width=20><td><a href=#167>real</a> (<tt>0.0</tt>...<tt>359.9</tt>)</td></tr>
|
|
<tr><td><tt>font</tt> </td><td width=20><td><a href=#166>int</a> (<tt>FONT_...</tt>)</td></tr>
|
|
<tr><td><tt>layer</tt> </td><td width=20><td><a href=#166>int</a></td></tr>
|
|
<tr><td><tt>mirror</tt> </td><td width=20><td><a href=#166>int</a></td></tr>
|
|
<tr><td><tt>ratio</tt> </td><td width=20><td><a href=#166>int</a></td></tr>
|
|
<tr><td><tt>size</tt> </td><td width=20><td><a href=#166>int</a></td></tr>
|
|
<tr><td><tt>spin</tt> </td><td width=20><td><a href=#166>int</a></td></tr>
|
|
<tr><td><tt>value</tt> </td><td width=20><td><a href=#168>string</a></td></tr>
|
|
<tr><td><tt>x, y</tt> </td><td width=20><td><a href=#166>int</a> (Aufhängepunkt)</td></tr>
|
|
</table>
|
|
<dt>
|
|
<b>Loop members</b>
|
|
<dd>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>wires()</tt> </td><td width=20><td><a href=#209>UL_WIRE</a> (siehe Anmerkung)</td></tr>
|
|
</table>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#175>UL_BOARD</a>,
|
|
<a href=#194>UL_PACKAGE</a>,
|
|
<a href=#203>UL_SHEET</a>,
|
|
<a href=#206>UL_SYMBOL</a>
|
|
<h2>Konstanten</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>FONT_VECTOR</tt> </td><td width=20><td>Vector-Font</td></tr>
|
|
<tr><td><tt>FONT_PROPORTIONAL</tt> </td><td width=20><td>Proportional-Font</td></tr>
|
|
<tr><td><tt>FONT_FIXED</tt> </td><td width=20><td>Fixed-Font</td></tr>
|
|
</table>
|
|
<h2>Anmerkung</h2>
|
|
Das Loop-Member <tt>wires()</tt> greift immer auf die individuellen Wires, aus denen der Text
|
|
im Vektor-Font zusammengesetzt wird, zu. Auch dann, wenn der aktuelle Font nicht
|
|
<tt>FONT_VECTOR</tt> ist.
|
|
<p>
|
|
Wurde der UL_TEXT aus einem UL_ELEMENT- oder UL_INSTANCE-Kontext angesprochen, so liefern
|
|
die Members die tatsächlichen Werte, so wie sie in der Board- oder Schaltplan-Zeichnung zu
|
|
finden sind.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
board(B) {
|
|
B.texts(T) {
|
|
printf("Text: %s\n", T.value);
|
|
}
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=208>
|
|
<h1>UL_VIA</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Data members</b>
|
|
<dd>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>diameter[layer]</tt> </td><td width=20><td><a href=#166>int</a></td></tr>
|
|
<tr><td><tt>drill</tt> </td><td width=20><td><a href=#166>int</a></td></tr>
|
|
<tr><td><tt>drillsymbol</tt> </td><td width=20><td><a href=#166>int</a></td></tr>
|
|
<tr><td><tt>end</tt> </td><td width=20><td><a href=#166>int</a></td></tr>
|
|
<tr><td><tt>flags</tt> </td><td width=20><td><a href=#166>int</a> (<tt>VIA_FLAG_...</tt>)</td></tr>
|
|
<tr><td><tt>shape[layer]</tt> </td><td width=20><td><a href=#166>int</a> (<tt>VIA_SHAPE_...</tt>)</td></tr>
|
|
<tr><td><tt>start</tt> </td><td width=20><td><a href=#166>int</a></td></tr>
|
|
<tr><td><tt>x, y</tt> </td><td width=20><td><a href=#166>int</a> (Mittelpunkt)</td></tr>
|
|
</table>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#204>UL_SIGNAL</a>
|
|
<h2>Konstanten</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>VIA_FLAG_STOP</tt> </td><td width=20><td>Lötstopmaske immer generieren</td></tr>
|
|
</table>
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>VIA_SHAPE_SQUARE</tt> </td><td width=20><td>square</td></tr>
|
|
<tr><td><tt>VIA_SHAPE_ROUND</tt> </td><td width=20><td>round</td></tr>
|
|
<tr><td><tt>VIA_SHAPE_OCTAGON</tt> </td><td width=20><td>octagon</td></tr>
|
|
<tr><td><tt>VIA_SHAPE_ANNULUS</tt> </td><td width=20><td>annulus</td></tr>
|
|
<tr><td><tt>VIA_SHAPE_THERMAL</tt> </td><td width=20><td>thermal</td></tr>
|
|
</table>
|
|
<h2>Anmerkung</h2>
|
|
Der Durchmesser und die Form des Vias hängen davon ab für welchen Layer es gezeichnet
|
|
werden soll, denn es können in den <a href=#133>Design Rules</a> unterschiedliche
|
|
Werte definiert werden.
|
|
Gibt man einen der <a href=#191>Layer</a> LAYER_TOP...LAYER_BOTTOM, LAYER_TSTOP oder LAYER_BSTOP
|
|
als Index für diameter oder shape an, wird das Via entsprechend den Vorgaben aus den Design Rules
|
|
berechnet. Wird LAYER_VIAS angegeben, wird der ursprüngliche Wert mit dem das Via definiert wurde,
|
|
verwendet.
|
|
<p>
|
|
Beachten Sie bitte, dass <tt>diameter</tt> und <tt>shape</tt> auf jeden Fall den
|
|
Durchmesser bzw. die Form zurückliefern, welche ein Via in dem gegebenen Layer hätte,
|
|
selbst wenn das konkrete Via diesen Layer gar nicht überdeckt (oder wenn dieser Layer
|
|
im Layer-Setup überhaupt nicht benutzt wird).
|
|
<p>
|
|
<tt>start</tt> und <tt>end</tt> liefern den Layer, in dem dieses Via beginnt bzw. endet.
|
|
Der Wert von <tt>start</tt> ist dabei immer kleiner als der von <tt>end</tt>.
|
|
<p>
|
|
<tt>drillsymbol</tt> liefert die Nummer des Bohrsymbols, welches diesem Bohrdurchmesser
|
|
zugeordnet worden ist (siehe die Liste der definierten Bohrsymbole im Handbuch).
|
|
Ein Wert von <tt>0</tt> bedeutet, dass diesem Bohrdurchmesser kein Bohrsymbol zugeordnet ist.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
board(B) {
|
|
B.signals(S) {
|
|
S.vias(V) {
|
|
printf("Via: (%d %d)\n", V.x, V.y);
|
|
}
|
|
}
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=209>
|
|
<h1>UL_WIRE</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Data members</b>
|
|
<dd>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>arc</tt> </td><td width=20><td><a href=#172>UL_ARC</a></td></tr>
|
|
<tr><td><tt>cap</tt> </td><td width=20><td><a href=#166>int</a> (<tt>CAP_...</tt>)</td></tr>
|
|
<tr><td><tt>curve</tt> </td><td width=20><td><a href=#167>real</a></td></tr>
|
|
<tr><td><tt>layer</tt> </td><td width=20><td><a href=#166>int</a></td></tr>
|
|
<tr><td><tt>style</tt> </td><td width=20><td><a href=#166>int</a> (<tt>WIRE_STYLE_...</tt>)</td></tr>
|
|
<tr><td><tt>width</tt> </td><td width=20><td><a href=#166>int</a></td></tr>
|
|
<tr><td><tt>x1, y1</tt> </td><td width=20><td><a href=#166>int</a> (Anfangspunkt)</td></tr>
|
|
<tr><td><tt>x2, y2</tt> </td><td width=20><td><a href=#166>int</a> (Endpunkt)</td></tr>
|
|
</table>
|
|
<dt>
|
|
<b>Loop members</b>
|
|
<dd>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>pieces()</tt> </td><td width=20><td><a href=#209>UL_WIRE</a> (siehe Anmerkung)</td></tr>
|
|
</table>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#175>UL_BOARD</a>,
|
|
<a href=#194>UL_PACKAGE</a>,
|
|
<a href=#202>UL_SEGMENT</a>,
|
|
<a href=#203>UL_SHEET</a>,
|
|
<a href=#204>UL_SIGNAL</a>,
|
|
<a href=#206>UL_SYMBOL</a>,
|
|
<a href=#172>UL_ARC</a>
|
|
<h2>Konstanten</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>CAP_FLAT</tt> </td><td width=20><td>flache Kreisbogen-Enden</td></tr>
|
|
<tr><td><tt>CAP_ROUND</tt> </td><td width=20><td>runde Kreisbogen-Enden</td></tr>
|
|
<tr><td><tt>WIRE_STYLE_CONTINUOUS</tt> </td><td width=20><td>durchgezogen</td></tr>
|
|
<tr><td><tt>WIRE_STYLE_LONGDASH</tt> </td><td width=20><td>lang gestrichelt</td></tr>
|
|
<tr><td><tt>WIRE_STYLE_SHORTDASH</tt> </td><td width=20><td>kurz gestrichelt</td></tr>
|
|
<tr><td><tt>WIRE_STYLE_DASHDOT</tt> </td><td width=20><td>Strich-Punkt-Linie</td></tr>
|
|
</table>
|
|
<h2>Wire Style</h2>
|
|
Bei einem UL_WIRE mit anderem <i>style</i> als <tt>WIRE_STYLE_CONTINUOUS</tt>, kann
|
|
über das Loop-Member <tt>pieces()</tt> auf die individuellen Teile, die z. B. eine gestrichelte
|
|
Linie darstellen, zugegriffen werden. Wenn <tt>pieces()</tt> für UL_WIRE mit
|
|
<tt>WIRE_STYLE_CONTINUOUS</tt> aufgerufen wird, erhält man ein Segment, das
|
|
genau dem original UL_WIRE entspricht. Das Loop-Member <tt>pieces()</tt> kann nicht
|
|
von UL_WIRE aus aufgerufen werden, wenn dieser selbst schon über <tt>pieces()</tt>
|
|
aufgerufen wurde (das würde eine unendliche Schleife verursachen).
|
|
<h2>Kreisbögen auf Wire-Ebene</h2>
|
|
Kreisbögen sind zunächst einfach nur Wires, mit einigen zusätzlichen Eigenschaften.
|
|
In erster Näherung werden Kreisbögen genauso behandelt wie Wires, das heisst sie haben
|
|
einen Anfangs- und Endpunkt, eine Breite und einen Linientyp. Hinzu kommen auf
|
|
Wire-Ebene die Parameter <i>cap</i> und <i>curve</i>. <i>cap</i> gibt an ob die Kreisbogen-Enden
|
|
rund oder flach sind, und <i>curve</i> bestimmt die "Krümmung" des Kreisbogens.
|
|
Der gültige Bereich für <i>curve</i> ist <tt>-360</tt>..<tt>+360</tt>, wobei der Wert
|
|
angibt aus welchem Anteil eines Vollkreises der Kreisbogen besteht. Ein Wert von <tt>90</tt>
|
|
beispielsweise steht für einen Viertelkreis, während <tt>180</tt> einen Halbkreis
|
|
ergibt. Der maximale Wert von <tt>360</tt> kann nur theoretisch erreicht werden, da dies
|
|
bedeuten würde, dass der Kreisbogen aus einem vollen Kreis besteht, der, weil Anfangs- und
|
|
Endpunkt auf dem Kreis liegen müssen, einen unendlich großen Durchmesser haben müsste.
|
|
Positive Werte für <i>curve</i> bedeuten, dass der Kreisbogen im mathematisch positiven Sinne
|
|
(also gegen den Uhrzeigersinn) gezeichnet wird. Falls <i>curve</i> gleich <tt>0</tt>
|
|
ist, handelt es sich um eine gerade Linie ("keine Krümmung"), was letztlich einem
|
|
Wire entspricht.
|
|
<p>
|
|
Der <i>cap</i> Parameter ist nur für echte Kreisbögen von Bedeutung und liefert für gerade
|
|
Wires immer <tt>CAP_ROUND</tt>.
|
|
<p>
|
|
Ob ein UL_WIRE ein Kreisbogen ist oder nicht kann durch Abfragen des boolschen Rückgabewertes
|
|
des <tt>arc</tt> Data Members herausgefunden werden. Falls dieses <tt>0</tt> liefert,
|
|
liegt ein gerader Wire vor, ansonsten ein Kreisbogen. Liefert <tt>arc</tt> nicht <tt>0</tt>
|
|
so darf es weiter dereferenziert werden um die für einen <a href=#172>UL_ARC</a>
|
|
spezifischen Parameter Start- und Endwinkel, Radius und Mittelpunkt zu erfragen.
|
|
Diese zusätzlichen Parameter sind normalerweise nur von Bedeutung wenn der Kreisbogen
|
|
gezeichnet oder anderweitig verarbeitet werden soll, und dabei die tatsächliche Form
|
|
eine Rolle spielt.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
board(B) {
|
|
B.wires(W) {
|
|
printf("Wire: (%d %d) (%d %d)\n",
|
|
W.x1, W.y1, W.x2, W.y2);
|
|
}
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=210>
|
|
<h1>Definitionen</h1>
|
|
Konstanten, Variablen und Funktionen müssen definiert werden,
|
|
bevor sie in einem User-Language-Programm verwendet werden können.
|
|
<p>
|
|
Es gibt drei Arten von Definitionen:
|
|
<ul>
|
|
<li><a href=#211>Konstanten-Definitionen</a>
|
|
<li><a href=#212>Variablen-Definitionen</a>
|
|
<li><a href=#213>Funktions-Definitionen</a>
|
|
</ul>
|
|
Der Gültigkeitsbereich einer <i>Konstanten-</i> oder
|
|
<i>Variablen</i>-Definition reicht von der Zeile, in der sie definiert
|
|
wurde, bis zum Ende des gegenwärtigen
|
|
<a href=#229>Blocks</a>, oder bis zum Ende des
|
|
User-Language-Programms, wenn die Definition ausserhalb aller Blöcke steht.
|
|
<p>
|
|
Der Gültigkeitsbereich einer <i>Funktions</i>-Definition reicht
|
|
von der schließenden geschweiften Klammer
|
|
(<tt>}</tt>) des Funktionsrumpfes bis zum Ende des User-Language-Programms.
|
|
|
|
|
|
<a name=211>
|
|
<h1>Konstanten-Definitionen</h1>
|
|
<i>Konstanten</i> werden mit Hilfe des Schlüsselworts
|
|
<tt>enum</tt> definiert, wie in
|
|
<pre>
|
|
enum { a, b, c };
|
|
</pre>
|
|
womit man den drei Konstanten <tt>a</tt>, <tt>b</tt> und <tt>c</tt>
|
|
die Werte <tt>0</tt>, <tt>1</tt> und <tt>2</tt> zuweisen würde.
|
|
<p>
|
|
Konstanten kann man auch mit bestimmten Werten initialisieren, wie in
|
|
<pre>
|
|
enum { a, b = 5, c };
|
|
</pre>
|
|
wo <tt>a</tt> den Wert <tt>0</tt>, <tt>b</tt> den Wert <tt>5</tt> und
|
|
<tt>c</tt> den Wert <tt>6</tt> erhält.
|
|
|
|
|
|
<a name=212>
|
|
<h1>Variablen-Definitionen</h1>
|
|
Die allgemeine Syntax einer <i>Variablen-Definition</i> ist
|
|
<pre>
|
|
[numeric] type identifier [= initializer][, ...];
|
|
</pre>
|
|
wobei <tt>type</tt> ein
|
|
<a href=#164>Daten-</a> oder
|
|
<a href=#171>Objekt-Typ</a> ist,
|
|
<tt>identifier</tt> ist der Name der Variablen, und <tt>initializer</tt>
|
|
ist ein optionaler Initialisierungswert.
|
|
<p>
|
|
Mehrfach-Variablen-Definitionen desselben <tt>Typs</tt> werden durch
|
|
Kommas (<tt>,</tt>) getrennt.
|
|
<p>
|
|
Wenn auf <tt>identifier</tt> ein Paar
|
|
<a href=#157>eckiger Klammern</a> (<tt>[]</tt>) folgt,
|
|
wird ein Array von Variablen des gegebenen <tt>Typs</tt> definiert.
|
|
Die Größe des Arrays wird zur Laufzeit automatisch bestimmt.
|
|
<p>
|
|
Das optionale Schlüsselwort <tt>numeric</tt> kann mit
|
|
<a href=#168>String</a>-Arrays verwendet werden,
|
|
um sie alphanumerisch mit der Funktion
|
|
<a href=#264>sort()</a> sortieren zu lassen.
|
|
<p>
|
|
Standardmäßig (wenn kein <tt>Initializer</tt> vorhanden ist),
|
|
werden
|
|
<a href=#164>Daten-Variablen</a> auf <tt>0</tt> gesetzt
|
|
(oder <tt>""</tt>, falls es sich um einen String handelt), und
|
|
<a href=#171>Objekt -Variablen</a> werden mit
|
|
"invalid" initialisiert.
|
|
<h2>Beispiele</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>int i;</tt> </td><td width=20><td>definiert eine <a href=#166>int</a>-Variable mit dem Namen <tt>i</tt></td></tr>
|
|
<tr><td><tt>string s = "Hello";</tt> </td><td width=20><td>definiert eine <a href=#168>string</a>-Variable mit dem Namen <tt>s</tt> und initialisiert sie mit <tt>"Hello"</tt></td></tr>
|
|
<tr><td><tt>real a, b = 1.0, c;</tt> </td><td width=20><td>definiert drei <a href=#167>real</a>-Variablen mit den Namen <tt>a</tt>, <tt>b</tt> und <tt>c</tt> und initialisiert <tt>b</tt> mit dem Wert <tt>1.0</tt></td></tr>
|
|
<tr><td><tt>int n[] = { 1, 2, 3 };</tt> </td><td width=20><td>definiert ein Array of <a href=#166>int</a> und initialisiert die ersten drei Elemente mit <tt>1</tt>, <tt>2</tt> und <tt>3</tt></td></tr>
|
|
<tr><td><tt>numeric string names[];</tt> </td><td width=20><td>definiert ein <a href=#168>string</a>-Array das alphanumerisch sortiert werden kann</td></tr>
|
|
<tr><td><tt>UL_WIRE w;</tt> </td><td width=20><td>definiert ein <a href=#209>UL_WIRE</a>-Objekt mit dem Namen <tt>w</tt></td></tr>
|
|
</table>
|
|
Die Members von Elementen eines Arrays von <a href=#171>Objekt-Typen</a> können nicht direkt angesprochen werden:
|
|
<pre>
|
|
UL_SIGNAL signals[];
|
|
...
|
|
UL_SIGNAL s = signals[0];
|
|
printf("%s", s.name);
|
|
</pre>
|
|
|
|
|
|
<a name=213>
|
|
<h1>Funktions-Definitionen</h1>
|
|
Sie können Ihre eigenen User-Language-Funktionen schreiben und sie genau so
|
|
aufrufen wie
|
|
<a href=#243>Builtin-Functions</a>.
|
|
<p>
|
|
Die allgemeine Syntax einer <i>Funktions-Definition</i> lautet
|
|
<pre>
|
|
type identifier(parameters)
|
|
{
|
|
statements
|
|
}
|
|
</pre>
|
|
wobei <tt>type</tt> ein
|
|
<a href=#164>Daten-</a> oder
|
|
<a href=#171>Objekt-Typ</a> ist,
|
|
<tt>identifier</tt> der Name einer Funktion,
|
|
<tt>parameters</tt> eine durch Kommas getrennte Liste
|
|
von Parameter-Definitionen und
|
|
<tt>statements</tt> eine Reihe von <a href=#228>Statements</a>.
|
|
<p>
|
|
Funktionen die keinen Wert zurückgeben, haben den Typ <tt>void</tt>.
|
|
<p>
|
|
Eine Funktion muss definiert werden, <b>bevor</b> sie aufgerufen werden kann,
|
|
und Funktionsaufrufe können nicht rekursiv sein (eine Funktion kann sich nicht
|
|
selbst aufrufen).
|
|
<p>
|
|
Die Statements im Funktionsrumpf können die Werte der Parameter ändern,
|
|
das hat aber keinen Einfluss auf die Argumente des
|
|
<a href=#227>Funktionsaufrufs</a>.
|
|
<p>
|
|
Die Ausführung einer Funktion kann mit dem
|
|
<tt><a href=#237>return</a></tt>-Statement beendet werden.
|
|
Ohne <tt>return</tt>-Statement wird der Funktionsrumpf bis zu seiner
|
|
schließenden geschweiften Klammer
|
|
(<tt>}</tt>) ausgeführt.
|
|
<p>
|
|
Ein Aufruf der <tt><a href=#260>exit()</a></tt>-Funktion beendet
|
|
das gesamte User-Language-Programm.
|
|
<h2>Die spezielle Funktion <tt>main()</tt></h2>
|
|
Wenn Ihr User-Language-Programm eine Funktion namens
|
|
<tt>main()</tt> enthält, wird diese Funktion explizit als Hauptfunktion
|
|
aufgerufen. Ihr Rückgabewert ist der
|
|
<a href=#140>Rückgabewert</a> des Programms.
|
|
<p>
|
|
Kommandozeilen-Argumente sind für das Programm über die globalen
|
|
<a href=#242>Builtin-Variablen</a> <tt>argc</tt> und <tt>argv</tt>
|
|
verfügbar.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
int CountDots(string s)
|
|
{
|
|
int dots = 0;
|
|
for (int i = 0; s[i]; ++i)
|
|
if (s[i] == '.')
|
|
++dots;
|
|
return dots;
|
|
}
|
|
string dotted = "This.has.dots...";
|
|
output("test") {
|
|
printf("Number of dots: %d\n",
|
|
CountDots(dotted));
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=214>
|
|
<h1>Operatoren</h1>
|
|
Die folgende Tabelle listet alle User-Language-Operatoren in der Reihenfolge
|
|
ihrer Priorität auf (<i>Unary</i> hat die höchste Priorität,
|
|
<i>Comma</i> die niedrigste):
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td>Unary </td><td width=20><td><tt><a href=#216>!</a> <a href=#215>~</a> <a href=#219>+ - ++ --</a></tt></td></tr>
|
|
<tr><td>Multiplicative </td><td width=20><td><tt><a href=#219>* / %</a></tt></td></tr>
|
|
<tr><td>Additive </td><td width=20><td><tt><a href=#219>+ -</a></tt></td></tr>
|
|
<tr><td>Shift </td><td width=20><td><tt><a href=#215><< >></a></tt></td></tr>
|
|
<tr><td>Relational </td><td width=20><td><tt><a href=#217>< <= > >=</a></tt></td></tr>
|
|
<tr><td>Equality </td><td width=20><td><tt><a href=#217>== !=</a></tt></td></tr>
|
|
<tr><td>Bitwise AND </td><td width=20><td><tt><a href=#215>&</a></tt></td></tr>
|
|
<tr><td>Bitwise XOR </td><td width=20><td><tt><a href=#215>^</a></tt></td></tr>
|
|
<tr><td>Bitwise OR </td><td width=20><td><tt><a href=#215>|</a></tt></td></tr>
|
|
<tr><td>Logical AND </td><td width=20><td><tt><a href=#216>&&</a></tt></td></tr>
|
|
<tr><td>Logical OR </td><td width=20><td><tt><a href=#216>||</a></tt></td></tr>
|
|
<tr><td>Conditional </td><td width=20><td><tt><a href=#218>?:</a></tt></td></tr>
|
|
<tr><td>Assignment </td><td width=20><td><tt><a href=#219>= *= /= %= += -=</a> <a href=#215>&= ^= |= <<= >>=</a></tt></td></tr>
|
|
<tr><td>Comma </td><td width=20><td><tt><a href=#218>,</a></tt></td></tr>
|
|
</table>
|
|
<p>
|
|
Die Assoziativität ist <b>links nach rechts</b> für alle Operatoren
|
|
ausser für
|
|
<i>Unary</i>, <i>Conditional</i> und <i>Assignment</i>,
|
|
die <b>rechts-nach-links</b>-assoziativ sind.
|
|
<p>
|
|
Die normale Operator-Priorität kann durch den Gebrauch von
|
|
<a href=#158>runden Klammern</a> geändert werden.
|
|
|
|
|
|
<a name=215>
|
|
<h1>Bitweise Operatoren</h1>
|
|
Bitweise Operatoren kann man nur auf die Datentypen
|
|
<tt><a href=#165>char</a></tt> und
|
|
<tt><a href=#166>int</a></tt> anwenden.
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><b>Unary</b> </td><td width=20><td></td></tr>
|
|
<tr><td><tt>~</tt> </td><td width=20><td>Bitwise (1's) complement</td></tr>
|
|
<tr><td><b>Binary</b> </td><td width=20><td></td></tr>
|
|
<tr><td><tt><<</tt> </td><td width=20><td>Shift left</td></tr>
|
|
<tr><td><tt>>></tt> </td><td width=20><td>Shift right</td></tr>
|
|
<tr><td><tt>&</tt> </td><td width=20><td>Bitwise AND</td></tr>
|
|
<tr><td><tt>^</tt> </td><td width=20><td>Bitwise XOR</td></tr>
|
|
<tr><td><tt>|</tt> </td><td width=20><td>Bitwise OR</td></tr>
|
|
<tr><td><b>Assignment</b> </td><td width=20><td></td></tr>
|
|
<tr><td><tt>&=</tt> </td><td width=20><td>Assign bitwise AND</td></tr>
|
|
<tr><td><tt>^=</tt> </td><td width=20><td>Assign bitwise XOR</td></tr>
|
|
<tr><td><tt>|=</tt> </td><td width=20><td>Assign bitwise OR</td></tr>
|
|
<tr><td><tt><<=</tt> </td><td width=20><td>Assign left shift</td></tr>
|
|
<tr><td><tt>>>=</tt> </td><td width=20><td>Assign right shift</td></tr>
|
|
</table>
|
|
|
|
|
|
<a name=216>
|
|
<h1>Logische Operatoren</h1>
|
|
Logische Operatoren arbeiten mit
|
|
<a href=#221>Ausdrücken</a>
|
|
von jedem Datentyp.
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><b>Unary</b> </td><td width=20><td></td></tr>
|
|
<tr><td><tt>!</tt> </td><td width=20><td>Logical NOT</td></tr>
|
|
<tr><td><b>Binary</b> </td><td width=20><td></td></tr>
|
|
<tr><td><tt>&&</tt> </td><td width=20><td>Logical AND</td></tr>
|
|
<tr><td><tt>||</tt> </td><td width=20><td>Logical OR</td></tr>
|
|
</table>
|
|
<p>
|
|
Die Verwendung eines
|
|
<tt><a href=#168>String</a></tt>-Ausdrucks mit einem
|
|
logischen Operator prüft, ob ein String leer ist.
|
|
<p>
|
|
Die Verwendung eines
|
|
<a href=#171>Objekt-Typs</a> mit einem logischen Operator
|
|
prüft, ob dieses Objekt gültige Daten enthält.
|
|
|
|
|
|
<a name=217>
|
|
<h1>Vergleichs-Operatoren</h1>
|
|
Vergleichs-Operatoren können mit
|
|
<a href=#221>Ausdrücken</a> von jedem Datentyp angewendet
|
|
werden, ausgenommen
|
|
<a href=#171>Objekt-Typen</a>.
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt><</tt> </td><td width=20><td>Kleiner als</td></tr>
|
|
<tr><td><tt><=</tt> </td><td width=20><td>Kleiner gleich</td></tr>
|
|
<tr><td><tt>></tt> </td><td width=20><td>Größer als</td></tr>
|
|
<tr><td><tt>>=</tt> </td><td width=20><td>Größer gleich</td></tr>
|
|
<tr><td><tt>==</tt> </td><td width=20><td>Gleich</td></tr>
|
|
<tr><td><tt>!=</tt> </td><td width=20><td>Ungleich</td></tr>
|
|
</table>
|
|
|
|
|
|
<a name=218>
|
|
<h1>Evaluation-Operatoren</h1>
|
|
Evaluation-Operatoren werden verwendet, um
|
|
<a href=#221>Ausdrücke</a> auszuwerten, die auf einer
|
|
Bedingung basieren, oder um eine Sequenz von Ausdrücken zu gruppieren
|
|
und sie als einen Ausdruck auszuwerten.
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>?:</tt> </td><td width=20><td>Conditional</td></tr>
|
|
<tr><td><tt>,</tt> </td><td width=20><td>Komma</td></tr>
|
|
</table>
|
|
<p>
|
|
Der <i>Conditional</i>-Operator wird verwendet, um eine Entscheidung
|
|
innerhalb eines Ausdrucks zu treffen, wie in
|
|
<pre>
|
|
int a;
|
|
// ...code that calculates 'a'
|
|
string s = a ? "True" : "False";
|
|
</pre>
|
|
was folgender Konstruktion entspricht
|
|
<pre>
|
|
int a;
|
|
string s;
|
|
// ...code that calculates 'a'
|
|
if (a)
|
|
s = "True";
|
|
else
|
|
s = "False";
|
|
</pre>
|
|
aber der Vorteil des Conditional-Operators ist, dass er innerhalb des
|
|
Ausdrucks verwendet werden kann.
|
|
<p>
|
|
Der <i>Komma</i>-Operator wird verwendet, um eine Sequenz von
|
|
Ausdrücken von links nach rechts auszuwerten; Typ und Wert des rechten
|
|
Operanden werden als Ergebnis verwendet.
|
|
<p>
|
|
Beachten Sie, dass Argumente in einem Funktionsaufruf und
|
|
Mehrfach-Variablen-Deklarationen ebenfalls Kommas als Trennzeichen verwenden.
|
|
Dabei handelt es sich aber <b>nicht</b> um den Komma-Operator!
|
|
|
|
|
|
<a name=219>
|
|
<h1>Arithmetische Operatoren</h1>
|
|
Arithmetische Operatoren lassen sich auf die Datentypen
|
|
<tt><a href=#165>char</a></tt>,
|
|
<tt><a href=#166>int</a></tt> und
|
|
<tt><a href=#167>real</a></tt>
|
|
anwenden (ausser <tt>++</tt>, <tt>--</tt>, <tt>%</tt> und <tt>%=</tt>).
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><b>Unary</b> </td><td width=20><td></td></tr>
|
|
<tr><td><tt>+</tt> </td><td width=20><td>Unary plus</td></tr>
|
|
<tr><td><tt>-</tt> </td><td width=20><td>Unary minus</td></tr>
|
|
<tr><td><tt>++</tt> </td><td width=20><td>Pre- oder postincrement</td></tr>
|
|
<tr><td><tt>--</tt> </td><td width=20><td>Pre- oder postdecrement</td></tr>
|
|
<tr><td><b>Binary</b> </td><td width=20><td></td></tr>
|
|
<tr><td><tt>*</tt> </td><td width=20><td>Multiply</td></tr>
|
|
<tr><td><tt>/</tt> </td><td width=20><td>Divide</td></tr>
|
|
<tr><td><tt>%</tt> </td><td width=20><td>Remainder (modulus)</td></tr>
|
|
<tr><td><tt>+</tt> </td><td width=20><td>Binary plus</td></tr>
|
|
<tr><td><tt>-</tt> </td><td width=20><td>Binary minus</td></tr>
|
|
<tr><td><b>Assignment</b> </td><td width=20><td></td></tr>
|
|
<tr><td><tt>=</tt> </td><td width=20><td>Simple assignment</td></tr>
|
|
<tr><td><tt>*=</tt> </td><td width=20><td>Assign product</td></tr>
|
|
<tr><td><tt>/=</tt> </td><td width=20><td>Assign quotient</td></tr>
|
|
<tr><td><tt>%=</tt> </td><td width=20><td>Assign remainder (modulus)</td></tr>
|
|
<tr><td><tt>+=</tt> </td><td width=20><td>Assign sum</td></tr>
|
|
<tr><td><tt>-=</tt> </td><td width=20><td>Assign difference</td></tr>
|
|
</table>
|
|
<p>
|
|
<b>Siehe auch</b> <a href=#220>String-Operatoren</a>
|
|
|
|
|
|
<a name=220>
|
|
<h1>String-Operatoren</h1>
|
|
String-Operatoren lassen sich mit den Datentypen
|
|
<tt><a href=#165>char</a></tt>,
|
|
<tt><a href=#166>int</a></tt> und
|
|
<tt><a href=#168>string</a></tt> anwenden.
|
|
Der linke Operand muss immer vom Typ
|
|
<tt><a href=#168>string</a></tt> sein.
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><b>Binary</b> </td><td width=20><td></td></tr>
|
|
<tr><td><tt>+</tt> </td><td width=20><td>Concatenation</td></tr>
|
|
<tr><td><b>Assignment</b> </td><td width=20><td></td></tr>
|
|
<tr><td><tt>=</tt> </td><td width=20><td>Simple assignment</td></tr>
|
|
<tr><td><tt>+=</tt> </td><td width=20><td>Append to string</td></tr>
|
|
</table>
|
|
<p>
|
|
Der <tt>+</tt>-Operator fasst zwei Strings zusammen oder
|
|
fügt ein Zeichen am Ende eines Strings hinzu und
|
|
gibt den resultierenden String zurück.
|
|
<p>
|
|
Der <tt>+=</tt>-Operator fügt einen String oder eine Zeichen an das Ende
|
|
eines gegebenen Stings an.
|
|
<p>
|
|
<b>Siehe auch</b> <a href=#219>Arithmetische Operatoren</a>
|
|
|
|
|
|
<a name=221>
|
|
<h1>Ausdrücke</h1>
|
|
Es gibt folgende <i>Ausdrücke:</i>
|
|
<ul>
|
|
<li><a href=#222>Arithmetischer Ausdruck</a>
|
|
<li><a href=#223>Zuweisungs-Ausdruck</a>
|
|
<li><a href=#224>String-Ausdruck</a>
|
|
<li><a href=#225>Komma-Ausdruck</a>
|
|
<li><a href=#226>Bedingter Ausdruck</a>
|
|
<li><a href=#227>Funktionsaufruf</a>
|
|
</ul>
|
|
Ausdrücke können mit Hilfe von
|
|
<a href=#158>runden Klammern</a> gruppiert werden
|
|
und dürfen rekursiv aufgerufen werden, was bedeutet, dass
|
|
ein Ausdruck aus Unterausdrücken bestehen darf.
|
|
|
|
|
|
<a name=222>
|
|
<h1>Arithmetischer Ausdruck</h1>
|
|
Ein <i>arithmetischer Ausdruck</i> ist jede Kombination von
|
|
numerischen Operanden und
|
|
<a href=#219>arithmetischem Operator</a> oder
|
|
<a href=#215>bitweisem Operator</a>.
|
|
<h2>Beispiele</h2>
|
|
<pre>
|
|
a + b
|
|
c++
|
|
m << 1
|
|
</pre>
|
|
|
|
|
|
<a name=223>
|
|
<h1>Zuweisungs-Ausdruck</h1>
|
|
Ein <i>Zuweisungs-Ausdruck</i> besteht aus einer Variablen auf der
|
|
linken Seite eines <a href=#219>Zuweisungsoperators</a> und
|
|
einem Ausdruck auf der rechten Seite.
|
|
<h2>Beispiele</h2>
|
|
<pre>
|
|
a = x + 42
|
|
b += c
|
|
s = "Hello"
|
|
</pre>
|
|
|
|
|
|
<a name=224>
|
|
<h1>String-Ausdruck</h1>
|
|
Ein <i>String-Ausdruck</i> ist jede Kombination von
|
|
<a href=#168>string-</a> und <a href=#165>char-</a>
|
|
Operanden und einem <a href=#220>String-Operator</a>.
|
|
<h2>Beispiele</h2>
|
|
<pre>
|
|
s + ".brd"
|
|
t + 'x'
|
|
</pre>
|
|
|
|
|
|
<a name=225>
|
|
<h1>Komma-Ausdruck</h1>
|
|
Ein <i>Komma-Ausdruck</i> ist eine Sequenz von Ausdrücken, die mit dem
|
|
<a href=#218>Komma-Operator</a> abgegrenzt werden.
|
|
<p>
|
|
Komma-Ausdrücke werden von links nach rechts ausgewertet, und
|
|
das Ergebnis eines Komma-Ausdrucks ist der Typ und der Wert des
|
|
am weitesten rechts stehenden Ausdrucks.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
i++, j++, k++
|
|
</pre>
|
|
|
|
|
|
<a name=226>
|
|
<h1>Bedingter Ausdruck</h1>
|
|
Ein <i>bedingter Ausdruck</i> verwendet den
|
|
<a href=#218>Conditional-Operator</a>, um eine Entscheidung
|
|
innerhalb eines Ausdrucks zu treffen.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
int a;
|
|
// ...code that calculates 'a'
|
|
string s = a ? "True" : "False";
|
|
</pre>
|
|
|
|
|
|
<a name=227>
|
|
<h1>Funktionsaufruf</h1>
|
|
Ein <i>Funktionsaufruf</i> transferiert den Programmfluss zu einer
|
|
<a href=#213>benutzerdefinierten Funktion</a> oder einer
|
|
<a href=#243>Builtin-Function</a>.
|
|
Die formalen Parameter, die in der
|
|
<a href=#213>Funktions-Definition</a> definiert sind,
|
|
werden ersetzt durch die Werte der Ausdrücke, die als aktuelle Argumente
|
|
des Funktionsaufrufs dienen.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
int p = strchr(s, 'b');
|
|
</pre>
|
|
|
|
|
|
<a name=228>
|
|
<h1>Statements</h1>
|
|
Ein <i>Statement</i> kann folgendes sein:
|
|
<ul>
|
|
<li><a href=#229>Compound-Statement (Verbundanweisung)</a>
|
|
<li><a href=#231>Control-Statement (Steueranweisung)</a>
|
|
<li><a href=#230>Expression-Statement (Ausdrucksanweisung)</a>
|
|
<li><a href=#293>Builtin-Statement</a>
|
|
<li><a href=#211>Konstanten-Definition</a>
|
|
<li><a href=#212>Variablen-Definition</a>
|
|
</ul>
|
|
Statements spezifizieren die Programmausführung. Wenn keine Control-Statements
|
|
vorhanden sind, werden Statements der Reihe nach in der Reihenfolge
|
|
ihres Auftretens in der ULP-Datei ausgeführt.
|
|
|
|
|
|
<a name=229>
|
|
<h1>Compound-Statement (Verbundanweisung)</h1>
|
|
Ein <i>Compound-Statement</i> (auch bekannt als <i>Block</i>)
|
|
ist eine Liste (kann auch leer sein) von Statements in geschweiften
|
|
Klammern (<tt>{}</tt>).
|
|
Syntaktisch kann ein Block als einzelnes Statement angesehen werden,
|
|
aber er steuert auch den Gültigkeitsbereich von Identifiern.
|
|
Ein
|
|
<a href=#149>Identifier</a>, der innerhalb eines Blocks
|
|
deklariert wird, gilt ab der Stelle, an der er definiert wurde, bis
|
|
zur schließenden geschweiften Klammer.
|
|
<p>
|
|
Compound-Statements können beliebig verschachtelt werden.
|
|
|
|
|
|
<a name=230>
|
|
<h1>Expression-Statement (Ausdrucksanweisung)</h1>
|
|
Ein <i>Expression-Statement</i> ist jeder beliebige
|
|
<a href=#221>Ausdruck</a>, gefolgt von einem
|
|
<a href=#161>Semikolon</a>.
|
|
<p>
|
|
Ein Expression-Statement wird ausgeführt, indem der Ausdruck ausgewertet
|
|
wird. Alle Nebeneffekte dieser Auswertung sind vollständig abgearbeitet, bevor
|
|
das nächste
|
|
<a href=#228>Statement</a> ausgeführt wird.
|
|
Die meisten Expression-Statements sind
|
|
<a href=#223>Zuweisungen</a> oder
|
|
<a href=#227>Funktionsaufrufe</a>.
|
|
<p>
|
|
Ein Spezialfall ist das <i>leere Statement</i>, das nur aus einem
|
|
<a href=#161>Semikolon</a> besteht.
|
|
Ein leeres Statement tut nichts, aber es ist nützlich in den Fällen,
|
|
in denen die ULP-Syntax ein Statement erwartet, aber Ihr Programm
|
|
keines benötigt.
|
|
|
|
|
|
<a name=231>
|
|
<h1>Control-Statements (Steueranweisungen)</h1>
|
|
<i>Control-Statements</i> werden verwendet, um den Programmfluss
|
|
zu steuern.
|
|
<p>
|
|
Iteration-Statements sind
|
|
<pre>
|
|
<a href=#234>do...while</a>
|
|
<a href=#235>for</a>
|
|
<a href=#239>while</a>
|
|
</pre>
|
|
Selection-Statements sind
|
|
<pre>
|
|
<a href=#236>if...else</a>
|
|
<a href=#238>switch</a>
|
|
</pre>
|
|
Jump-Statements sind
|
|
<pre>
|
|
<a href=#232>break</a>
|
|
<a href=#233>continue</a>
|
|
<a href=#237>return</a>
|
|
</pre>
|
|
|
|
|
|
<a name=232>
|
|
<h1>break</h1>
|
|
Das <i>break</i>-Statement hat die allgemeine Syntax
|
|
<pre>
|
|
break;
|
|
</pre>
|
|
und bricht sofort das <b>nächste</b> einschließende
|
|
<a href=#234>do...while-</a>,
|
|
<a href=#235>for-</a>,
|
|
<a href=#238>switch-</a> oder
|
|
<a href=#239>while-</a>Statement ab.
|
|
Dies gilt ebenso für <i>loop members</i> von <a href=#171>Objekt-Typen</a>.
|
|
<p>
|
|
Da all diese Statements gemischt und verschachtelt werden können,
|
|
stellen Sie bitte sicher, dass <tt>break</tt> vom korrekten Statement
|
|
aus ausgeführt wird.
|
|
|
|
|
|
<a name=233>
|
|
<h1>continue</h1>
|
|
Das <i>continue</i>-Statement hat die allgemeine Syntax
|
|
<pre>
|
|
continue;
|
|
</pre>
|
|
und transferiert die Steuerung direkt zur Testbedingung des
|
|
<b>nächsten</b> einschließenden
|
|
<a href=#234>do...while-</a>,
|
|
<a href=#239>while-</a>, oder
|
|
<a href=#235>for-</a>Statements oder zum Increment-Ausdruck
|
|
des <b>nächsten</b> einschließenden
|
|
<a href=#239>for</a>-Statements.
|
|
<p>
|
|
Da all diese Statements gemischt und verschachtelt werden können,
|
|
stellen Sie bitte sicher, dass <tt>continue</tt> das richtige Statement
|
|
betrifft.
|
|
|
|
|
|
<a name=234>
|
|
<h1>do...while</h1>
|
|
Das <i>do...while</i>-Statement hat die allgemeine Syntax
|
|
<pre>
|
|
do statement while (condition);
|
|
</pre>
|
|
und führt das <tt>statement</tt> aus, bis der <tt>condition</tt>-Ausdruck
|
|
null wird.
|
|
<p>
|
|
<tt>condition</tt> wird <b>nach</b> der ersten Ausführung von
|
|
<tt>statement</tt> getestet, was bedeutet, dass das Statement
|
|
wenigstens einmal ausgeführt wird.
|
|
<p>
|
|
Wenn kein
|
|
<tt><a href=#232>break</a></tt> oder
|
|
<tt><a href=#237>return</a></tt>
|
|
im <tt>statement</tt> vorkommt, muss das <tt>statement</tt>
|
|
den Wert der <tt>condition</tt> verändern, oder <tt>condition</tt> selbst
|
|
muss sich während der Auswertung ändern, um eine Endlosschleife zu
|
|
vermeiden.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
string s = "Trust no one!";
|
|
int i = -1;
|
|
do {
|
|
++i;
|
|
} while (s[i]);
|
|
</pre>
|
|
|
|
|
|
<a name=235>
|
|
<h1>for</h1>
|
|
Das <i>for</i>-Statement hat die allgemeine Syntax
|
|
<pre>
|
|
for ([init]; [test]; [inc])-Statement
|
|
</pre>
|
|
und führt folgende Schritte aus:
|
|
<ol>
|
|
<li>Wenn es einen Initialisierungs-Ausdruck <tt>init</tt> gibt, wird er ausgeführt.
|
|
<li>Wenn es einen <tt>test</tt>-Ausdruck gibt, wird er ausgeführt. Wenn das Ergebnis
|
|
ungleich null ist (oder wenn es keinen <tt>test</tt>-Ausdruck gibt), wird das
|
|
<tt>statement</tt> ausgeführt.
|
|
<li>Wenn es einen <tt>inc</tt>-Ausdruck gibt, wird er ausgeführt.
|
|
<li>Schließlich wird die Programmsteuerung wieder an Schritt 2 übergeben.
|
|
</ol>
|
|
Wenn es kein
|
|
<tt><a href=#232>break</a></tt> oder
|
|
<tt><a href=#237>return</a></tt>
|
|
im <tt>statement</tt> gibt, muss der <tt>inc</tt>-Ausdruck (oder das
|
|
<tt>statement</tt>) den Wert des <tt>test</tt>-Ausdrucks beeinflussen,
|
|
oder <tt>test</tt> selbst muss sich während der Auswertung ändern, um
|
|
eine Endlosschleife zu vermeiden.
|
|
<p>
|
|
Der Initialisierungs-Ausdruck <tt>init</tt> initialsiert normalerweise
|
|
einen oder mehrere Schleifenzähler. Er kann auch eine neue Variable
|
|
als Schleifenzähler definieren. Eine solche Variable ist bis zum
|
|
Ende des aktiven Blocks gültig.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
string s = "Trust no one!";
|
|
int sum = 0;
|
|
for (int i = 0; s[i]; ++i)
|
|
sum += s[i]; // sums up the characters in s
|
|
</pre>
|
|
|
|
|
|
<a name=236>
|
|
<h1>if...else</h1>
|
|
Das <i>if...else</i>-Statement hat die allgemeine Syntax
|
|
<pre>
|
|
if (expression)
|
|
t_statement
|
|
[else
|
|
f_statement]
|
|
</pre>
|
|
Der bedingte <tt>Ausdruck</tt> wird ausgewertet und, wenn der Wert ungleich
|
|
null ist, wird <tt>t_statement</tt> ausgeführt.
|
|
Andernfalls wird <tt>f_statement</tt> ausgeführt, sofern der
|
|
<tt>else</tt>-Teil vorhanden ist.
|
|
<p>
|
|
Der <tt>else</tt>-Teil bezieht sich immer auf das letzte <tt>if</tt>
|
|
ohne <tt>else</tt>.
|
|
Wenn Sie etwas anderes wollen, müssen Sie
|
|
<a href=#159>geschweifte Klammern</a> verwenden, um
|
|
die Statements zu gruppieren, wie in
|
|
<pre>
|
|
if (a == 1) {
|
|
if (b == 1)
|
|
printf("a == 1 and b == 1\n");
|
|
}
|
|
else
|
|
printf("a != 1\n");
|
|
</pre>
|
|
|
|
|
|
<a name=237>
|
|
<h1>return</h1>
|
|
Eine <a href=#213>Funktion</a> mit einem Return-Typ
|
|
ungleich <tt>void</tt> muss mindestens ein <i>return</i>-Statement
|
|
mit der Syntax
|
|
<pre>
|
|
return expression;
|
|
</pre>
|
|
enthalten, wobei
|
|
die Auswertung von <tt>expression</tt> einen Wert ergeben muss,
|
|
der kompatibel ist mit dem Return-Typ der Funktion.
|
|
<p>
|
|
Wenn die Funktion vom Typ <tt>void</tt> ist, kann ein <tt>return</tt>-Statement
|
|
ohne <tt>expression</tt> verwendet werden, um vom Funktionsaufruf zurückzukehren.
|
|
|
|
|
|
<a name=238>
|
|
<h1>switch</h1>
|
|
Das <i>switch</i>-Statement hat die allgemeine Syntax
|
|
<pre>
|
|
switch (sw_exp) {
|
|
case case_exp: case_statement
|
|
...
|
|
[default: def_statement]
|
|
}
|
|
</pre>
|
|
und erlaubt die Übergabe der Steuerung an eines von mehreren
|
|
<tt>case</tt>-Statements (mit "case" als Label), abhängig vom Wert des Ausdrucks
|
|
<tt>sw_exp</tt> (der vom Integral-Typ sein muss).
|
|
<p>
|
|
Jedes <tt>case_statement</tt> kann mit einem oder mehreren <tt>case</tt>-Labels
|
|
versehen sein.
|
|
Die Auswertung des Ausdrucks <tt>case_exp</tt> jedes <tt>case</tt>-Labels muss
|
|
einen konstanten Integer-Wert ergeben, der innerhalb des umschließenden
|
|
<tt>switch</tt>-Statements nur einmal vorkommt.
|
|
<p>
|
|
Es darf höchstens ein <tt>default</tt>-Label vorkommen.
|
|
<p>
|
|
Nach der Auswertung von <tt>sw_exp</tt> werden die <tt>case_exp</tt>-Ausdrücke
|
|
auf Übereinstimmung geprüft. Wenn eine Übereinstimmung gefunden wurde,
|
|
wird die Steuerung zum <tt>case_statement</tt> mit dem entsprechenden
|
|
<tt>case</tt>-Label transferiert.
|
|
<p>
|
|
Wird keine Übereinstimmung gefunden und gibt es ein <tt>default</tt>-Label,
|
|
dann erhält <tt>def_statement</tt> die Steuerung.
|
|
Andernfalls wird kein Statement innerhalb der
|
|
<tt>switch</tt>-Anweisung ausgeführt.
|
|
<p>
|
|
Die Programmausführung wird nicht beeinflusst, wenn <tt>case-</tt> und
|
|
<tt>default</tt>-Labels auftauchen. Die Steuerung wird einfach an das
|
|
folgende Statement übergeben.
|
|
<p>
|
|
Um die Programmausführung am Ende einer Gruppe von Statements für
|
|
ein bestimmtes
|
|
<tt>case</tt> zu stoppen, verwenden Sie das <a href=#232>break</a>-Statement.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
string s = "Hello World";
|
|
int vowels = 0, others = 0;
|
|
for (int i = 0; s[i]; ++i)
|
|
switch (toupper(s[i])) {
|
|
case 'A':
|
|
case 'E':
|
|
case 'I':
|
|
case 'O':
|
|
case 'U': ++vowels;
|
|
break;
|
|
default: ++others;
|
|
}
|
|
printf("There are %d vowels in '%s'\n", vowels, s);
|
|
</pre>
|
|
|
|
|
|
<a name=239>
|
|
<h1>while</h1>
|
|
Das <i>while</i>-Statement hat die allgemeine Syntax
|
|
<pre>
|
|
while (condition) statement
|
|
</pre>
|
|
und führt <tt>statement</tt> so lange aus, wie der <tt>condition</tt>-Ausdruck
|
|
ungleich null ist.
|
|
<p>
|
|
<tt>condition</tt> wird <b>vor</b> der erstmöglichen Ausführung
|
|
von <tt>statement</tt> getestet, was bedeutet, dass das Statement
|
|
überhaupt nicht ausgeführt wird, wenn <tt>condition</tt> von Anfang an
|
|
null ist.
|
|
<p>
|
|
Wenn kein
|
|
<tt><a href=#232>break</a></tt> oder
|
|
<tt><a href=#237>return</a></tt>
|
|
im <tt>statement</tt> vorkommt, muss das <tt>statement</tt>
|
|
den Wert der <tt>condition</tt> verändern, oder <tt>condition</tt> selbst
|
|
muss sich während der Auswertung ändern, um eine Endlosschleife zu
|
|
vermeiden.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
string s = "Trust no one!";
|
|
int i = 0;
|
|
while (s[i])
|
|
++i;
|
|
</pre>
|
|
|
|
|
|
<a name=240>
|
|
<h1>Builtins</h1>
|
|
Builtins sind <i>Konstanten</i>, <i>Variablen</i>, <i>Funktionen</i> und
|
|
<i>Statements</i>, die zusätzliche Informationen liefern
|
|
und die Manipulation der Daten erlauben.
|
|
<ul>
|
|
<li><a href=#241>Builtin-Constants</a>
|
|
<li><a href=#242>Builtin Variables</a>
|
|
<li><a href=#243>Builtin-Functions</a>
|
|
<li><a href=#293>Builtin-Statements</a>
|
|
</ul>
|
|
|
|
|
|
<a name=241>
|
|
<h1>Builtin-Constants</h1>
|
|
<i>Builtin-Constants</i> liefern Informationen über
|
|
Objekt-Parameter, wie die maximale empfohlene Namenslänge, Flags und so weiter.
|
|
<p>
|
|
Viele <a href=#171>Objekt-Typen</a> haben ihren
|
|
eigenen <b>Konstanten</b>-Bereich, in dem die Builtin-Constants
|
|
für das betreffende Objekt aufgelistet sind (siehe
|
|
z.B. <a href=#197>UL_PIN</a>).
|
|
<p>
|
|
Die folgenden Builtin-Constants sind zusätzlich zu denen definiert,
|
|
die für die einzelnen Objekt-Typen aufgeführt sind:
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>EAGLE_VERSION</tt> </td><td width=20><td>EAGLE-Programm-Versionsnummer (<a href=#166>int</a>)</td></tr>
|
|
<tr><td><tt>EAGLE_RELEASE</tt> </td><td width=20><td>EAGLE-Programm-Release-Nummer (<a href=#166>int</a>)</td></tr>
|
|
<tr><td><tt>EAGLE_SIGNATURE</tt> </td><td width=20><td>ein <a href=#168>String</a> der EAGLE-Programmnamen, -Version und -Copyright-Information enthält</td></tr>
|
|
<tr><td><tt>REAL_EPSILON</tt> </td><td width=20><td>die minimale positive <a href=#167>real</a> Zahl, so dass <tt>1.0 + REAL_EPSILON != 1.0</tt></td></tr>
|
|
<tr><td><tt>REAL_MAX</tt> </td><td width=20><td>der größte mögliche <a href=#167>real</a> Wert</td></tr>
|
|
<tr><td><tt>REAL_MIN</tt> </td><td width=20><td>der kleinste mögliche (positive!) <a href=#167>real</a> Wert<br>die kleinste darstellbare Zahl ist <tt>-REAL_MAX</tt></td></tr>
|
|
<tr><td><tt>INT_MAX</tt> </td><td width=20><td>der größte mögliche <a href=#166>int</a> Wert</td></tr>
|
|
<tr><td><tt>INT_MIN</tt> </td><td width=20><td>der kleinste mögliche <a href=#166>int</a> Wert</td></tr>
|
|
<tr><td><tt>PI</tt> </td><td width=20><td>der Wert von "pi" (3.14..., <a href=#167>real</a>)</td></tr>
|
|
<tr><td><tt>usage</tt> </td><td width=20><td>ein <a href=#168>string</a> der den Text der <tt><a href=#147>#usage</a></tt>-Direktive enthält</td></tr>
|
|
</table>
|
|
<p>
|
|
Diese Builtin-Constants enthalten die Directory-Pfade, die im
|
|
<a href=#14>Directories-Dialog</a> definiert wurden, wobei etwaige spezielle
|
|
Variablen (<tt>$HOME</tt> und <tt>$EAGLEDIR</tt>) durch ihre aktuellen Werte ersetzt wurden.
|
|
Da jeder Pfad aus mehreren Directories bestehen kann, sind diese Konstanten <a href=#168>string</a>-Arrays
|
|
mit jeweils einem einzelnen Directory in jedem Eintrag. Der erste leere Eintrag bedeutet das Ende
|
|
des Pfades:
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>path_lbr[]</tt> </td><td width=20><td>Libraries</td></tr>
|
|
<tr><td><tt>path_dru[]</tt> </td><td width=20><td>Design Rules</td></tr>
|
|
<tr><td><tt>path_ulp[]</tt> </td><td width=20><td>User Language Programs</td></tr>
|
|
<tr><td><tt>path_scr[]</tt> </td><td width=20><td>Scripts</td></tr>
|
|
<tr><td><tt>path_cam[]</tt> </td><td width=20><td>CAM Jobs</td></tr>
|
|
<tr><td><tt>path_epf[]</tt> </td><td width=20><td>Projects</td></tr>
|
|
</table>
|
|
<p>
|
|
Wenn Sie diese Konstanten dazu verwenden, einen vollständigen Dateinamen zu bilden, so
|
|
müssen Sie ein Directory-Trennzeichen benutzen, wie etwa in
|
|
<pre>
|
|
string s = path_lbr[0] + '/' + "mylib.lbr";
|
|
</pre>
|
|
<p>
|
|
Die im Moment durch den <a href=#102>USE</a>-Befehl benutzten Bibliotheken:
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>used_libraries[]</tt> </td><td width=20><td></td></tr>
|
|
</table>
|
|
|
|
|
|
<a name=242>
|
|
<h1>Builtin Variablen</h1>
|
|
<i>Builtin-Variablen</i> werden verwendet, um zur Laufzeit Informationen zu erhalten.
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>int argc</tt> </td><td width=20><td>Anzahl der Argumente, die an den <a href=#90>RUN</a> Befehl übergeben wurden</td></tr>
|
|
<tr><td><tt>string argv[]</tt> </td><td width=20><td>Argumente, die an den RUN-Befehl übergeben wurden (<tt>argv[0]</tt> ist der volle ULP-Datei-Name)</td></tr>
|
|
</table>
|
|
|
|
|
|
<a name=243>
|
|
<h1>Builtin-Functions</h1>
|
|
<i>Builtin-Functions</i> werden für spezielle Aufgaben benötigt,
|
|
z.B. formatierte Strings drucken, Daten-Arrays sortieren o.ä.
|
|
<p>
|
|
Sie können auch eigene <a href=#213>Funktionen</a>
|
|
definieren und sie dazu verwenden, um Ihre User-Language-Programme zu
|
|
strukturieren.
|
|
<p>
|
|
Builtin-Functions sind in folgende Kategorien eingeteilt:
|
|
<ul>
|
|
<li><a href=#244>Character-Funktionen</a>
|
|
<li><a href=#247>File-Handling-Funktionen</a>
|
|
<li><a href=#254>Mathematische Funktionen</a>
|
|
<li><a href=#259>Verschiedene Funktionen</a>
|
|
<li><a href=#268>Printing-Funktionen</a>
|
|
<li><a href=#271>String-Funktionen</a>
|
|
<li><a href=#285>Zeit-Funktionen</a>
|
|
<li><a href=#289>Objekt-Funktionen</a>
|
|
</ul>
|
|
Alphabetische Auflistung aller Builtin-Functions:
|
|
<ul>
|
|
<li><a href=#255>abs()</a>
|
|
<li><a href=#257>acos()</a>
|
|
<li><a href=#257>asin()</a>
|
|
<li><a href=#257>atan()</a>
|
|
<li><a href=#256>ceil()</a>
|
|
<li><a href=#290>clrgroup()</a>
|
|
<li><a href=#257>cos()</a>
|
|
<li><a href=#260>exit()</a>
|
|
<li><a href=#258>exp()</a>
|
|
<li><a href=#250>filedir()</a>
|
|
<li><a href=#248>fileerror()</a>
|
|
<li><a href=#250>fileext()</a>
|
|
<li><a href=#249>fileglob()</a>
|
|
<li><a href=#250>filename()</a>
|
|
<li><a href=#253>fileread()</a>
|
|
<li><a href=#250>filesetext()</a>
|
|
<li><a href=#251>filesize()</a>
|
|
<li><a href=#251>filetime()</a>
|
|
<li><a href=#256>floor()</a>
|
|
<li><a href=#256>frac()</a>
|
|
<li><a href=#291>ingroup()</a>
|
|
<li><a href=#245>isalnum()</a>
|
|
<li><a href=#245>isalpha()</a>
|
|
<li><a href=#245>iscntrl()</a>
|
|
<li><a href=#245>isdigit()</a>
|
|
<li><a href=#245>isgraph()</a>
|
|
<li><a href=#245>islower()</a>
|
|
<li><a href=#245>isprint()</a>
|
|
<li><a href=#245>ispunct()</a>
|
|
<li><a href=#245>isspace()</a>
|
|
<li><a href=#245>isupper()</a>
|
|
<li><a href=#245>isxdigit()</a>
|
|
<li><a href=#261>language()</a>
|
|
<li><a href=#258>log()</a>
|
|
<li><a href=#258>log10()</a>
|
|
<li><a href=#262>lookup()</a>
|
|
<li><a href=#255>max()</a>
|
|
<li><a href=#255>min()</a>
|
|
<li><a href=#263>palette()</a>
|
|
<li><a href=#258>pow()</a>
|
|
<li><a href=#269>printf()</a>
|
|
<li><a href=#256>round()</a>
|
|
<li><a href=#292>setgroup()</a>
|
|
<li><a href=#257>sin()</a>
|
|
<li><a href=#264>sort()</a>
|
|
<li><a href=#270>sprintf()</a>
|
|
<li><a href=#258>sqrt()</a>
|
|
<li><a href=#265>status()</a>
|
|
<li><a href=#272>strchr()</a>
|
|
<li><a href=#273>strjoin()</a>
|
|
<li><a href=#274>strlen()</a>
|
|
<li><a href=#275>strlwr()</a>
|
|
<li><a href=#276>strrchr()</a>
|
|
<li><a href=#277>strrstr()</a>
|
|
<li><a href=#278>strsplit()</a>
|
|
<li><a href=#279>strstr()</a>
|
|
<li><a href=#280>strsub()</a>
|
|
<li><a href=#281>strtod()</a>
|
|
<li><a href=#282>strtol()</a>
|
|
<li><a href=#283>strupr()</a>
|
|
<li><a href=#284>strxstr()</a>
|
|
<li><a href=#266>system()</a>
|
|
<li><a href=#288>t2day()</a>
|
|
<li><a href=#288>t2dayofweek()</a>
|
|
<li><a href=#288>t2hour()</a>
|
|
<li><a href=#288>t2minute()</a>
|
|
<li><a href=#288>t2month()</a>
|
|
<li><a href=#288>t2second()</a>
|
|
<li><a href=#288>t2string()</a>
|
|
<li><a href=#288>t2year()</a>
|
|
<li><a href=#257>tan()</a>
|
|
<li><a href=#286>time()</a>
|
|
<li><a href=#246>tolower()</a>
|
|
<li><a href=#246>toupper()</a>
|
|
<li><a href=#256>trunc()</a>
|
|
<li><a href=#267>u2inch()</a>
|
|
<li><a href=#267>u2mic()</a>
|
|
<li><a href=#267>u2mil()</a>
|
|
<li><a href=#267>u2mm()</a>
|
|
</ul>
|
|
|
|
|
|
<a name=244>
|
|
<h1>Character-Funktionen</h1>
|
|
Mit <i>Character-Funktionen</i> manipuliert man einzelne Zeichen.
|
|
<p>
|
|
Die folgenden Character-Funktionen sind verfügbar:
|
|
<ul>
|
|
<li><a href=#245>isalnum()</a>
|
|
<li><a href=#245>isalpha()</a>
|
|
<li><a href=#245>iscntrl()</a>
|
|
<li><a href=#245>isdigit()</a>
|
|
<li><a href=#245>isgraph()</a>
|
|
<li><a href=#245>islower()</a>
|
|
<li><a href=#245>isprint()</a>
|
|
<li><a href=#245>ispunct()</a>
|
|
<li><a href=#245>isspace()</a>
|
|
<li><a href=#245>isupper()</a>
|
|
<li><a href=#245>isxdigit()</a>
|
|
<li><a href=#246>tolower()</a>
|
|
<li><a href=#246>toupper()</a>
|
|
</ul>
|
|
|
|
|
|
<a name=245>
|
|
<h1>is...()</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Prüfen, ob ein Zeichen in eine bestimmte Kategorie fällt.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>int isalnum(char c);</tt><br>
|
|
<tt>int isalpha(char c);</tt><br>
|
|
<tt>int iscntrl(char c);</tt><br>
|
|
<tt>int isdigit(char c);</tt><br>
|
|
<tt>int isgraph(char c);</tt><br>
|
|
<tt>int islower(char c);</tt><br>
|
|
<tt>int isprint(char c);</tt><br>
|
|
<tt>int ispunct(char c);</tt><br>
|
|
<tt>int isspace(char c);</tt><br>
|
|
<tt>int isupper(char c);</tt><br>
|
|
<tt>int isxdigit(char c);</tt>
|
|
<dt>
|
|
<b>Rückgabewert</b>
|
|
<dd>
|
|
Die <tt>is...</tt>-Funktionen liefern einen Wert ungleich null, wenn das
|
|
Zeichen in die Kategorie fällt, sonst null.
|
|
</dl>
|
|
<h2>Character-Kategorien</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>isalnum </tt> </td><td width=20><td>Buchstaben (<tt>A</tt> bis <tt>Z</tt> oder <tt>a</tt> bis <tt>z</tt>) oder Digits (<tt>0</tt> bis <tt>9</tt>)</td></tr>
|
|
<tr><td><tt>isalpha </tt> </td><td width=20><td>Buchstaben (<tt>A</tt> bis <tt>Z</tt> oder <tt>a</tt> bis <tt>z</tt>)</td></tr>
|
|
<tr><td><tt>iscntrl </tt> </td><td width=20><td>Delete-Zeichen oder normale Steuerzeichen (<tt>0x7F</tt> oder <tt>0x00</tt> bis <tt>0x1F</tt>)</td></tr>
|
|
<tr><td><tt>isdigit </tt> </td><td width=20><td>Digits (<tt>0</tt> bis <tt>9</tt>)</td></tr>
|
|
<tr><td><tt>isgraph </tt> </td><td width=20><td>Druckbare Zeichen (ausser Leerzeichen)</td></tr>
|
|
<tr><td><tt>islower </tt> </td><td width=20><td>Kleinbuchstaben (<tt>a</tt> bis <tt>z</tt>)</td></tr>
|
|
<tr><td><tt>isprint </tt> </td><td width=20><td>Druckbare Zeichen (<tt>0x20</tt> bis <tt>0x7E</tt>)</td></tr>
|
|
<tr><td><tt>ispunct </tt> </td><td width=20><td>Punctuation-Zeichen (<tt>iscntrl</tt> oder <tt>isspace</tt>)</td></tr>
|
|
<tr><td><tt>isspace </tt> </td><td width=20><td>Space, Tab, Carriage Return, New Line, Vertical Tab oder Formfeed (<tt>0x09</tt> bis <tt>0x0D</tt>, <tt>0x20</tt>)</td></tr>
|
|
<tr><td><tt>isupper </tt> </td><td width=20><td>Großbuchstaben (<tt>A</tt> bis <tt>Z</tt>)</td></tr>
|
|
<tr><td><tt>isxdigit</tt> </td><td width=20><td>Hex-Digits (<tt>0</tt> bis <tt>9</tt>, <tt>A</tt> bis <tt>F</tt>, <tt>a</tt> bis <tt>f</tt>)</td></tr>
|
|
</table>
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
char c = 'A';
|
|
if (isxdigit(c))
|
|
printf("%c is hex\n", c);
|
|
else
|
|
printf("%c is not hex\n", c);
|
|
</pre>
|
|
|
|
|
|
<a name=246>
|
|
<h1>to...()</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Buchstaben in Groß- oder Kleinbuchstaben umwandeln.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>char tolower(char c);</tt><br>
|
|
<tt>char toupper(char c);</tt>
|
|
<dt>
|
|
<b>Rückgabewert</b>
|
|
<dd>
|
|
Die <tt>tolower</tt>-Funktion gibt den konvertierten Buchstaben zurück,
|
|
wenn <tt>c</tt> ein Großbuchstabe ist. Alle anderen Zeichen werden
|
|
unverändert zurückgegeben.<br>
|
|
Die <tt>toupper</tt>-Funktion gibt den konvertierten Buchstaben zurück,
|
|
wenn <tt>c</tt> ein Kleinbuchstabe ist. Alle anderen Zeichen werden
|
|
unverändert zurückgegeben.
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#283>strupr</a>,
|
|
<a href=#275>strlwr</a>
|
|
|
|
|
|
<a name=247>
|
|
<h1>Datei-Funktionen</h1>
|
|
<i>Datei-Funktionen</i> behandeln Datei-Namen, -Größen
|
|
und -Zeitstempel.
|
|
<p>
|
|
Folgende Datei-Funktionen sind verfügbar:
|
|
<ul>
|
|
<li><a href=#248>fileerror()</a>
|
|
<li><a href=#249>fileglob()</a>
|
|
<li><a href=#250>filedir()</a>
|
|
<li><a href=#250>fileext()</a>
|
|
<li><a href=#250>filename()</a>
|
|
<li><a href=#253>fileread()</a>
|
|
<li><a href=#250>filesetext()</a>
|
|
<li><a href=#251>filesize()</a>
|
|
<li><a href=#251>filetime()</a>
|
|
</ul>
|
|
Weitere Informationen über Ausgaben in eine Datei, finden Sie unter <a href=#297>output()</a>.
|
|
|
|
|
|
<a name=248>
|
|
<h1>fileerror()</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Zeigt den Status von I/O-Operationen.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>int fileerror();</tt>
|
|
<dt>
|
|
<b>Rückgabewert</b>
|
|
<dd>
|
|
Gibt die <tt>fileerror</tt>-Funktion <tt>0</tt> zurück, ist alles in Ordnung.
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#297>output</a>,
|
|
<a href=#269>printf</a>,
|
|
<a href=#253>fileread</a>
|
|
<p>
|
|
<tt>fileerror</tt> prüft den Status beliebiger I/O-Operation, die seit
|
|
dem letzten Aufruf dieser Funktion ausgeführt wurden und gibt <tt>0</tt> zurück,
|
|
wenn alles in Ordnung war. Verursachte eine der I/O-Operationen einen Fehler,
|
|
wird ein Wert ungleich <tt>0</tt> ausgegeben.
|
|
<p>
|
|
Vor der Ausführung von I/O-Operationen sollten Sie mit <tt>fileerror</tt> den
|
|
Fehlerstatus zurücksetzten. Nach der Ausführung der I/O-Operationen rufen Sie
|
|
<tt>fileerror</tt>erneut auf, um zu prüfen ob alles in Ordnung war.
|
|
<p>
|
|
Wenn <tt>fileerror</tt> einen Wert ungleich <tt>0</tt> ausgibt (und so einen Fehler anzeigt),
|
|
wird dem Benutzer eine Fehlermeldung angezeigt.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
fileerror();
|
|
output("file.txt", "wt") {
|
|
printf("Test\n");
|
|
}
|
|
if (fileerror())
|
|
exit(1);
|
|
</pre>
|
|
|
|
|
|
<a name=249>
|
|
<h1>fileglob()</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Sucht in einem Verzeichnis.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>int fileglob(string &array[], string pattern);</tt>
|
|
<dt>
|
|
<b>Rückgabewert</b>
|
|
<dd>
|
|
Die Funktion <tt>fileglob</tt> liefert die Anzahl der Einträge, die in <tt>array</tt> kopiert wurden.
|
|
</dl>
|
|
<b>Siehe auch </b> <a href=#305>dlgFileOpen()</a>,
|
|
<a href=#305>dlgFileSave()</a>
|
|
<p>
|
|
<tt>fileglob</tt> sucht in einem Verzeichnis nach <tt>pattern</tt>.
|
|
<p>
|
|
<tt>pattern</tt> kann <tt>'*'</tt> und <tt>'?'</tt> als Platzhalter enthalten.
|
|
Endet <tt>pattern</tt> mit einem <tt>'/'</tt>, wird der Inhalt des angegebenen Verzeichnis zurückgegeben.
|
|
<p>
|
|
Namen die im resultierenden <tt>array</tt> mit einem <tt>'/'</tt> enden, sind Verzeichnisnamen.
|
|
<p>
|
|
Das <tt>array</tt> ist alphabetisch sortiert, die Verzeichnisse kommen zuerst.
|
|
<p>
|
|
Die Sondereinträge <tt>'.'</tt> und <tt>'..'</tt> (für das aktuelle und das übergeordnete Verzeichnis)
|
|
werden nie in <tt>array</tt> geschrieben.
|
|
<p>
|
|
Wenn <tt>pattern</tt> nicht gefunden wird, oder wenn Sie kein Recht haben, das angegebene Verzeichnis
|
|
zu durchsuchen, ist das <tt>array</tt> leer.
|
|
<h2>Hinweis für Windows-Anwender</h2>
|
|
<table><tr><td valign="top"><img src="platforms-win.png"></td><td valign="middle">
|
|
Das Pfad-Trennzeichen in <tt>array</tt> ist immer ein <b>Forward-Slash</b> (Schrägstrich).
|
|
So ist sichergestellt, dass User-Language-Progamme betriebssystemunabhängig arbeiten.
|
|
In <tt>pattern</tt> wird der <b>backslash</b> (<tt>'\'</tt>) auch als Pfad-Trennzeichen behandelt.
|
|
<p>
|
|
Die Sortierreihenfolge unter Windows unterscheidet nicht zwischen Groß- und Kleinschreibung.
|
|
</td></tr></table>
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
string a[];
|
|
int n = fileglob(a, "*.brd");
|
|
</pre>
|
|
|
|
|
|
<a name=250>
|
|
<h1>Dateinamens-Funktionen</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Datei-Namen in seine Einzelteile aufspalten.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>string filedir(string file);</tt><br>
|
|
<tt>string fileext(string file);</tt><br>
|
|
<tt>string filename(string file);</tt><br>
|
|
<tt>string filesetext(string file, string newext);</tt>
|
|
<dt>
|
|
<b>Rückgabewert</b>
|
|
<dd>
|
|
<tt>filedir </tt> liefert das Directory von <tt>file</tt> (einschließlich Laufwerksbuchstaben unter Windows).<br>
|
|
<tt>fileext </tt> liefert die Extension von <tt>file</tt>.<br>
|
|
<tt>filename </tt> liefert den File-Namen von <tt>file</tt> (einschließlich Extension).<br>
|
|
<tt>filesetext</tt> liefert <tt>file</tt> mit Extension auf <tt>newext</tt> gesetzt.
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#251>Datei-Daten-Funktionen</a>
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
if (board) board(B) {
|
|
output(filesetext(B.name, ".out")) {
|
|
...
|
|
}
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=251>
|
|
<h1>Datei-Daten-Funktionen</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Holt den Timestamp und die Größe einer Datei.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>int filesize(string filename);</tt><br>
|
|
<tt>int filetime(string filename);</tt>
|
|
<dt>
|
|
<b>Rückgabewert</b>
|
|
<dd>
|
|
<tt>filesize</tt> liefert die Größe (in Byte) der Datei.<br>
|
|
<tt>filetime</tt> liefert den Timestamp der Datei in einem Format, das mit den <a href=#285>Zeit-Funktionen</a> benutzt wird.
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#286>time</a>,
|
|
<a href=#250>Dateinamens-Funktionen</a>
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
board(B)
|
|
printf("Board: %s\nSize: %d\nTime: %s\n",
|
|
B.name, filesize(B.name),
|
|
t2string(filetime(B.name)));
|
|
</pre>
|
|
|
|
|
|
<a name=252>
|
|
<h1>Datei-Einlese-Funktionen</h1>
|
|
<i>Datei-Einlese-Funktionen</i> werden verwendet um Daten von Dateien einzulesen.
|
|
<p>
|
|
Folgendes Datei-Einlesen ist möglich:
|
|
<ul>
|
|
<li><a href=#253>fileread()</a>
|
|
</ul>
|
|
Siehe <a href=#297>output()</a> für Informationen zum Thema 'In eine Datei schreiben'.
|
|
|
|
|
|
<a name=253>
|
|
<h1>fileread()</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Liest Daten aus einer Datei aus.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>int fileread(<i>dest</i>, string file);</tt>
|
|
<dt>
|
|
<b>Rückgabewert</b>
|
|
<dd>
|
|
<tt>fileread</tt> liefert die Anzahl der Objekte, die aus einer Datei ausgelesen wurden.<br>
|
|
Die tatsächliche Bedeutung des Rückgabewerts hängt vom <tt>dest</tt>-Typ ab.
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#262>lookup</a>,
|
|
<a href=#278>strsplit</a>,
|
|
<a href=#248>fileerror</a>
|
|
<p>
|
|
Wenn <tt>dest</tt> ein Character-Array ist, werden Binär-Daten aus der Datei ausgelesen.
|
|
Der Rückgabewert entspricht dann der Anzahl der Bytes, die in das Character-Array
|
|
eingelesen wurden (das entspricht der Dateigröße).
|
|
<p>
|
|
Wenn <tt>dest</tt> ein String-Array ist, wird die Datei als Textdatei gelesen (eine Zeile
|
|
pro Array-Member). Der Rückgabewert zeigt die Anzahl der Zeilen, die in das Array
|
|
eingelesen wurden. Newline-Zeichen werden nicht berücksichtigt.
|
|
<p>
|
|
Wenn <tt>dest</tt> ein String ist, wird die ganze Datei in diesen String eingelesen. Der
|
|
Rückgabewert ist die Länge des Strings (die nicht unbedingt der Dateigröße entsprechen
|
|
muss, wenn das Betriebssystem Textdateien mit "cr/lf" anstatt "newline" am Zeilenende
|
|
speichert).
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
char b[];
|
|
int nBytes = fileread(b, "data.bin");
|
|
string lines[];
|
|
int nLines = fileread(lines, "data.txt");
|
|
string text;
|
|
int nChars = fileread(text, "data.txt");
|
|
</pre>
|
|
|
|
|
|
<a name=254>
|
|
<h1>Mathematische Funktionen</h1>
|
|
<i>Mathematische Funktionen</i> werden dazu verwendet, matematische
|
|
Operationen auszuführen.
|
|
<p>
|
|
Die folgenden mathematischen Funktionen sind verfügbar:
|
|
<ul>
|
|
<li><a href=#255>abs()</a>
|
|
<li><a href=#257>acos()</a>
|
|
<li><a href=#257>asin()</a>
|
|
<li><a href=#257>atan()</a>
|
|
<li><a href=#256>ceil()</a>
|
|
<li><a href=#257>cos()</a>
|
|
<li><a href=#258>exp()</a>
|
|
<li><a href=#256>floor()</a>
|
|
<li><a href=#256>frac()</a>
|
|
<li><a href=#258>log()</a>
|
|
<li><a href=#258>log10()</a>
|
|
<li><a href=#255>max()</a>
|
|
<li><a href=#255>min()</a>
|
|
<li><a href=#258>pow()</a>
|
|
<li><a href=#256>round()</a>
|
|
<li><a href=#257>sin()</a>
|
|
<li><a href=#258>sqrt()</a>
|
|
<li><a href=#256>trunc()</a>
|
|
<li><a href=#257>tan()</a>
|
|
</ul>
|
|
<h2>Fehlermeldungen</h2>
|
|
Wenn die Argumente eines mathematischen Funktionsaufrufs zu einem Fehler führen,
|
|
zeigen die Fehlermeldungen die aktuellen Werte der Argumente. Deshalb
|
|
führen die Statements
|
|
<pre>
|
|
real x = -1.0;
|
|
real r = sqrt(2 * x);
|
|
</pre>
|
|
zur Fehlermeldung
|
|
<pre>
|
|
Invalid argument in call to 'sqrt(-2)'
|
|
</pre>
|
|
|
|
|
|
<a name=255>
|
|
<h1>Absolutwert-, Maximum- und Minimum-Funktion</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Absolutwert-, Maximum- und Minimum-Funktion.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>type abs(type x);</tt><br>
|
|
<tt>type max(type x, type y);</tt><br>
|
|
<tt>type min(type x, type y);</tt>
|
|
<dt>
|
|
<b>Rückgabewert</b>
|
|
<dd>
|
|
<tt>abs</tt> liefert den absoluten Wert von <tt>x</tt>.<br>
|
|
<tt>max</tt> liefert das Maximum von <tt>x</tt> und <tt>y</tt>.<br>
|
|
<tt>min</tt> liefert das Minimum von <tt>x</tt> und <tt>y</tt>.
|
|
<p>
|
|
Der Return-Typ dieser Funktionen ist identisch mit dem größeren Typ der Argumente.
|
|
<tt>type</tt> muss
|
|
<tt><a href=#165>char</a></tt>,
|
|
<tt><a href=#166>int</a></tt> oder
|
|
<tt><a href=#167>real</a></tt> sein.
|
|
</dl>
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
real x = 2.567, y = 3.14;
|
|
printf("The maximum is %f\n", max(x, y));
|
|
</pre>
|
|
|
|
|
|
<a name=256>
|
|
<h1>Rundungs-Funktionen</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Rundungs-Funktionen.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>real ceil(real x);</tt><br>
|
|
<tt>real floor(real x);</tt><br>
|
|
<tt>real frac(real x);</tt><br>
|
|
<tt>real round(real x);</tt><br>
|
|
<tt>real trunc(real x);</tt>
|
|
<dt>
|
|
<b>Rückgabewert</b>
|
|
<dd>
|
|
<tt>ceil </tt> liefert den kleinsten Integer-Wert nicht kleiner als <tt>x</tt>.<br>
|
|
<tt>floor</tt> liefert den größten Integer-Wert nicht größer als <tt>x</tt>.<br>
|
|
<tt>frac </tt> liefert den Dezimalbruch von <tt>x</tt>.<br>
|
|
<tt>round</tt> liefert <tt>x</tt> gerundet auf den nächsten Integer-Wert.<br>
|
|
<tt>trunc</tt> liefert den ganzzahligen Teil von <tt>x</tt>.
|
|
</dl>
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
real x = 2.567;
|
|
printf("The rounded value of %f is %f\n", x, round(x));
|
|
</pre>
|
|
|
|
|
|
<a name=257>
|
|
<h1>Trigonometrische Funktionen</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Trigonometrische Funktionen.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>real acos(real x);</tt><br>
|
|
<tt>real asin(real x);</tt><br>
|
|
<tt>real atan(real x);</tt><br>
|
|
<tt>real cos(real x);</tt><br>
|
|
<tt>real sin(real x);</tt><br>
|
|
<tt>real tan(real x);</tt>
|
|
<dt>
|
|
<b>Rückgabewert</b>
|
|
<dd>
|
|
<tt>acos</tt> liefert den arc-cosinus von <tt>x</tt>.<br>
|
|
<tt>asin</tt> liefert den arc-sinus von <tt>x</tt>.<br>
|
|
<tt>atan</tt> liefert den arc-tangens von <tt>x</tt>.<br>
|
|
<tt>cos </tt> liefert den cosinus von <tt>x</tt>.<br>
|
|
<tt>sin </tt> liefert den sinus von <tt>x</tt>.<br>
|
|
<tt>tan </tt> liefert den tangens von <tt>x</tt>.
|
|
</dl>
|
|
<h2>Konstanten</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>PI</tt> </td><td width=20><td>der Wert von "pi" (3.14...)</td></tr>
|
|
</table>
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
real x = PI / 2;
|
|
printf("The sine of %f is %f\n", x, sin(x));
|
|
</pre>
|
|
|
|
|
|
<a name=258>
|
|
<h1>Exponential-Funktionen</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Exponential-Funktionen.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>real exp(real x);</tt><br>
|
|
<tt>real log(real x);</tt><br>
|
|
<tt>real log10(real x);</tt><br>
|
|
<tt>real pow(real x, real y);</tt><br>
|
|
<tt>real sqrt(real x);</tt>
|
|
<dt>
|
|
<b>Rückgabewert</b>
|
|
<dd>
|
|
<tt>exp </tt> liefert <i>e</i> hoch <tt>x</tt>.<br>
|
|
<tt>log </tt> liefert den natürlichen Logarithmus von <tt>x</tt>.<br>
|
|
<tt>log10</tt> liefert den Zehnerlogarithmus von <tt>x</tt>.<br>
|
|
<tt>pow </tt> liefert den Wert von <tt>x</tt> hoch <tt>y</tt>.<br>
|
|
<tt>sqrt </tt> liefert die Quadratwurzel von <tt>x</tt>.
|
|
</dl>
|
|
<h2>Anmerkung</h2>
|
|
Die "n-te" Wurzel kann mit Hilfe der <tt>pow</tt>-Funktion und einem negativen
|
|
Exponenten berechnet werden.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
real x = 2.1;
|
|
printf("The square root of %f is %f\n", x, sqrt(x));
|
|
</pre>
|
|
|
|
|
|
<a name=259>
|
|
<h1>Sonstige Funktionen</h1>
|
|
<i>Sonstige Funktionen</i> werden für weitere Aufgaben benötigt.
|
|
<p>
|
|
Die folgenden sonstigen Funktionen sind verfügbar:
|
|
<ul>
|
|
<li><a href=#260>exit()</a>
|
|
<li><a href=#261>language()</a>
|
|
<li><a href=#262>lookup()</a>
|
|
<li><a href=#263>palette()</a>
|
|
<li><a href=#264>sort()</a>
|
|
<li><a href=#265>status()</a>
|
|
<li><a href=#266>system()</a>
|
|
<li><a href=#267>Einheiten-Konvertierung</a>
|
|
</ul>
|
|
|
|
|
|
<a name=260>
|
|
<h1>exit()</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Beendet ein User-Language-Programm.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>void exit(int result);</tt><br>
|
|
<tt>void exit(string command);</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#90>RUN</a>
|
|
<p>
|
|
Die <tt>exit</tt>-Funktion beendet die Ausführung des User-Language-Programms.<br>
|
|
Wird <tt>result</tt> (integer) angegeben, wird es als <a href=#140>Rückgabewert</a>
|
|
des Programms benutzt.<br>
|
|
Wird ein <tt>command</tt>-String angegeben, wird dieser Befehl genauso ausgeführt, als
|
|
wäre über die Kommandozeile direkt nach dem RUN-Befehl eingegeben worden. In diesem
|
|
Fall wird der Rückgabewert des ULPs auf <tt>EXIT_SUCCESS</tt> gesetzt.
|
|
<h2>Konstanten</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>EXIT_SUCCESS</tt> </td><td width=20><td>Rückgabewert für erfolgreiche Programmausführung (Wert <tt>0</tt>)</td></tr>
|
|
<tr><td><tt>EXIT_FAILURE</tt> </td><td width=20><td>Rückgabewert für fehlerhafte Programmausführung (Wert <tt>-1</tt>)</td></tr>
|
|
</table>
|
|
|
|
|
|
<a name=261>
|
|
<h1>language()</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Liefert den Sprachcode des verwendeten Systems.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>string language();</tt>
|
|
<dt>
|
|
<b>Rückgabewert</b>
|
|
<dd>
|
|
<tt>language</tt> liefert einen String bestehend aus zwei Kleinbuchstaben,
|
|
der die auf dem aktuellen System verwendete Sprache angibt.
|
|
Falls sich diese Einstellung nicht ermitteln lässt, wird ein leerer
|
|
String zurückgegeben.
|
|
</dl>
|
|
Die <tt>language</tt>-Funktion kann dazu benutzt werden, in einem ULP unterschiedliche
|
|
Texte zu verwenden, je nachdem welche Sprache das aktuelle System verwendet.
|
|
<p>
|
|
In dem folgenden Beispiel sind alle im ULP verwendeten Strings im Array <tt>I18N[]</tt>
|
|
aufgelistet, beginnend mit einem String der die verschiedenen Sprachcodes enthält
|
|
die dieses ULP unterstützt. Beachten Sie die <tt>vtab</tt>-Zeichen, die dazu
|
|
benutzt werden, die einzelnen Teile jedes Strings zu trennen (diese sind wichtig
|
|
für die <tt>lookup</tt>-Funktion) und die Benutzung der Kommas um die Strings
|
|
zu trennen. Die eigentliche Arbeit wird in der Funktion <tt>tr()</tt> gemacht,
|
|
welche die übersetzte Version des übergebenen Strings zurückliefert.
|
|
Sollte der ursprüngliche String im <tt>I18N</tt>-Array nicht gefunden werden,
|
|
oder es keine Übersetzung für die aktuelle Sprache geben, so wird der ursprüngliche
|
|
String unübersetzt verwendet.
|
|
<p>
|
|
Die erste im <tt>I18N</tt>-Array definierte Sprache muss diejenige sein, in der
|
|
die im restlichen ULP verwendeten Strings geschrieben sind, und sollte generell
|
|
Englisch sein um das Programm einer möglichst großen Zahl von Benutzern
|
|
zugänglich zu machen.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
string I18N[] = {
|
|
"en\v"
|
|
"de\v"
|
|
"it\v"
|
|
,
|
|
"I18N Demo\v"
|
|
"Beispiel für Internationalisierung\v"
|
|
"Esempio per internazionalizzazione\v"
|
|
,
|
|
"Hello world!\v"
|
|
"Hallo Welt!\v"
|
|
"Ciao mondo!\v"
|
|
,
|
|
"+Ok\v"
|
|
"+Ok\v"
|
|
"+Approvazione\v"
|
|
,
|
|
"-Cancel\v"
|
|
"-Abbrechen\v"
|
|
"-Annullamento\v"
|
|
};
|
|
int Language = strstr(I18N[0], language()) / 3;
|
|
string tr(string s)
|
|
{
|
|
string t = lookup(I18N, s, Language, '\v');
|
|
return t ? t : s;
|
|
}
|
|
dlgDialog(tr("I18N Demo")) {
|
|
dlgHBoxLayout dlgSpacing(350);
|
|
dlgLabel(tr("Hello world!"));
|
|
dlgHBoxLayout {
|
|
dlgPushButton(tr("+Ok")) dlgAccept();
|
|
dlgPushButton(tr("-Cancel")) dlgReject();
|
|
}
|
|
};
|
|
</pre>
|
|
|
|
|
|
<a name=262>
|
|
<h1>lookup()</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Sucht Daten in einem String-Array.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>string lookup(string array[], string key, int field_index[, char separator]);</tt><br>
|
|
<tt>string lookup(string array[], string key, string field_name[, char separator]);</tt>
|
|
<dt>
|
|
<b>Rückgabewert</b>
|
|
<dd>
|
|
<tt>lookup</tt> liefert den Wert des Feldes, das durch <tt>field_index</tt>
|
|
oder <tt>field_name</tt> markiert wird.<br>
|
|
Existiert dieses Feld nicht oder wird kein passender String für <tt>key</tt> gefunden,
|
|
kommt ein leerer String zurück.
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#253>fileread</a>,
|
|
<a href=#278>strsplit</a>
|
|
<p>
|
|
Ein <tt>array</tt> das mit <tt>lookup()</tt> benutzt werden kann, besteht aus Text-Strings,
|
|
wobei jeder String einen Daten-Record darstellt.
|
|
<p>
|
|
Jeder Daten-Record enthält eine beliebige Anzahl von Feldern, die durch das Zeichen
|
|
<tt>separator</tt> (default ist <tt>'\t'</tt>, der Tabulator) getrennt sind.
|
|
Das erste Feld in einem Record wird als <tt>key</tt> benutzt und hat die Nummer <tt>0</tt>.
|
|
<p>
|
|
Alle Records müssen eindeutige <tt>key</tt>-Felder haben. Keines der <tt>key</tt>-Felder
|
|
darf leer sein - ansonsten ist nicht definiert welcher Record gefunden wird.
|
|
<p>
|
|
Enthält der erste String in <tt>array</tt> einen "Header"-Record (der Record, in dem der
|
|
Inhalt der Felder beschrieben wird), bestimmt <tt>lookup</tt> mit einem String
|
|
<tt>field_name</tt> automatisch den Index des Feldes. Das erlaubt es, die <tt>lookup</tt>-Funktion
|
|
zu benutzen, ohne genau zu wissen, welcher Feld-Index die gewünschten Daten enthält.<br>
|
|
Es bleibt dem Benutzer überlassen, sicherzustellen, dass der erste Record tatsächlich
|
|
Header-Informationen enthält.
|
|
<p>
|
|
Ist der <tt>key</tt>-Parameter beim Aufruf von <tt>lookup()</tt> ein leerer String,
|
|
wird der erste String von <tt>array</tt> verwendet. Das erlaubt dem Programm zu
|
|
bestimmen, ob ein Header-Record mit den gewünschten Feld-Namen existiert.
|
|
<p>
|
|
Enthält ein Feld das <tt>separator</tt>-Zeichen, muss es in Anführungszeichen
|
|
eingeschlossen werden (wie in <tt>"abc;def"</tt>, wobei hier das Semikolon (<tt>';'</tt>)
|
|
das Trennzeichen ist). Das gilt auch für Felder, die Anführungszeichen
|
|
(<tt>"</tt>) enthalten, wobei die Anführungszeichen im Feld verdoppelt werden müssen
|
|
(wie hier: <tt>"abc;""def"";ghi"</tt> ergibt also <tt>abc;"def";ghi</tt>).<br>
|
|
<b>Es wird empfohlen den "tab"-Separator (default) zu verwenden, der diese Probleme nicht
|
|
kennt (kein Feld kann einen Tabulator enthalten).</b>
|
|
<p>
|
|
Hier folgt eine Beispiel-Daten-Datei (zur besseren Lesbarkeit wurde der Separator <tt>';'</tt> verwendet):
|
|
<pre>
|
|
Name;Manufacturer;Code;Price
|
|
7400;Intel;I-01-234-97;$0.10
|
|
68HC12;Motorola;M68HC1201234;$3.50
|
|
</pre>
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
string OrderCodes[];
|
|
if (fileread(OrderCodes, "ordercodes") > 0) {
|
|
if (lookup(OrderCodes, "", "Code", ';')) {
|
|
schematic(SCH) {
|
|
SCH.parts(P) {
|
|
string OrderCode;
|
|
// both following statements do exactly the same:
|
|
OrderCode = lookup(OrderCodes, P.device.name, "Code", ';');
|
|
OrderCode = lookup(OrderCodes, P.device.name, 2, ';');
|
|
}
|
|
}
|
|
}
|
|
else
|
|
dlgMessageBox("Missing 'Code' field in file 'ordercodes');
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=263>
|
|
<h1>palette()</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Liefert Farbpaletten-Information.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>int palette(int index[, int type]);</tt>
|
|
<dt>
|
|
<b>Rückgabewert</b>
|
|
<dd>
|
|
Die <tt>palette</tt>-Funktion liefert einen ARGB-Wert als Integer-Zahl der Form 0xaarrggbb,
|
|
oder den Typ der momentan verwendeten Palette (abhängig vom Wert von <tt>index</tt>).
|
|
</dl>
|
|
Die <tt>palette</tt>-Funktion liefert den ARGB-Wert der Farbe mit dem gegebenen
|
|
<tt>index</tt> (welcher im Bereich 0..PALETTE_ENTRIES-1 liegen kann). Falls <tt>type</tt>
|
|
nicht angegeben ist (oder den Wert <tt>-1</tt> hat) wird die Palette verwendet, die dem
|
|
aktuellen Editor-Fenster zugewiesen ist. Ansonsten gibt <tt>type</tt> an, welche
|
|
Palette verwendet werden soll (PALETTE_BLACK, PALETTE_WHITE oder PALETTE_COLORED).
|
|
<p>
|
|
Der spezielle Wert <tt>-1</tt> für <tt>index</tt> bewirkt, dass die Funktion den
|
|
Typ der momentan vom Editor-Fenster verwendeten Palette liefert.
|
|
<p>
|
|
Falls <tt>index</tt> oder <tt>type</tt> ausserhalb des gültigen Wertebereichs liegen
|
|
wird eine Fehlermeldung ausgegeben und das ULP abgebrochen.
|
|
<h2>Konstanten</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>PALETTE_TYPES</tt> </td><td width=20><td>die Anzahl der Palette-Typen (3)</td></tr>
|
|
<tr><td><tt>PALETTE_BLACK</tt> </td><td width=20><td>die Palette für schwarzen Hintergrund (0)</td></tr>
|
|
<tr><td><tt>PALETTE_WHITE</tt> </td><td width=20><td>die Palette für weißen Hintergrund (1)</td></tr>
|
|
<tr><td><tt>PALETTE_COLORED</tt> </td><td width=20><td>die Palette für farbigen Hintergrund (2)</td></tr>
|
|
<tr><td><tt>PALETTE_ENTRIES</tt> </td><td width=20><td>die Anzahl der Farben pro Palette (64)</td></tr>
|
|
</table>
|
|
|
|
|
|
<a name=264>
|
|
<h1>sort()</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Sortiert ein Array oder einen Satz von Arrays.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>void sort(int number, array1[, array2,...]);</tt>
|
|
</dl>
|
|
Die <tt>sort</tt>-Funktion sortiert entweder direkt ein <tt>array1</tt>,
|
|
oder sie sortiert einen Satz von Arrays (beginnend mit <tt>array2</tt>),
|
|
wobei <tt>array1</tt> ein <b>int</b>-Array ist, das als Pointer-Array
|
|
verwendet wird.
|
|
<p>
|
|
In jedem Fall definiert das Argument <tt>number</tt> die Zahl der
|
|
Einträge im Array oder in den Arrays.
|
|
<h2>Einzelnes Array sortieren</h2>
|
|
Wenn die <tt>sort</tt>-Funktion mit einem einzelnen Arrray aufgerufen wird,
|
|
wird dieses Array direkt sortiert, wie im folgenden Beispiel:
|
|
<pre>
|
|
string A[];
|
|
int n = 0;
|
|
A[n++] = "World";
|
|
A[n++] = "Hello";
|
|
A[n++] = "The truth is out there...";
|
|
sort(n, A);
|
|
for (int i = 0; i < n; ++i)
|
|
printf(A[i]);
|
|
</pre>
|
|
<h2>Einen Satz von Arrays sortieren</h2>
|
|
Wenn die <tt>sort</tt>-Funktion mit mehr als einem Array aufgerufen wird,
|
|
muss das erste Array ein <b>int</b>-Array sein, während alle anderen
|
|
Arrays von jedem Typ sein können. Sie enthalten die zu sortierenden Daten.
|
|
Das folgende Beispiel zeigt, wie das erste Array als Pointer verwendet
|
|
wird:
|
|
<pre>
|
|
numeric string Nets[], Parts[], Instances[], Pins[];
|
|
int n = 0;
|
|
int index[];
|
|
schematic(S) {
|
|
S.nets(N) N.pinrefs(P) {
|
|
Nets[n] = N.name;
|
|
Parts[n] = P.part.name;
|
|
Instances[n] = P.instance.name;
|
|
Pins[n] = P.pin.name;
|
|
++n;
|
|
}
|
|
sort(n, index, Nets, Parts, Instances, Pins);
|
|
for (int i = 0; i < n; ++i)
|
|
printf("%-8s %-8s %-8s %-8s\n",
|
|
Nets[index[i]], Parts[index[i]],
|
|
Instances[index[i]], Pins[index[i]]);
|
|
}
|
|
</pre>
|
|
Die Idee dahinter ist, dass an ein Netz mehrere Pins angeschlossen sein können.
|
|
In einer Netzliste wollen Sie unter Umständen die Netznamen sortieren und
|
|
innerhalb eines Netzes die Bauteilnamen, und so weiter.
|
|
<p>
|
|
Beachten Sie die Verwendung des Schlüsselworts <tt>numeric</tt> in den
|
|
String-Arrays. Das führt dazu, dass die String-Sortierung einen numerischen
|
|
Teil am Ende des Namens berücksichtigt (IC1, IC2,... IC9, IC10 anstelle von
|
|
IC1, IC10, IC2,...IC9).
|
|
<p>
|
|
Wenn man einen Satz von Arrays sortiert, muss das erste (Index-)Array
|
|
vom Typ <tt><a href=#166>int</a></tt> sein und braucht nicht
|
|
initialisiert zu werden. Jeder vor dem Aufruf der <tt>sort</tt>-Funktion
|
|
vorhandene Inhalt wird mit den resultierenden Indexwerten überschrieben.
|
|
|
|
|
|
<a name=265>
|
|
<h1>status()</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Zeigt eine Statusmeldung in der Statuszeile an.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>void status(string message);</tt><br>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#306>dlgMessageBox()</a>
|
|
<p>
|
|
Die <tt>status</tt>-Funktion zeigt die angegebene <tt>message</tt> in der Statuszeile
|
|
des Editor-Fensters an, in dem das ULP läuft.
|
|
|
|
|
|
<a name=266>
|
|
<h1>system()</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Führt ein externes Programm aus.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>int system(string command);</tt>
|
|
<dt>
|
|
<b>Rückgabewert</b>
|
|
<dd>
|
|
Die <tt>system</tt>-Funktion liefert den "Exit Status" des Befehls zurück. Dieser
|
|
ist normalerweise <tt>0</tt> wenn alles gut gegangen ist, und ungleich <tt>0</tt>
|
|
wenn ein Fehler aufgetreten ist.
|
|
</dl>
|
|
Die <tt>system</tt>-Funktion führt das im <tt>command</tt> angegebene externe
|
|
Programm aus und wartet, bis dieses beendet ist.
|
|
<p>
|
|
Zur Sicherheit werden Sie vor der Ausführung des Befehls gefragt, ob
|
|
Sie dieses zulassen möchten, damit nicht ein "böses" ULP unerwünschte externe
|
|
Befehle ausführen kann.
|
|
Wird dieser Dialog abgebrochen, so liefert der <tt>system()</tt> Aufruf <tt>-1</tt> zurück.
|
|
Wird der Dialog bestätigt, so werden alle künftigen <tt>system()</tt> Aufrufe in der
|
|
laufenden EAGLE-Sitzung mit genau der gleichen Befehlszeile ohne weiteren
|
|
Bestätigungsdialog ausgeführt.
|
|
<h2>Ein-/Ausgabe-Umleitung</h2>
|
|
Soll ein externes Programm seine Eingaben von einer bestimmten Datei lesen
|
|
(bzw. seine Ausgaben in eine bestimmte Datei schreiben), so muss die Ein- bzw.
|
|
Ausgabe umgeleitet werden.
|
|
<p>
|
|
<table><tr><td valign="top"><img src="platforms-lin.png"><br><img src="platforms-mac.png"></td><td valign="middle">
|
|
Unter <b>Linux</b> und <b>Mac OS X</b> geschieht dies einfach durch Anhängen von <tt>'<'</tt>
|
|
bzw. <tt>'>'</tt> an die Befehlszeile, jeweils gefolgt von der gewünschten Datei,
|
|
wie in
|
|
<pre>
|
|
system("program < infile > outfile");
|
|
</pre>
|
|
womit <tt>program</tt> gestartet wird und es von <tt>infile</tt> liest und
|
|
nach <tt>outfile</tt> schreibt.
|
|
</td></tr></table>
|
|
<p>
|
|
<table><tr><td valign="top"><img src="platforms-win.png"></td><td valign="middle">
|
|
Unter <b>Windows</b> muss explizit ein Kommando-Prozessor gestartet werden um dies zu
|
|
ermöglichen, wie in
|
|
<pre>
|
|
system("cmd.exe /c program < infile > outfile");
|
|
</pre>
|
|
(auf DOS-basierten Windows-Systemen verwenden Sie <tt>command.com</tt> anstatt <tt>cmd.exe</tt>).
|
|
</td></tr></table>
|
|
<h2>Ausführung im Hintergrund</h2>
|
|
Die <tt>system</tt>-Funktion wartet bis das angegebene Programm beendet ist.
|
|
Dies ist sinnvoll für Programme, die nur wenige Sekunden laufen, oder die
|
|
Aufmerksamkeit des Benutzers komplett an sich ziehen.
|
|
<p>
|
|
<table><tr><td valign="top"><img src="platforms-lin.png"><br><img src="platforms-mac.png"></td><td valign="middle">
|
|
Läuft ein externes Programm längere Zeit, und Sie wollen, dass der <tt>system()</tt>-Aufruf
|
|
sofort zurückkehrt, ohne zu warten, bis das Programm beendet ist, so können Sie
|
|
unter Linux und Mac OS X einfach ein <tt>'&'</tt> an die Befehlszeile anfügen,
|
|
wie in
|
|
<pre>
|
|
system("program &");
|
|
</pre>
|
|
</td></tr></table>
|
|
<p>
|
|
<table><tr><td valign="top"><img src="platforms-win.png"></td><td valign="middle">
|
|
Unter Windows muss explizit ein Kommando-Prozessor gestartet werden um dies zu
|
|
ermöglichen, wie in
|
|
<pre>
|
|
system("cmd.exe /c start program");
|
|
</pre>
|
|
(auf DOS-basierten Windows-Systemen verwenden Sie <tt>command.com</tt> anstatt <tt>cmd.exe</tt>).
|
|
</td></tr></table>
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
int result = system("simulate -f filename");
|
|
</pre>
|
|
Hiermit würde ein Simulationsprogramm aufgerufen und diesem eine Datei übergeben
|
|
werden, die das ULP gerade erzeugt hat.
|
|
Beachten Sie bitte, dass <tt>simulate</tt> hier nur ein Beispiel und nicht Bestandteil
|
|
des EAGLE-Paketes ist!
|
|
|
|
|
|
<a name=267>
|
|
<h1>Einheiten-Konvertierung</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Konvertiert interne Einheiten.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>real u2inch(int n);</tt><br>
|
|
<tt>real u2mic(int n);</tt><br>
|
|
<tt>real u2mil(int n);</tt><br>
|
|
<tt>real u2mm(int n);</tt>
|
|
<dt>
|
|
<b>Rückgabewert</b>
|
|
<dd>
|
|
<tt>u2inch</tt> liefert den Wert von <tt>n</tt> in <i>Inch</i>.<br>
|
|
<tt>u2mic </tt> liefert den Wert von <tt>n</tt> in <i>Micron</i> (1/1000mm).<br>
|
|
<tt>u2mil </tt> liefert den Wert von <tt>n</tt> in <i>Mil</i> (1/1000inch).<br>
|
|
<tt>u2mm </tt> liefert den Wert von <tt>n</tt> in <i>Millimeter</i>.
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#186>UL_GRID</a>
|
|
<p>
|
|
EAGLE speichert alle Koordinaten und Größen als
|
|
<tt><a href=#166>int</a></tt>-Werte mit einer Auflösung von 1/10000mm
|
|
(0.1µ). Die oben angegebenen Einheiten-Konvertier-Funktionen können dazu
|
|
verwendet werden, die internen Einheiten in die gewünschten Maßeinheiten
|
|
umzuwandeln.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
board(B) {
|
|
B.elements(E) {
|
|
printf("%s at (%f, %f)\n", E.name,
|
|
u2mm(E.x), u2mm(E.y));
|
|
}
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=268>
|
|
<h1>Print-Funktionen</h1>
|
|
<i>Print-Funktionen</i> dienen zur Ausgabe formatierter Strings.
|
|
<p>
|
|
Die folgenden Print-Funktionen sind verfügbar:
|
|
<ul>
|
|
<li><a href=#269>printf()</a>
|
|
<li><a href=#270>sprintf()</a>
|
|
</ul>
|
|
|
|
|
|
<a name=269>
|
|
<h1>printf()</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Schreibt formatiere Ausgaben in eine Datei.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>int printf(string format[, argument, ...]);</tt>
|
|
<dt>
|
|
<b>Rückgabewert</b>
|
|
<dd>
|
|
Die <tt>printf</tt>-Funktion liefert die Zahl der Zeichen, die in die
|
|
vom letzten <a href=#297>output</a>-Statement geöffnete Datei
|
|
geschrieben wurden.
|
|
<p>
|
|
Wenn ein Fehler auftritt, liefert <tt>printf</tt> <tt>-1</tt>.
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#270>sprintf</a>,
|
|
<a href=#297>output</a>,
|
|
<a href=#248>fileerror</a>
|
|
<h2>Format-String</h2>
|
|
Der Format-String steuert, wie die Argumente konvertiert, formatiert
|
|
und ausgegeben werden. Es müssen genau so viele Argumente vorhanden
|
|
sein, wie für das Format erforderlich sind. Die Zahl und der Typ
|
|
der Argumente werden für jedes Format geprüft, und wenn sie nicht
|
|
den Anforderungen entsprechen, wird eine Fehlermeldung ausgegeben.
|
|
<p>
|
|
Der Format-String enthält zwei Objekt-Typen - <i>einfache Zeichen</i>
|
|
und <i>Format-Specifier</i>:
|
|
<ul>
|
|
<li>Einfache Zeichen werden direkt ausgegeben
|
|
<li>Format-Specifier holen Argumente von der Argument-Liste
|
|
und formatieren sie
|
|
</ul>
|
|
<h2>Format-Specifier</h2>
|
|
Ein Format-Specifier hat folgende Form:
|
|
<p>
|
|
<tt>% [flags] [width] [.prec] type</tt>
|
|
<p>
|
|
Jede Format-Spezifizierung beginnt mit dem Prozentzeichen (<tt>%</tt>).
|
|
Nach dem <tt>%</tt> kommt folgendes, in dieser Reihenfolge:
|
|
<ul>
|
|
<li>optional eine Folge von Flag-Zeichen, <tt>[flags]</tt>
|
|
<li>optional ein Breiten-Specifier, <tt>[width]</tt>
|
|
<li>optional ein Präzisions-Specifier, <tt>[.prec]</tt>
|
|
<li>das Konvertiertyp-Zeichen, <tt>type</tt>
|
|
</ul>
|
|
<h2>Konvertiertyp-Zeichen</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>d</tt> </td><td width=20><td><b>signed</b> decimal <b>int</b></td></tr>
|
|
<tr><td><tt>o</tt> </td><td width=20><td><b>unsigned</b> octal <b>int</b></td></tr>
|
|
<tr><td><tt>u</tt> </td><td width=20><td><b>unsigned</b> decimal <b>int</b></td></tr>
|
|
<tr><td><tt>x</tt> </td><td width=20><td><b>unsigned</b> hexadecimal <b>int</b> (with <b>a</b>, <b>b</b>,...)</td></tr>
|
|
<tr><td><tt>X</tt> </td><td width=20><td><b>unsigned</b> hexadecimal <b>int</b> (with <b>A</b>, <b>B</b>,...)</td></tr>
|
|
<tr><td><tt>f</tt> </td><td width=20><td><b>signed real</b> value von der Form <tt>[-]dddd.dddd</tt></td></tr>
|
|
<tr><td><tt>e</tt> </td><td width=20><td><b>signed real</b> value von der Form <tt>[-]d.dddd</tt>e<tt>[±]ddd</tt></td></tr>
|
|
<tr><td><tt>E</tt> </td><td width=20><td>wie <tt>e</tt>, aber mit <b>E</b> für Exponent</td></tr>
|
|
<tr><td><tt>g</tt> </td><td width=20><td><b>signed real</b> value entweder wie <tt>e</tt> oder <tt>f</tt>, abhängig vom gegebenen Wert und Präzision</td></tr>
|
|
<tr><td><tt>G</tt> </td><td width=20><td>wie <tt>g</tt>, aber mit <b>E</b> für Exponent, wenn <tt>e</tt>-Format verwendet wird</td></tr>
|
|
<tr><td><tt>c</tt> </td><td width=20><td>einzelnes Zeichen</td></tr>
|
|
<tr><td><tt>s</tt> </td><td width=20><td>Character-String</td></tr>
|
|
<tr><td><tt>%</tt> </td><td width=20><td>das <tt>%</tt>-Zeichen wird ausgegeben</td></tr>
|
|
</table>
|
|
<h2>Flag-Zeichen</h2>
|
|
Die folgenden Flag-Zeichen können in jeder Kombination und Reihenfolge
|
|
auftreten.
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>"-"</tt> </td><td width=20><td>das formatierte Argument wird innerhalb des Feldes linksbündig ausgegeben; normalerweise ist die Ausgabe rechtsbündig</td></tr>
|
|
<tr><td><tt>"+"</tt> </td><td width=20><td>ein positiver Wert mit Vorzeichen wird mit Pluszeichen (<tt>+</tt>) ausgegeben; normalerweise werden nur negative Werte mit Vorzeichen ausgegeben</td></tr>
|
|
<tr><td><tt>" "</tt> </td><td width=20><td>ein positiver Wert mit Vorzeichen wird mit Leerzeichen am Anfang ausgegeben; wenn <tt>"+"</tt> und <tt>" "</tt> angegeben sind, überschreibt <tt>"+"</tt> die Angabe <tt>" "</tt></td></tr>
|
|
</table>
|
|
<h2>Width-Specifier</h2>
|
|
Der Width-Specifier setzt die minimale Feldbreite für einen Ausgabewert.
|
|
<p>
|
|
Die Breite wird entweder direkt mit einem Dezimalstellen-String oder
|
|
indirekt mit einem Stern (<tt>*</tt>) gesetzt.
|
|
Wenn Sie <tt>*</tt> verwenden, legt das nächste Argument im Aufruf
|
|
(das vom Typ <tt>int</tt> sein muss) die minimale Feldbreite fest.
|
|
<p>
|
|
Auf keinen Fall führt ein nicht existierendes oder zu ein kleines Feld
|
|
dazu, dass ein Wert abgeschnitten wird. Wenn das Ergebnis der Konvertierung
|
|
breiter ist als das Feld, wird das Feld einfach so vergrößert, dass
|
|
das Ergebnis platz hat.
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt><i>n</i></tt> </td><td width=20><td>Mindestens <i>n</i> Zeichen werden ausgegeben. Wenn der Ausgabewert weniger als <i>n</i> Zeichen hat, wird er mit Leerzeichen aufgefüllt (rechts wenn das <tt>"-"</tt>-Flag gesetzt ist, sonst links).</td></tr>
|
|
<tr><td><tt>0<i>n</i></tt> </td><td width=20><td>Mindestens <i>n</i> Zeichen werden ausgegeben. Wenn der Ausgabewert weniger als <i>n</i> Zeichen hat, wird links mit Nullen aufgefüllt.</td></tr>
|
|
<tr><td><tt>*</tt> </td><td width=20><td>Die Argument-Liste liefert den Width-Specifier, der dem eigentlichen (zu formatierenden) Argument vorausgehen muss.</td></tr>
|
|
</table>
|
|
<h2>Präzisions-Specifier</h2>
|
|
Ein Präzisions-Specifier beginnt immer mit einem Punkt (<tt>.</tt>), um
|
|
ihn von einem vorangehenden Width-Specifier zu trennen.
|
|
Dann wird, wie bei "Width", die Präzision entweder direkt mit einem
|
|
Dezimalstellen-String oder indirekt mit einem Stern (<tt>*</tt>) angegeben.
|
|
Wenn Sie <tt>*</tt> verwenden, legt das nächste Argument im Aufruf
|
|
(das vom Typ <tt>int</tt> sein muss) die Präzision fest.
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td>keiner </td><td width=20><td>Präzision auf Standardwert gesetzt.</td></tr>
|
|
<tr><td><tt>.0</tt> </td><td width=20><td>Für <tt>int</tt>-Typen, Präzision wird auf Default gesetzt; für <tt>real</tt>-Typen, kein Dezimalpunkt wird ausgegeben.</td></tr>
|
|
<tr><td><tt>.<i>n</i></tt> </td><td width=20><td><i>n</i> Zeichen oder <i>n</i> Dezimalstellen werden ausgegeben. Wenn der Ausgabewert mehr als <i>n</i> Zeichen hat, kann er abgeschnitten oder gerundet werden (abhängig vom Typ-Zeichen).</td></tr>
|
|
<tr><td><tt>*</tt> </td><td width=20><td>Die Argument-Liste liefert den Präzisions-Specifier, der dem eigentlichen (zu formatierenden) Argument vorausgehen muss.</td></tr>
|
|
</table>
|
|
<h2>Default-Präzisionswerte</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>douxX</tt> </td><td width=20><td>1</td></tr>
|
|
<tr><td><tt>eEf</tt> </td><td width=20><td>6</td></tr>
|
|
<tr><td><tt>gG</tt> </td><td width=20><td>alle signifikanten Stellen</td></tr>
|
|
<tr><td><tt>c</tt> </td><td width=20><td>keine Auswirkung</td></tr>
|
|
<tr><td><tt>s</tt> </td><td width=20><td>gesamten String ausgeben</td></tr>
|
|
</table>
|
|
<h2>Wie die Präzisionsangabe (<tt>.n</tt>) die Konvertierung beeinflusst</h2>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>douxX</tt> </td><td width=20><td><i>.n</i> spezifiziert dass mindestens <i>n</i> Zeichen ausgegeben werden. Wenn das Eingangs-Argument weniger als <i>n</i> Stellen hat, wird der Ausgangswert links mit Nullen aufgefüllt. Wenn das Eingangs-Argument mehr als <i>n</i> Stellen hat, wir die Ausgabe <b>nicht</b> abgeschnitten.</td></tr>
|
|
<tr><td><tt>eEf</tt> </td><td width=20><td><i>.n</i> spezifiziert dass <i>n</i> Zeichen nach dem Dezimalpunkt ausgegeben werden, und die letzte ausgegebene Stelle wird gerundet.</td></tr>
|
|
<tr><td><tt>gG</tt> </td><td width=20><td><i>.n</i> spezifiziert dass höchstens <i>n</i> signifikante Stellen ausgegeben werden.</td></tr>
|
|
<tr><td><tt>c</tt> </td><td width=20><td><i>.n</i> hat keinen Einfluss auf die Ausgabe.</td></tr>
|
|
<tr><td><tt>s</tt> </td><td width=20><td><i>.n</i> spezifiziert dass nicht mehr als <i>n</i> Zeichen gedruckt werden.</td></tr>
|
|
</table>
|
|
<h2>Der binäre Wert 0</h2>
|
|
Im Gegensatz zu <a href=#270>sprintf</a> kann die <tt>printf</tt>-Funktion den
|
|
binären Wert 0 (0x00) ausgeben.
|
|
<pre>
|
|
char c = 0x00;
|
|
printf("%c", c);
|
|
</pre>
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
int i = 42;
|
|
real r = 3.14;
|
|
char c = 'A';
|
|
string s = "Hello";
|
|
printf("Integer: %8d\n", i);
|
|
printf("Hex: %8X\n", i);
|
|
printf("Real: %8f\n", r);
|
|
printf("Char: %-8c\n", c);
|
|
printf("String: %-8s\n", s);
|
|
</pre>
|
|
|
|
|
|
<a name=270>
|
|
<h1>sprintf()</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Schreibt eine formatierte Ausgabe in einen String.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>int sprintf(string result, string format[, argument, ...]);</tt>
|
|
<dt>
|
|
<b>Rückgabewert</b>
|
|
<dd>
|
|
Die <tt>sprintf</tt>-Funktion liefert die Zahl der Zeichen, die in den <tt>result</tt>-String
|
|
geschrieben wurden.
|
|
<p>
|
|
Im Falle eines Fehlers liefert <tt>sprintf</tt> den Wert <tt>-1</tt>.
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#269>printf</a>
|
|
<h2>Format-String</h2>
|
|
Siehe <a href=#269>printf</a>.
|
|
<h2>Der binäre Wert 0</h2>
|
|
Bitte beachten Sie, dass <tt>sprintf</tt> den binären Wert 0 (0x00) nicht verarbeiten
|
|
kann. Wenn der Ergebnis-String 0x00 enthält, werden die folgenden Zeichen ignoriert.
|
|
Verwenden Sie <a href=#269>printf</a> um binäre Daten auszugeben.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
string result;
|
|
int number = 42;
|
|
sprintf(result, "The number is %d", number);
|
|
</pre>
|
|
|
|
|
|
<a name=271>
|
|
<h1>String-Funktionen</h1>
|
|
<i>String-Funktionen</i> werden dazu verwendet, Character-Strings zu
|
|
manipulieren.
|
|
<p>
|
|
Die folgenden String-Funktionen sind verfügbar:
|
|
<ul>
|
|
<li><a href=#272>strchr()</a>
|
|
<li><a href=#273>strjoin()</a>
|
|
<li><a href=#274>strlen()</a>
|
|
<li><a href=#275>strlwr()</a>
|
|
<li><a href=#276>strrchr()</a>
|
|
<li><a href=#277>strrstr()</a>
|
|
<li><a href=#278>strsplit()</a>
|
|
<li><a href=#279>strstr()</a>
|
|
<li><a href=#280>strsub()</a>
|
|
<li><a href=#281>strtod()</a>
|
|
<li><a href=#282>strtol()</a>
|
|
<li><a href=#283>strupr()</a>
|
|
<li><a href=#284>strxstr()</a>
|
|
</ul>
|
|
|
|
|
|
<a name=272>
|
|
<h1>strchr()</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Durchsucht einen String nach dem ersten Vorkommen eines gegebenen Zeichens.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>int strchr(string s, char c[, int index]);</tt>
|
|
<dt>
|
|
<b>Rückgabewert</b>
|
|
<dd>
|
|
Die <tt>strchr</tt>-Funktion liefert den Integer-Offset des Zeichen im String
|
|
oder <tt>-1</tt>, wenn das Zeichen nicht vorkommt.
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#276>strrchr</a>,
|
|
<a href=#279>strstr</a>
|
|
<p>
|
|
Falls <tt>index</tt> angegeben wird, beginnt die Suche an dieser Position.
|
|
Negative Werte werden vom Ende des Strings her gezählt.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
string s = "This is a string";
|
|
char c = 'a';
|
|
int pos = strchr(s, c);
|
|
if (pos >= 0)
|
|
printf("The character %c is at position %d\n", c, pos);
|
|
else
|
|
printf("The character was not found\n");
|
|
</pre>
|
|
|
|
|
|
<a name=273>
|
|
<h1>strjoin()</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Erzeugt aus einem String-Array einen einzelnen String.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>string strjoin(string array[], char separator);</tt>
|
|
<dt>
|
|
<b>Rückgabewert</b>
|
|
<dd>
|
|
Die <tt>strjoin</tt>-Funktion liefert die kombinierten Einträge von <tt>array</tt>.
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#278>strsplit</a>,
|
|
<a href=#262>lookup</a>,
|
|
<a href=#253>fileread</a>
|
|
<p>
|
|
<tt>strjoin</tt> fügt alle Einträge aus <tt>array</tt>, getrennt durch den angegebenen
|
|
<tt>separator</tt> zusammen, und liefert den Ergebnis-String.
|
|
<p>
|
|
Wenn <tt>separator</tt> ein Newline-Zeichen (<tt>"\n"</tt>) ist, wird der Ergebnis-String
|
|
mit einem Newline-Zeichen abgeschlossen.
|
|
So erhält man eine Textdatei mit N Zeilen (jede davon ist mit einem Newline-Zeichen abgeschlossen).
|
|
Die Datei wird mit den Funktionen <a href=#253>fileread()</a> eingelesen und mit
|
|
<a href=#278>split</a> in ein Array mit N Strings aufgeteilt und zu dem ursprünglichen
|
|
String, der aus der Datei eingelesen wurde, hinzugefügt.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
string a[] = { "Field 1", "Field 2", "Field 3" };
|
|
string s = strjoin(a, ':');
|
|
</pre>
|
|
|
|
|
|
<a name=274>
|
|
<h1>strlen()</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Berechnet die Länge eines Strings.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>int strlen(string s);</tt>
|
|
<dt>
|
|
<b>Rückgabewert</b>
|
|
<dd>
|
|
Die <tt>strlen</tt>-Funktion liefert die Zahl der Zeichen im String.
|
|
</dl>
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
string s = "This is a string";
|
|
int l = strlen(s);
|
|
printf("The string is %d characters long\n", l);
|
|
</pre>
|
|
|
|
|
|
<a name=275>
|
|
<h1>strlwr()</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Wandelt Großbuchstaben in einem String in Kleinbuchstaben um.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>string strlwr(string s);</tt>
|
|
<dt>
|
|
<b>Rückgabewert</b>
|
|
<dd>
|
|
Die <tt>strlwr</tt>-Funktion liefert den modifizierten String.
|
|
Der Original-String (als Parameter übergeben) wird nicht geändert.
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#283>strupr</a>,
|
|
<a href=#246>tolower</a>
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
string s = "This Is A String";
|
|
string r = strlwr(s);
|
|
printf("Prior to strlwr: %s - after strlwr: %s\n", s, r);
|
|
</pre>
|
|
|
|
|
|
<a name=276>
|
|
<h1>strrchr()</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Durchsucht einen String nach dem letzten Vorkommen eines gegebenen Zeichens.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>int strrchr(string s, char c[, int index]);</tt>
|
|
<dt>
|
|
<b>Rückgabewert</b>
|
|
<dd>
|
|
Die <tt>strrchr</tt>-Funktion liefert den Integer-Offset des Zeichens im String
|
|
oder <tt>-1</tt>, wenn das Zeichen nicht vorkommt.
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#272>strchr</a>,
|
|
<a href=#277>strrstr</a>
|
|
<p>
|
|
Falls <tt>index</tt> angegeben wird, beginnt die Suche an dieser Position.
|
|
Negative Werte werden vom Ende des Strings her gezählt.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
string s = "This is a string";
|
|
char c = 'a';
|
|
int pos = strrchr(s, c);
|
|
if (pos >= 0)
|
|
printf("The character %c is at position %d\n", c, pos);
|
|
else
|
|
printf("The character was not found\n");
|
|
</pre>
|
|
|
|
|
|
<a name=277>
|
|
<h1>strrstr()</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Durchsucht einen String nach dem letzten Vorkommen eines gegebenen
|
|
Substrings.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>int strrstr(string s1, string s2[, int index]);</tt>
|
|
<dt>
|
|
<b>Rückgabewert</b>
|
|
<dd>
|
|
Die <tt>strrstr</tt>-Funktion liefert den Integer-Offset des ersten
|
|
Zeichens von s2 in s1, oder <tt>-1</tt>, wenn der Substring nicht
|
|
vorkommt.
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#279>strstr</a>,
|
|
<a href=#276>strrchr</a>
|
|
<p>
|
|
Falls <tt>index</tt> angegeben wird, beginnt die Suche an dieser Position.
|
|
Negative Werte werden vom Ende des Strings her gezählt.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
string s1 = "This is a string", s2 = "is a";
|
|
int pos = strrstr(s1, s2);
|
|
if (pos >= 0)
|
|
printf("The substring starts at %d\n", pos);
|
|
else
|
|
printf("The substring was not found\n");
|
|
</pre>
|
|
|
|
|
|
<a name=278>
|
|
<h1>strsplit()</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Teilt einen String in einzelne Felder.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>int strsplit(string &array[], string s, char separator);</tt>
|
|
<dt>
|
|
<b>Rückgabewert</b>
|
|
<dd>
|
|
Die <tt>strsplit</tt>-Funktion liefert die Anzahl der Einträge die nach <tt>array</tt> kopiert wurden.
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#273>strjoin</a>,
|
|
<a href=#262>lookup</a>,
|
|
<a href=#253>fileread</a>
|
|
<p>
|
|
<tt>strsplit</tt> teilt den String <tt>s</tt> am angegebenen <tt>separator</tt>
|
|
und speichert die so erzeugten Felder in <tt>array</tt>.
|
|
<p>
|
|
Wenn <tt>separator</tt> ein Newline-Zeichen ist (<tt>"\n"</tt>), wird das letzte Feld
|
|
einfach ignoriert, sofern es leer ist.
|
|
So erhält man eine Textdatei, die aus N Zeilen besteht (jede durch Newline beendet).
|
|
Diese wird durch die Funktion <a href=#253>fileread()</a> eingelesen
|
|
und in ein Array von N Strings aufgeteilt.
|
|
Mit jedem anderen <tt>separator</tt> ist ein leeres Feld am Ende des Strings gültig.
|
|
So entstehen aus <tt>"a:b:c:"</tt> 4 Felder, das letzte davon ist leer.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
string a[];
|
|
int n = strsplit(a, "Field 1:Field 2:Field 3", ':');
|
|
</pre>
|
|
|
|
|
|
<a name=279>
|
|
<h1>strstr()</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Durchsucht einen String nach dem ersten Vorkommen eines gegebenen Substrings.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>int strstr(string s1, string s2[, int index]);</tt>
|
|
<dt>
|
|
<b>Rückgabewert</b>
|
|
<dd>
|
|
Die <tt>strstr</tt>-Funktion liefert den Integer-Offset des ersten
|
|
Zeichens von s2 in s1, oder <tt>-1</tt>, wenn der Substring nicht
|
|
vorkommt.
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#277>strrstr</a>,
|
|
<a href=#272>strchr</a>,
|
|
<a href=#284>strxstr</a>
|
|
<p>
|
|
Falls <tt>index</tt> angegeben wird, beginnt die Suche an dieser Position.
|
|
Negative Werte werden vom Ende des Strings her gezählt.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
string s1 = "This is a string", s2 = "is a";
|
|
int pos = strstr(s1, s2);
|
|
if (pos >= 0)
|
|
printf("The substring starts at %d\n", pos);
|
|
else
|
|
printf("The substring was not found\n");
|
|
</pre>
|
|
|
|
|
|
<a name=280>
|
|
<h1>strsub()</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Extrahiert einen Substring aus einem String.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>string strsub(string s, int start[, int length]);</tt>
|
|
<dt>
|
|
<b>Rückgabewert</b>
|
|
<dd>
|
|
Die <tt>strsub</tt>-Funktion liefert den Substring, der durch
|
|
<tt>start</tt> und <tt>length</tt> definiert ist.
|
|
<p>
|
|
Der Wert für <tt>length</tt> muss positiv sein, andernfalls wird ein leerer
|
|
String zurückgegeben. Wenn <tt>length</tt> nicht angegeben ist, wird der
|
|
Reststring (beginnend bei <tt>start</tt>) zurückgegeben.
|
|
<p>
|
|
Wenn <tt>start</tt> auf eine Position ausserhalb des Strings deutet, wird
|
|
ein leerer String zurückgegeben.
|
|
</dl>
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
string s = "This is a string";
|
|
string t = strsub(s, 4, 7);
|
|
printf("The extracted substring is: %s\n", t);
|
|
</pre>
|
|
|
|
|
|
<a name=281>
|
|
<h1>strtod()</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Konvertiert einen String in einen Real-Wert.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>real strtod(string s);</tt>
|
|
<dt>
|
|
<b>Rückgabewert</b>
|
|
<dd>
|
|
Die <tt>strtod</tt>-Funktion liefert die numerische Repräsentation
|
|
eines gegebenen Strings als <tt>real</tt>-Wert. Die Konvertierung
|
|
wird beim ersten Zeichen beendet, das nicht dem Format einer
|
|
<a href=#153>Real-Konstanten</a> entspricht.
|
|
Wenn ein Fehler während er Konvertierung auftaucht, wir der Wert
|
|
<tt>0.0</tt> zurückgegeben.
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#282>strtol</a>
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
string s = "3.1415";
|
|
real r = strtod(s);
|
|
printf("The value is %f\n", r);
|
|
</pre>
|
|
|
|
|
|
<a name=282>
|
|
<h1>strtol()</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Konvertiert einen String in einen Integer-Wert.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>int strtol(string s);</tt>
|
|
<dt>
|
|
<b>Rückgabewert</b>
|
|
<dd>
|
|
Die <tt>strtol</tt>-Funktion liefert die numerische Representation
|
|
eines gegebenen Strings als <tt>int</tt>-Wert. Die Konvertierung
|
|
wird beim ersten Zeichen beendet, das nicht dem Format einer
|
|
<a href=#152>Integer-Konstanten</a> entspricht.
|
|
Wenn ein Fehler während der Konvertierung auftaucht, wir der Wert
|
|
<tt>0</tt> zurückgegeben.
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#281>strtod</a>
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
string s = "1234";
|
|
int i = strtol(s);
|
|
printf("The value is %d\n", i);
|
|
</pre>
|
|
|
|
|
|
<a name=283>
|
|
<h1>strupr()</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Konvertiert Kleinbuchstaben in einem String in Großbuchstaben.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>string strupr(string s);</tt>
|
|
<dt>
|
|
<b>Rückgabewert</b>
|
|
<dd>
|
|
Die <tt>strupr</tt>-Funktion liefert den modifizierten String.
|
|
Der Original-String (als Parameter übergeben) wird nicht geändert.
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#275>strlwr</a>,
|
|
<a href=#246>toupper</a>
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
string s = "This Is A String";
|
|
string r = strupr(s);
|
|
printf("Prior to strupr: %s - after strupr: %s\n", s, r);
|
|
</pre>
|
|
|
|
|
|
<a name=284>
|
|
<h1>strxstr()</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Durchsucht einen String nach dem ersten Vorkommen eines regulären Ausdrucks.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>int strxstr(string s1, string s2[, int index[, int &length]]);</tt>
|
|
<dt>
|
|
<b>Rückgabewert</b>
|
|
<dd>
|
|
Die <tt>strxstr</tt>-Funktion liefert den Integer-Offset des Teilstrings
|
|
in s1, auf den der reguläre Ausdruck in s2 passt, oder <tt>-1</tt>, wenn der
|
|
reguläre Ausdruck nicht passt.
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#279>strstr</a>,
|
|
<a href=#272>strchr</a>,
|
|
<a href=#277>strrstr</a>
|
|
<p>
|
|
Falls <tt>index</tt> angegeben wird, beginnt die Suche an dieser Position.
|
|
Negative Werte werden vom Ende des Strings her gezählt.
|
|
<p>
|
|
Falls <tt>length</tt> angegeben wird, wird die aktuelle Länge des gefundenen
|
|
Teilstrings in dieser Variablen zurückgegeben.
|
|
<p>
|
|
<i>Reguläre Ausdrücke</i> erlauben es Ihnen, ein Muster innerhalb eines Text-Strings
|
|
zu finden. Zum Beispiel würde der reguläre Ausdruck "i.*a" eine Zeichenfolge finden,
|
|
die mit 'i' beginnt, gefolgt von einem beliebigen Zeichen ('.') beliebig oft ('*'),
|
|
und mit 'a' endet. Er würde auf "is a", "is this a" oder "ia" passen.<br>
|
|
Einzelheiten zu regulären Ausdrücken finden Sie zum Beispiel in dem Buch
|
|
<i>Reguläre Ausdrücke</i> von Jeffrey E. F. Friedl.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
string s1 = "This is a string", s2 = "i.*a";
|
|
int len = 0;
|
|
int pos = strxstr(s1, s2, 0, len);
|
|
if (pos >= 0)
|
|
printf("The substring starts at %d and is %d charcaters long\n", pos, len);
|
|
else
|
|
printf("The substring was not found\n");
|
|
</pre>
|
|
|
|
|
|
<a name=285>
|
|
<h1>Zeit-Funktionen</h1>
|
|
<i>Zeit-Funktionen</i> werden dazu verwendet, die Zeit- und Datums-
|
|
Informationen zu erhalten und weiterzuverarbeiten.
|
|
<p>
|
|
Die folgenden Zeit-Funktionen sind verfügbar:
|
|
<ul>
|
|
<li><a href=#288>t2day()</a>
|
|
<li><a href=#288>t2dayofweek()</a>
|
|
<li><a href=#288>t2hour()</a>
|
|
<li><a href=#288>t2minute()</a>
|
|
<li><a href=#288>t2month()</a>
|
|
<li><a href=#288>t2second()</a>
|
|
<li><a href=#288>t2string()</a>
|
|
<li><a href=#288>t2year()</a>
|
|
<li><a href=#286>time()</a>
|
|
<li><a href=#287>timems()</a>
|
|
</ul>
|
|
|
|
|
|
<a name=286>
|
|
<h1>time()</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Holt die gegenwärtige Systemzeit.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>int time(void);</tt>
|
|
<dt>
|
|
<b>Rückgabewert</b>
|
|
<dd>
|
|
Die <tt>time</tt>-Funktion liefert die gegenwärtige Systemzeit als Zahl von
|
|
Sekunden, die seit einem systemabhängigen Referenzzeitpunkt vergangen sind.
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#288>Zeit-Konvertierungen</a>,
|
|
<a href=#251>filetime</a>
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
int CurrentTime = time();
|
|
</pre>
|
|
|
|
|
|
<a name=287>
|
|
<h1>timems()</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Liefert die Zeit in Millisekunden seit dem Start des ULPs.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>int timems(void);</tt>
|
|
<dt>
|
|
<b>Rückgabewert</b>
|
|
<dd>
|
|
Die <tt>timems</tt>-Funktion liefert die Zeit in Millisekunden seit dem Start des ULPs.
|
|
<p>
|
|
Nach 86400000 Millisekunden (d.h. alle 24 Stunden) beginnt der Wert wieder bei 0.
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#288>Zeit-Konvertierungen</a>,
|
|
<a href=#251>filetime</a>,
|
|
<a href=#287>timems()</a>
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
int elapsed = timems();
|
|
</pre>
|
|
|
|
|
|
<a name=288>
|
|
<h1>Zeit-Konvertierungen</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Zeit-Wert in Tag, Monat, Jahr etc. konvertieren.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>int t2day(int t);</tt><br>
|
|
<tt>int t2dayofweek(int t);</tt><br>
|
|
<tt>int t2hour(int t);</tt><br>
|
|
<tt>int t2minute(int t);</tt><br>
|
|
<tt>int t2month(int t);</tt><br>
|
|
<tt>int t2second(int t);</tt><br>
|
|
<tt>int t2year(int t);</tt><br>
|
|
<br>
|
|
<tt>string t2string(int t);</tt>
|
|
<dt>
|
|
<b>Rückgabewert</b>
|
|
<dd>
|
|
<tt>t2day </tt> liefert den Tag des Monats (<tt>1</tt>..<tt>31</tt>)<br>
|
|
<tt>t2dayofweek</tt> liefert den Tag der Woche (<tt>0</tt>=sunday..<tt>6</tt>)<br>
|
|
<tt>t2hour </tt> liefert die Stunde (<tt>0</tt>..<tt>23</tt>)<br>
|
|
<tt>t2minute </tt> liefert die Minute (<tt>0</tt>..<tt>59</tt>)<br>
|
|
<tt>t2month </tt> liefert den Monat (<tt>0</tt>..<tt>11</tt>)<br>
|
|
<tt>t2second </tt> liefert die Sekunde (<tt>0</tt>..<tt>59</tt>)<br>
|
|
<tt>t2year </tt> liefert das Jahr (einschließlich Jahrhundert!)<br>
|
|
<tt>t2string </tt> liefert einen formatierten String, der Datum und Zeit enthält
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#286>time</a>
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
int t = time();
|
|
printf("It is now %02d:%02d:%02d\n",
|
|
t2hour(t), t2minute(t), t2second(t));
|
|
</pre>
|
|
|
|
|
|
<a name=289>
|
|
<h1>Objekt-Funktionen</h1>
|
|
<i>Objekt-Funktionen</i> werden dazu verwendet, allgemeine Informationen von
|
|
Objekten zu erfragen.
|
|
<p>
|
|
Die folgenden Objekt-Funktionen sind verfügbar:
|
|
<ul>
|
|
<li><a href=#290>clrgroup()</a>
|
|
<li><a href=#291>ingroup()</a>
|
|
<li><a href=#292>setgroup()</a>
|
|
</ul>
|
|
|
|
|
|
<a name=290>
|
|
<h1>clrgroup()</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Löscht die Gruppen-Flags eines Objekts.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>void clrgroup(object);</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#291>ingroup()</a>,
|
|
<a href=#292>setgroup()</a>,
|
|
<a href=#54>GROUP-Befehl</a>
|
|
<p>
|
|
Die <tt>clrgroup()</tt>-Funktion löscht die Gruppen-Flags des gegebenen Objekts,
|
|
so dass es nicht mehr Bestandteil einer vorher definierten Gruppe ist.
|
|
<p>
|
|
Wird die Funktion auf ein Objekt angewendet, das andere Objekte enthält (wie
|
|
etwa ein UL_BOARD oder UL_NET), so werden die Gruppen-Flags aller enthaltenen
|
|
Objekte rekursiv gelöscht.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
board(B) {
|
|
B.elements(E)
|
|
clrgroup(E);
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=291>
|
|
<h1>ingroup()</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Prüft ob ein Objekt in der Gruppe liegt.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>int ingroup(object);</tt>
|
|
<dt>
|
|
<b>Rückgabewert</b>
|
|
<dd>
|
|
Die <tt>ingroup</tt>-Funktion liefert einen Wert ungleich 0 wenn das gegebene Objekt
|
|
in der Gruppe liegt.
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#290>clrgroup()</a>,
|
|
<a href=#292>setgroup()</a>,
|
|
<a href=#54>GROUP-Befehl</a>
|
|
<p>
|
|
Wurde im Editor eine Gruppe definiert, so kann die <tt>ingroup()</tt>-Funktion
|
|
benutzt werden um zu prüfen, ob ein bestimmtes Objekt Bestandteil der Gruppe ist.
|
|
<p>
|
|
Objekte mit einem einzelnen Aufhängepunkt, die in der aktuellen Zeichnung gezielt
|
|
selektiert werden können (wie etwa UL_TEXT, UL_VIA, UL_CIRCLE etc.), liefern beim
|
|
Aufruf von <tt>ingroup()</tt> einen Wert ungleich 0 wenn dieser Aufhängepunkt
|
|
innerhalb der Gruppe liegt.
|
|
<p>
|
|
Ein UL_WIRE liefert 0, 1, 2 oder 3, je nachdem, ob keiner, der erste, der zweite
|
|
oder beide Endpunkte in der Gruppe liegen.
|
|
<p>
|
|
Ein UL_RECTANGLE bzw. UL_FRAME liefert einen Wert ungleich 0 wenn einer oder mehrere seiner
|
|
Eckpunkte in der Gruppe liegen.
|
|
Der Wert hat Bit 0 gesetzt für die rechte obere Ecke, Bit 1 für die linke obere, Bit 2
|
|
für die linke untere und Bit 3 für die rechte untere Ecke.
|
|
<p>
|
|
Objekte ohne Aufhängepunkt (wie etwa UL_NET, UL_SEGMENT, UL_SIGNAL etc.) liefern
|
|
einen Wert ungleich 0 wenn eines oder mehrere der Objekte, die sie enthalten,
|
|
in der Gruppe liegen.
|
|
<p>
|
|
UL_CONTACTREF und UL_PINREF haben zwar selber keinen Aufhängepunkt, liefern aber
|
|
einen Wert ungleich 0 wenn der referenzierte UL_CONTACT bzw. UL_PIN innerhalb der
|
|
Gruppe liegt.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
output("group.txt") {
|
|
board(B) {
|
|
B.elements(E) {
|
|
if (ingroup(E))
|
|
printf("Element %s is in the group\n", E.name);
|
|
}
|
|
}
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=292>
|
|
<h1>setgroup()</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Setzt die Gruppen-Flags eines Objekts.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>void setgroup(object[, int flags]);</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#290>clrgroup()</a>,
|
|
<a href=#291>ingroup()</a>,
|
|
<a href=#54>GROUP-Befehl</a>
|
|
<p>
|
|
Die <tt>setgroup()</tt>-Funktion setzt die Gruppen-Flags des gegebenen Objekts,
|
|
so dass es Bestandteil der Gruppe ist.
|
|
<p>
|
|
Werden keine <tt>flags</tt> angegeben, so wird das Objekt als Ganzes zur Gruppe
|
|
hinzugefügt (d.h. alle seine Aufhängepunkte, falls es mehrere hat).
|
|
<p>
|
|
Hat <tt>flags</tt> einen Wert ungleich Null, werden nur die Gruppen-Flags der
|
|
angegebenen Punkte gesetzt. Für einen UL_WIRE bedeutet dies, dass <tt>'1'</tt>
|
|
das Gruppen-Flag des ersten Punkts setzt, <tt>'2'</tt> das des zweiten und
|
|
<tt>'3'</tt> beide. Etwaige bereits gesetzte Gruppen-Flags werden durch den
|
|
Aufruf von <tt>setgroup()</tt> nicht verändert.
|
|
<p>
|
|
Wird die Funktion auf ein Objekt angewendet, das andere Objekte enthält (wie
|
|
etwa ein UL_BOARD oder UL_NET), so werden die Gruppen-Flags aller enthaltenen
|
|
Objekte rekursiv gesetzt.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
board(B) {
|
|
B.elements(E)
|
|
setgroup(E);
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=293>
|
|
<h1>Builtin-Statements</h1>
|
|
<i>Builtin-Statements</i> werden im allgemeinen dazu verwendet,
|
|
einen Kontext zu eröffnen, der den Zugriff auf Datenstrukturen und Dateien
|
|
erlaubt.
|
|
<p>
|
|
Die allgemeine Syntax von Builtin-Statements ist
|
|
<pre>
|
|
name(parameters) statement
|
|
</pre>
|
|
wobei <tt>name</tt> der Name des Builtin-Statement ist, <tt>parameters</tt>
|
|
steht für einen oder mehrere Parameter, und <tt>statement</tt> ist der Code,
|
|
der innerhalb des vom Builtin-Statement geöffneten Kontexts ausgeführt wird.
|
|
<p>
|
|
Beachten Sie, dass es sich bei <tt>statement</tt> um eine Compound-Statement
|
|
handeln kann, wie in
|
|
<pre>
|
|
board(B) {
|
|
B.elements(E) printf("Element: %s\n", E.name);
|
|
B.Signals(S) printf("Signal: %s\n", S.name);
|
|
}
|
|
</pre>
|
|
Die folgenden Builtin-Statements sind verfügbar:
|
|
<ul>
|
|
<li><a href=#294>board()</a>
|
|
<li><a href=#295>deviceset()</a>
|
|
<li><a href=#296>library()</a>
|
|
<li><a href=#297>output()</a>
|
|
<li><a href=#298>package()</a>
|
|
<li><a href=#299>schematic()</a>
|
|
<li><a href=#300>sheet()</a>
|
|
<li><a href=#301>symbol()</a>
|
|
</ul>
|
|
|
|
|
|
<a name=294>
|
|
<h1>board()</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Öffnet einen Board-Kontext.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>board(identifier) statement</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#299>schematic</a>,
|
|
<a href=#296>library</a>
|
|
<p>
|
|
Das <tt>board</tt>-Statement öffnet einen Board-Kontext wenn das gegenwärtige
|
|
Editor-Fenster ein Board enthält. Eine Variable vom Typ
|
|
<a href=#175>UL_BOARD</a> wird angelegt und erhält den Namen,
|
|
den <tt>identifier</tt> angibt.
|
|
<p>
|
|
Sobald der Board-Kontext erfolgreich geöffnet wurde und eine Board-Variable
|
|
angelegt ist, wird <tt>statement</tt> ausgeführt. Innerhalb des
|
|
Gültigkeitsbereichs von <tt>statement</tt> kann man auf die Board-Variable
|
|
zugreifen, um weitere Daten aus dem Board zu erhalten.
|
|
<p>
|
|
Wenn das gegenwärtige Editor-Fenster kein Board enthält, wird eine
|
|
Fehlermeldung ausgegeben, und das ULP wird beendet.
|
|
<h2>Prüfen, ob ein Board geladen ist</h2>
|
|
Mit dem <tt>board</tt>-Statement ohne Angabe eines Arguments können
|
|
Sie prüfen, ob das gegenwärtige Editor-Fenster ein Board enthält.
|
|
In diesem Fall verhält sich <tt>board</tt> wie eine Integer-Konstante,
|
|
die den Wert <tt>1</tt> zurückgibt, sofern ein Board geladen ist.
|
|
Andernfalls wird der Wert <tt>0</tt> zurückgegeben.
|
|
<h2>Zugriff auf ein Board von einem Schaltplan aus</h2>
|
|
Wenn das gegenwärtige Editor-Fenster einen Schaltplan enthält,
|
|
können Sie trotzdem auf das zugehörige Board zugreifen, indem Sie
|
|
dem <tt>board</tt>-Statement den Präfix <tt>project</tt> voranstellen,
|
|
wie in
|
|
<pre>
|
|
project.board(B) { ... }
|
|
</pre>
|
|
Das öffnet einen Board-Kontext, unabhängig davon, ob das gegenwärtige
|
|
Editor-Fenster ein Board oder einen Schaltplan enthält. Allerdings muss
|
|
es auf dem Desktop ein Fenster geben, das dieses Board enthält!
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
if (board)
|
|
board(B) {
|
|
B.elements(E)
|
|
printf("Element: %s\n", E.name);
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=295>
|
|
<h1>deviceset()</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Öffnet einen Device-Set-Kontext.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>deviceset(identifier) statement</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#298>package</a>,
|
|
<a href=#301>symbol</a>,
|
|
<a href=#296>library</a>
|
|
<p>
|
|
Das <tt>deviceset</tt>-Statement öffnet einen Device-Set-Kontext wenn das gegenwärtige
|
|
Editor-Fenster ein Device-Set enthält. Eine Variable vom Typ
|
|
<a href=#182>UL_DEVICESET</a> wird angelegt und erhält den Namen,
|
|
den <tt>identifier</tt> angibt.
|
|
<p>
|
|
Sobald der Device-Set-Kontext erfolgreich geöffnet wurde und eine Device-Set-Variable
|
|
angelegt ist, wird <tt>statement</tt> ausgeführt. Innerhalb des
|
|
Gültigkeitsbereichs von <tt>statement</tt> kann man auf die Device-Set-Variable
|
|
zugreifen, um weitere Daten aus dem Device-Set zu erhalten.
|
|
<p>
|
|
Wenn das gegenwärtige Editor-Fenster kein Device-Set enthält, wird eine
|
|
Fehlermeldung ausgegeben, und das ULP wird beendet.
|
|
<h2>Prüfen, ob ein Device-Set geladen ist</h2>
|
|
Mit dem <tt>deviceset</tt>-Statement ohne Angabe eines Arguments können
|
|
Sie prüfen, ob das gegenwärtige Editor-Fenster ein Device-Set enthält.
|
|
In diesem Fall verhält sich <tt>deviceset</tt> wie eine Integer-Konstante,
|
|
die den Wert <tt>1</tt> zurückgibt, sofern ein Device-Set geladen ist.
|
|
Andernfalls wird der Wert <tt>0</tt> zurückgegeben.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
if (deviceset)
|
|
deviceset(D) {
|
|
D.gates(G)
|
|
printf("Gate: %s\n", G.name);
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=296>
|
|
<h1>library()</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Öffnet einen Library-Kontext.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>library(identifier) statement</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#294>board</a>,
|
|
<a href=#299>schematic</a>,
|
|
<a href=#295>deviceset</a>,
|
|
<a href=#298>package</a>,
|
|
<a href=#301>symbol</a>
|
|
<p>
|
|
Das <tt>library</tt>-Statement öffnet einen Library-Kontext wenn das gegenwärtige
|
|
Editor-Fenster eine Library enthält. Eine Variable vom Typ
|
|
<a href=#192>UL_LIBRARY</a> wird angelegt und erhält den Namen,
|
|
den <tt>identifier</tt> angibt.
|
|
<p>
|
|
Sobald der Library-Kontext erfolgreich geöffnet wurde und eine Board-Variable
|
|
angelegt ist, wird <tt>statement</tt> ausgeführt. Innerhalb des
|
|
Gültigkeitsbereichs von <tt>statement</tt> kann man auf die Library-Variable
|
|
zugreifen, um weitere Daten aus der Bibliothek zu erhalten.
|
|
<p>
|
|
Wenn das gegenwärtige Editor-Fenster keine Bibliothek enthält, wird eine
|
|
Fehlermeldung ausgegeben, und das ULP wird beendet.
|
|
<h2>Prüfen, ob eine Bibliothek geladen ist</h2>
|
|
Mit dem <tt>library</tt>-Statement ohne Angabe eines Arguments können
|
|
Sie prüfen, ob das gegenwärtige Editor-Fenster eine Bibliothek enthält.
|
|
In diesem Fall verhält sich <tt>library</tt> wie eine Integer-Konstante,
|
|
die den Wert <tt>1</tt> zurückgibt, sofern eine Bibliothek geladen ist.
|
|
Andernfalls wird der Wert <tt>0</tt> zurückgegeben.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
if (library)
|
|
library(L) {
|
|
L.devices(D)
|
|
printf("Device: %s\n", D.name);
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=297>
|
|
<h1>output()</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Öffnet eine Ausgabe-Datei für nachfolgende printf()-Aufrufe.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>output(string filename[, string mode]) statement</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#269>printf</a>,
|
|
<a href=#248>fileerror</a>
|
|
<p>
|
|
Das <tt>output</tt>-Statement öffnet eine Datei mit dem Namen <tt>filename</tt>
|
|
und dem Parameter <tt>mode</tt> für die Ausgabe mit nachfolgenden
|
|
printf()-Aufrufen. Sobald die Datei erfolgreich geöffnet wurde, wird
|
|
<tt>statement</tt> ausgeführt, und danach wird die Datei geschlossen.
|
|
<p>
|
|
Wenn die Datei nicht geöffnet werden kann, wird eine Fehlermeldung ausgegeben,
|
|
und das ULP wird beendet.
|
|
<p>
|
|
Standardmäßig wird die erzeugte Datei in das <b>Projekt</b> Verzeichnis
|
|
geschrieben.
|
|
<h2>Datei-Modi</h2>
|
|
Der <tt>mode</tt>-Parameter definiert, wie die Datei geöffnet werden soll.
|
|
Wenn kein <tt>mode</tt>-Parameter angegeben ist, gilt der Standardwert <tt>"wt"</tt>.
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><tt>a</tt> </td><td width=20><td>an existierende Datei anhängen oder neue Datei anlegen, falls die Datei nicht existiert</td></tr>
|
|
<tr><td><tt>w</tt> </td><td width=20><td>neue Datei anlegen (existierende überschreiben)</td></tr>
|
|
<tr><td><tt>t</tt> </td><td width=20><td>Datei im Textmodus öffnen</td></tr>
|
|
<tr><td><tt>b</tt> </td><td width=20><td>Datei im Binärmodus öffnen</td></tr>
|
|
<tr><td><tt>D</tt> </td><td width=20><td>Datei am Ende der EAGLE-Sitzung löschen (funktioniert nur zusammen mit <tt>w</tt>)</td></tr>
|
|
<tr><td><tt>F</tt> </td><td width=20><td>diesen Dateinamen erzwingen (normalerweise werden *.brd, *.sch und *.lbr abgewiesen)</td></tr>
|
|
</table>
|
|
<p>
|
|
Mode-Parameter können in beliebiger Kombination und Reihenfolge
|
|
angegeben werden. Allerdings ist nur der letzte aus <tt>a</tt> und <tt>w</tt>
|
|
bzw. <tt>t</tt> und <tt>b</tt> signifikant.
|
|
Die Angabe <tt>"abtw"</tt> würde zum Beispiel eine Textdatei öffnen (entsprechend <tt>"wt"</tt>).
|
|
<h2>Verschachtelte Output-Statements</h2>
|
|
<tt>output</tt>-Statements können verschachtelt werden,
|
|
solange genügend Datei-Handles verfügbar sind - vorausgesetzt, es greifen
|
|
nicht mehrere aktive <tt>output</tt>-Statements auf dieselbe Datei zu.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
void PrintText(string s)
|
|
{
|
|
printf("This also goes into the file: %s\n", s);
|
|
}
|
|
output("file.txt", "wt") {
|
|
printf("Directly printed\n");
|
|
PrintText("via function call");
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=298>
|
|
<h1>package()</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Öffnet einen Package-Kontext.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>package(identifier) statement</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#296>library</a>,
|
|
<a href=#295>deviceset</a>,
|
|
<a href=#301>symbol</a>
|
|
<p>
|
|
Das <tt>package</tt>-Statement öffnet einen Package-Kontext wenn das gegenwärtige
|
|
Editor-Fenster ein Package enthält. Eine Variable vom Typ
|
|
<a href=#194>UL_PACKAGE</a> wird angelegt und erhält den Namen,
|
|
den <tt>identifier</tt> angibt.
|
|
<p>
|
|
Sobald der Package-Kontext erfolgreich geöffnet wurde und eine Package-Variable
|
|
angelegt ist, wird <tt>statement</tt> ausgeführt. Innerhalb des
|
|
Gültigkeitsbereichs von <tt>statement</tt> kann man auf die Package-Variable
|
|
zugreifen, um weitere Daten aus dem Package zu erhalten.
|
|
<p>
|
|
Wenn das gegenwärtige Editor-Fenster kein Package enthält, wird eine
|
|
Fehlermeldung ausgegeben, und das ULP wird beendet.
|
|
<h2>Prüfen, ob ein Package geladen ist</h2>
|
|
Mit dem <tt>package</tt>-Statement ohne Angabe eines Arguments können
|
|
Sie prüfen, ob das gegenwärtige Editor-Fenster ein Package enthält.
|
|
In diesem Fall verhält sich <tt>package</tt> wie eine Integer-Konstante,
|
|
die den Wert <tt>1</tt> zurückgibt, sofern ein Package geladen ist.
|
|
Andernfalls wird der Wert <tt>0</tt> zurückgegeben.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
if (package)
|
|
package(P) {
|
|
P.contacts(C)
|
|
printf("Contact: %s\n", C.name);
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=299>
|
|
<h1>schematic()</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Öffnet einen Schaltplan-Kontext.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>schematic(identifier) statement</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#294>board</a>,
|
|
<a href=#296>library</a>,
|
|
<a href=#300>sheet</a>
|
|
<p>
|
|
Das <tt>schematic</tt>-Statement öffnet einen Schaltplan-Kontext wenn das gegenwärtige
|
|
Editor-Fenster einen Schaltplan enthält. Eine Variable vom Typ
|
|
<a href=#201>UL_SCHEMATIC</a> wird angelegt und erhält den Namen,
|
|
den <tt>identifier</tt> angibt.
|
|
<p>
|
|
Sobald der Schaltplan-Kontext erfolgreich geöffnet wurde und eine UL_SCHEMATIC-Variable
|
|
angelegt ist, wird <tt>statement</tt> ausgeführt. Innerhalb des
|
|
Gültigkeitsbereichs von <tt>statement</tt> kann man auf die UL_SCHEMATIC-Variable
|
|
zugreifen, um weitere Daten aus dem Schaltplan zu erhalten.
|
|
<p>
|
|
Wenn das gegenwärtige Editor-Fenster keinen Schaltplan enthält, wird eine
|
|
Fehlermeldung ausgegeben, und das ULP wird beendet.
|
|
<h2>Prüfen, ob ein Schaltplan geladen ist</h2>
|
|
Mit dem <tt>schematic</tt>-Statement ohne Angabe eines Arguments können
|
|
Sie prüfen, ob das gegenwärtige Editor-Fenster einen Schaltplan enthält.
|
|
In diesem Fall verhält sich <tt>schematic</tt> wie eine Integer-Konstante,
|
|
die den Wert <tt>1</tt> zurückgibt, sofern ein Schaltplan geladen ist.
|
|
Andernfalls wird der Wert <tt>0</tt> zurückgegeben.
|
|
<h2>Zugriff auf einen Schaltplan vom Board aus</h2>
|
|
Wenn das gegenwärtige Editor-Fenster ein Board enthält,
|
|
können Sie trotzdem auf den zugehörigen Schaltplan zugreifen, indem Sie
|
|
dem <tt>schematic</tt>-Statement den Präfix <tt>project</tt> voranstellen,
|
|
wie in
|
|
<pre>
|
|
project.schematic(S) { ... }
|
|
</pre>
|
|
Das öffnet einen UL_SCHEMATIC-Kontext, unabhängig davon, ob das gegenwärtige
|
|
Editor-Fenster ein Board oder einen Schaltplan enthält. Allerdings muss
|
|
es auf dem Desktop ein Fenster geben, das diesen Schaltplan enthält!
|
|
<h2>Zugriff auf die gegenwärtige Seite eines Schaltplans</h2>
|
|
Verwenden Sie das <tt><a href=#300>sheet</a></tt>-Statement,
|
|
um direkt auf die gegenwärtig geladene Schaltplanseite zuzugreifen.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
if (schematic)
|
|
schematic(S) {
|
|
S.parts(P)
|
|
printf("Part: %s\n", P.name);
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=300>
|
|
<h1>sheet()</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Öffnet einen UL_SHEET-Kontext.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>sheet(identifier) statement</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#299>schematic</a>
|
|
<p>
|
|
Das <tt>sheet</tt>-Statement öffnet einen UL_SHEET-Kontext, wenn das gegenwärtige
|
|
Editor-Fenster eine Schaltplanseite enthält. Eine Variable vom Typ
|
|
<a href=#203>UL_SHEET</a> wird angelegt und erhält den Namen,
|
|
den <tt>identifier</tt> angibt.
|
|
<p>
|
|
Sobald der UL_SHEET-Kontext erfolgreich geöffnet wurde und eine UL_SHEET-Variable
|
|
angelegt ist, wird <tt>statement</tt> ausgeführt. Innerhalb des
|
|
Gültigkeitsbereichs von <tt>statement</tt> kann man auf die UL_SHEET-Variable
|
|
zugreifen, um weitere Daten aus der Seite zu erhalten.
|
|
<p>
|
|
Wenn das gegenwärtige Editor-Fenster keine Schaltplanseite enthält, wird eine
|
|
Fehlermeldung ausgegeben, und das ULP wird beendet.
|
|
<h2>Prüfen, ob eine Schaltplanseite geladen ist</h2>
|
|
Mit dem <tt>sheet</tt>-Statement ohne Angabe eines Arguments können
|
|
Sie prüfen, ob das gegenwärtige Editor-Fenster eine Schaltplanseite enthält.
|
|
In diesem Fall verhält sich <tt>sheet</tt> wie eine Integer-Konstante,
|
|
die den Wert <tt>1</tt> zurückgibt, sofern eine Schaltplanseite geladen ist.
|
|
Andernfalls wird der Wert <tt>0</tt> zurückgegeben.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
if (sheet)
|
|
sheet(S) {
|
|
S.parts(P)
|
|
printf("Part: %s\n", P.name);
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=301>
|
|
<h1>symbol()</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Öffnet einen Symbol-Kontext.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>symbol(identifier) statement</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#296>library</a>,
|
|
<a href=#295>deviceset</a>,
|
|
<a href=#298>package</a>
|
|
<p>
|
|
Das <tt>symbol</tt>-Statement öffnet einen Symbol-Kontext wenn das gegenwärtige
|
|
Editor-Fenster ein Symbol enthält. Eine Variable vom Typ
|
|
<a href=#206>UL_SYMBOL</a> wird angelegt und erhält den Namen,
|
|
den <tt>identifier</tt> angibt.
|
|
<p>
|
|
Sobald der Symbol-Kontext erfolgreich geöffnet wurde und eine Symbol-Variable
|
|
angelegt ist, wird <tt>statement</tt> ausgeführt. Innerhalb des
|
|
Gültigkeitsbereichs von <tt>statement</tt> kann man auf die Symbol-Variable
|
|
zugreifen, um weitere Daten aus dem Symbol zu erhalten.
|
|
<p>
|
|
Wenn das gegenwärtige Editor-Fenster kein Symbol enthält, wird eine
|
|
Fehlermeldung ausgegeben, und das ULP wird beendet.
|
|
<h2>Prüfen, ob ein Symbol geladen ist</h2>
|
|
Mit dem <tt>symbol</tt>-Statement ohne Angabe eines Arguments können
|
|
Sie prüfen, ob das gegenwärtige Editor-Fenster ein Symbol enthält.
|
|
In diesem Fall verhält sich <tt>symbol</tt> wie eine Integer-Konstante,
|
|
die den Wert <tt>1</tt> zurückgibt, sofern ein Symbol geladen ist.
|
|
Andernfalls wird der Wert <tt>0</tt> zurückgegeben.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
if (symbol)
|
|
symbol(S) {
|
|
S.pins(P)
|
|
printf("Pin: %s\n", P.name);
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=302>
|
|
<h1>Dialoge</h1>
|
|
User-Language-Dialoge ermöglichen es, ein eigenes Frontend für ein User-Language-Progamm zu definieren.
|
|
<p>
|
|
In den folgenden Abschnitten werden die User-Language-Dialoge detailliert beschrieben:
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><a href=#303>Vordefinierte Dialoge</a> </td><td width=20><td>beschreibt vordefinierte Standard-Dialoge</td></tr>
|
|
<tr><td><a href=#307>Dialog-Objekte</a> </td><td width=20><td>beschreibt die Objekte aus denen ein Dialog bestehen kann</td></tr>
|
|
<tr><td><a href=#331>Layout-Information</a> </td><td width=20><td>erklärt wie man die Position von Objekten in einem Dialog bestimmt</td></tr>
|
|
<tr><td><a href=#332>Dialog-Funktionen</a> </td><td width=20><td>beschreibt besondere Funktionen, die mit Dialogen verwendet werden können</td></tr>
|
|
<tr><td><a href=#338>Ein vollständiges Beispiel</a> </td><td width=20><td>zeigt ein vollständiges ULP mit einem Dialog zur Daten-Eingabe</td></tr>
|
|
</table>
|
|
|
|
|
|
<a name=303>
|
|
<h1>Vordefinierte Dialoge</h1>
|
|
<i>Vordefinierte Dialoge</i> sind die typischen Dialoge, die häufig zur Dateiauswahl oder
|
|
bei Fehlermeldungen verwendet werden.
|
|
<p>
|
|
Es gibt folgende vordefinierte Dialoge:
|
|
<ul>
|
|
<li><a href=#304>dlgDirectory()</a>
|
|
<li><a href=#305>dlgFileOpen()</a>
|
|
<li><a href=#305>dlgFileSave()</a>
|
|
<li><a href=#306>dlgMessageBox()</a>
|
|
</ul>
|
|
Siehe <a href=#307>Dialog-Objekte</a> für Informationen über
|
|
das Definieren eigener, komplexer Benutzer-Dialoge.
|
|
|
|
|
|
<a name=304>
|
|
<h1>dlgDirectory()</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Zeigt den Verzeichnis-Dialog.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>string dlgDirectory(string Title[, string Start])</tt>
|
|
<dt>
|
|
<b>Rückgabewert</b>
|
|
<dd>
|
|
Die <tt>dlgDirectory</tt>-Funktion liefert den vollen Pfadnamen des gewählten Verzeichnisses.<br>
|
|
Hat der Benutzer den Dialog abgebrochen, ist das Resultat ein leerer String.
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#305>dlgFileOpen</a>
|
|
<p>
|
|
Die <tt>dlgDirectory</tt>-Funktion zeigt einen Verzeichnis-Dialog in dem der Benutzer ein Verzeichnis
|
|
selektieren kann.
|
|
<p>
|
|
<tt>Title</tt> zeigt den Titel des Dialogs.
|
|
<p>
|
|
Wenn <tt>Start</tt> nicht leer ist, wird diese Angabe als Startpunkt für <tt>dlgDirectory</tt> verwendet.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
string dirName;
|
|
dirName = dlgDirectory("Select a directory", "");
|
|
</pre>
|
|
|
|
|
|
<a name=305>
|
|
<h1>dlgFileOpen(), dlgFileSave()</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Zeigt einen Datei-Dialog.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>string dlgFileOpen(string Title[, string Start[, string Filter]])</tt><br>
|
|
<tt>string dlgFileSave(string Title[, string Start[, string Filter]])</tt>
|
|
<dt>
|
|
<b>Rückgabewert</b>
|
|
<dd>
|
|
Die Funktionen <tt>dlgFileOpen</tt> und <tt>dlgFileSave</tt> liefern die volle Pfadangabe
|
|
der gewählten Datei.<br>
|
|
Bricht der Benutzer den Dialog ab, ist das Ergebnis ein leerer String.
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#304>dlgDirectory</a>
|
|
<p>
|
|
Die Funktionen <tt>dlgFileOpen</tt> und <tt>dlgFileSave</tt> zeigen einen Datei-Dialog, aus dem
|
|
der Benutzer eine Datei selektieren kann.
|
|
<p>
|
|
<tt>Title</tt> wird als Titel des Dialogs verwendet.
|
|
<p>
|
|
Ist <tt>Start</tt> nicht leer, wird diese Angabe als Startpunkt für den Dialog verwendet.
|
|
Ansonsten wird das aktuelle Verzeichnis verwendet.
|
|
<p>
|
|
Nur Dateien, die der Angabe von <tt>Filter</tt> entsprechen, werden angezeigt. Wird kein
|
|
<tt>Filter</tt> angegeben, werden alle Dateien angezeigt.
|
|
<p>
|
|
<tt>Filter</tt> kann entweder ein einfacher Pattern sein (wie in <tt>"*.brd"</tt>), eine Liste von
|
|
Patterns (wie in <tt>"*.bmp *.jpg"</tt>) oder kann sogar beschreibenden Text enthalten, wie in
|
|
<tt>"Bitmap-Dateien (*.bmp)"</tt>. Falls die "Dateityp" Combo-Box des Datei-Dialogs mehrere
|
|
Einträge haben soll, müssen diese durch zwei Semikolons voneinander getrennt werden, wie in
|
|
<tt>"Bitmap-Dateien (*.bmp);;Andere Bilddateien (*.jpg *.png)"</tt>.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
string fileName;
|
|
fileName = dlgFileOpen("Select a file", "", "*.brd");
|
|
</pre>
|
|
|
|
|
|
<a name=306>
|
|
<h1>dlgMessageBox()</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Zeigt eine Message-Box.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>int dlgMessageBox(string Message[, <i>button_list</i>])</tt>
|
|
<dt>
|
|
<b>Rückgabewert</b>
|
|
<dd>
|
|
Die <tt>dlgMessageBox</tt>-Funktion liefert den Index der Schaltfläche, die der Benutzer selektiert hat.<br>
|
|
Die erste Schaltfläche in <tt>button_list</tt> hat den Index <tt>0</tt>.
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#265>status()</a>
|
|
<p>
|
|
Die <tt>dlgMessageBox</tt>-Funktion zeigt die angegebene <tt>Message</tt> in einem modalen Dialog-Fenster und
|
|
wartet darauf, dass der Benutzer eine der Schaltflächen, die über
|
|
<tt>button_list</tt> definiert wurden, selektiert.
|
|
<p>
|
|
Falls <tt>Message</tt> HTML-Tags enthält, so müssen die Zeichen '<', '>' und '&',
|
|
damit sie als solche angezeigt werden, als "&lt;", "&gt;" bzw. "&amp;" angegeben
|
|
werden.
|
|
<p>
|
|
<tt>button_list</tt> ist eine optionale Liste durch Komma getrennter Strings, die einen Satz von
|
|
Schaltflächen, die unten im Dialog-Fenster angezeigt werden, definiert.<br>
|
|
Es können maximal drei Schaltflächen definiert werden.
|
|
Wird keine <tt>button_list</tt> angegeben, erscheint automatisch <tt>"OK"</tt>.
|
|
<p>
|
|
Die erste Schaltfläche in <tt>button_list</tt> wird die Default-Schaltfläche (sie wird gedrückt, wenn
|
|
der Benutzer ENTER drückt), und der letzte Eintrag in der Liste wird der "Cancel-Button", der gewählt
|
|
wird, wenn der Benutzer Esc drückt oder das Dialog-Fenster einfach schließt.
|
|
Sie können eine andere Schaltfläche als Default-Button definieren, indem Sie den String mit
|
|
einem <tt>'+'</tt> beginnen. Wollen Sie eine andere Schaltfläche als Cancel-Button definieren, stellen
|
|
Sie dem String ein <tt>'-'</tt> voran.
|
|
Um einen Schaltflächen-Text mit einem <tt>'+'</tt> oder <tt>'-'</tt> zu beginnen, muss das Zeichen mit einem
|
|
<a href=#337>Escape-Zeichen</a> markiert werden.
|
|
<p>
|
|
Enthält der Text ein <tt>'&'</tt>, wird das folgende Zeichen zum Hotkey. Wenn der Benutzer
|
|
die entsprechende Taste drückt, wird diese Schaltfläche gewählt.
|
|
Um das Zeichen <tt>'&'</tt> im Schaltflächen-Text zu verwenden, muss es mit einem
|
|
<a href=#337>Escape-Zeichen</a> markiert werden.
|
|
<p>
|
|
Dem Dialog-Fenster kann ein Icon mitgegeben werden, indem das erste Zeichen in <tt>Message</tt> auf<br>
|
|
<tt>'<b>;</b>'</tt> - für eine <i>Information</i><br>
|
|
<tt>'<b>!</b>'</tt> - für eine <i>Warnung</i><br>
|
|
<tt>'<b>:</b>'</tt> - für einen <i>Fehler</i><br>
|
|
gesetzt wird.
|
|
Soll die <tt>Message</tt> jedoch mit einem dieser Zeichen beginnen, so muss dieses mit einem
|
|
<a href=#337>Escape-Zeichen</a> markiert werden.
|
|
<p>
|
|
<table><tr><td valign="top"><img src="platforms-mac.png"></td><td valign="middle">
|
|
Unter <b>Mac OS X</b> führt nur das Zeichen <tt>'<b>:</b>'</tt> tatsächlich zur
|
|
Darstellung eines Icons. Alle anderen werden ignoriert.
|
|
</td></tr></table>
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
if (dlgMessageBox("Are you sure?", "&Yes", "&No") == 0) {
|
|
// let's do it!
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=307>
|
|
<h1>Dialog-Objekte</h1>
|
|
Ein User-Language-Dialog kann aus folgenden <i>Dialog-Objekten</i> bestehen
|
|
(die einzelnen Begriffe wurden in diesem Fall nicht ins Deutsche übersetzt,
|
|
da sonst der Zusammenhang zu den ULP-Objekten verloren ginge):
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><a href=#308>dlgCell</a> </td><td width=20><td>ein Grid-Cell-Kontext</td></tr>
|
|
<tr><td><a href=#309>dlgCheckBox</a> </td><td width=20><td>eine Checkbox</td></tr>
|
|
<tr><td><a href=#310>dlgComboBox</a> </td><td width=20><td>ein Combo-Box-Auswahl-Feld</td></tr>
|
|
<tr><td><a href=#311>dlgDialog</a> </td><td width=20><td>die Grundlage eines jeden Dialogs</td></tr>
|
|
<tr><td><a href=#312>dlgGridLayout</a> </td><td width=20><td>ein Grid-basierter-Layout-Kontext</td></tr>
|
|
<tr><td><a href=#313>dlgGroup</a> </td><td width=20><td>ein Group-Feld</td></tr>
|
|
<tr><td><a href=#314>dlgHBoxLayout</a> </td><td width=20><td>ein Horizontal-Box-Layout-Kontext</td></tr>
|
|
<tr><td><a href=#315>dlgIntEdit</a> </td><td width=20><td>ein Integer-Eingabe-Feld</td></tr>
|
|
<tr><td><a href=#316>dlgLabel</a> </td><td width=20><td>ein Text-Label</td></tr>
|
|
<tr><td><a href=#317>dlgListBox</a> </td><td width=20><td>eine List-Box</td></tr>
|
|
<tr><td><a href=#318>dlgListView</a> </td><td width=20><td>eine List-View</td></tr>
|
|
<tr><td><a href=#319>dlgPushButton</a> </td><td width=20><td>ein Push-Button</td></tr>
|
|
<tr><td><a href=#320>dlgRadioButton</a></td><td width=20><td>ein Radio-Button</td></tr>
|
|
<tr><td><a href=#321>dlgRealEdit</a> </td><td width=20><td>ein Real-Eingabe-Feld</td></tr>
|
|
<tr><td><a href=#322>dlgSpacing</a> </td><td width=20><td>ein Layout-Spacing-Objekt</td></tr>
|
|
<tr><td><a href=#323>dlgSpinBox</a> </td><td width=20><td>ein Spin-Box-Auswahl-Feld</td></tr>
|
|
<tr><td><a href=#324>dlgStretch</a> </td><td width=20><td>ein Layout-Stretch-Objekt</td></tr>
|
|
<tr><td><a href=#325>dlgStringEdit</a> </td><td width=20><td>ein String-Eingabe-Feld</td></tr>
|
|
<tr><td><a href=#326>dlgTabPage</a> </td><td width=20><td>eine Tab-Page</td></tr>
|
|
<tr><td><a href=#327>dlgTabWidget</a> </td><td width=20><td>ein Tab-Page-Container</td></tr>
|
|
<tr><td><a href=#328>dlgTextEdit</a> </td><td width=20><td>ein Text-Eingabe-Feld</td></tr>
|
|
<tr><td><a href=#329>dlgTextView</a> </td><td width=20><td>ein Text-Viewer-Feld</td></tr>
|
|
<tr><td><a href=#330>dlgVBoxLayout</a> </td><td width=20><td>ein Vertical-Box-Layout-Kontext</td></tr>
|
|
</table>
|
|
<p>
|
|
|
|
|
|
<a name=308>
|
|
<h1>dlgCell</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Definiert die Position einer Cell (Zelle) in einem Grid-Layout-Kontext.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>dlgCell(int row, int column[, int row2, int column2]) <i>statement</i></tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#312>dlgGridLayout</a>,
|
|
<a href=#314>dlgHBoxLayout</a>,
|
|
<a href=#330>dlgVBoxLayout</a>,
|
|
<a href=#331>Layout-Information</a>,
|
|
<a href=#338>Ein vollständiges Beispiel</a>
|
|
<p>
|
|
Das <tt>dlgCell</tt>-Statement definiert die Lage einer Cell in einem
|
|
<a href=#312>Grid-Layout-Kontext</a>.
|
|
<p>
|
|
Der Index für Reihe (row) und Spalte (column) beginnt mit 0, so das die obere linke Cell den Index (0, 0) hat.
|
|
<p>
|
|
Mit zwei Parametern wird das Dialog-Objekt, das in <tt>statement</tt> angegeben wurde, in einer Cell
|
|
an der Stelle <tt>row</tt> und <tt>column</tt> plaziert.
|
|
Mit vier Parametern erstreckt sich das Objekt über alle Cells von <tt>row</tt>/<tt>column</tt>
|
|
bis zu <tt>row2</tt>/<tt>column2</tt>.
|
|
<p>
|
|
Standardmäßig enthält <tt>dlgCell</tt> ein <a href=#314>dlgHBoxLayout</a>.
|
|
Enthält eine Cell mehr als ein Dialog-Objekt, werden diese nebeneinander horizontal angeordnet.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
string Text;
|
|
dlgGridLayout {
|
|
dlgCell(0, 0) dlgLabel("Cell 0,0");
|
|
dlgCell(1, 2, 4, 7) dlgTextEdit(Text);
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=309>
|
|
<h1>dlgCheckBox</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Definiert eine Checkbox.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>dlgCheckBox(string Text, int &Checked) [ <i>statement</i> ]</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#320>dlgRadioButton</a>,
|
|
<a href=#313>dlgGroup</a>,
|
|
<a href=#331>Layout-Information</a>,
|
|
<a href=#338>Ein vollständiges Beispiel</a>
|
|
<p>
|
|
Das <tt>dlgCheckBox</tt>-Statement definiert eine Checkbox mit dem angegebenen <tt>Text</tt>.
|
|
<p>
|
|
Wenn <tt>Text</tt> ein <tt>'&'</tt> enthält, wird das folgende Zeichen als Hotkey markiert.
|
|
Wenn der Benutzer <tt>Alt+hotkey</tt> drückt, wird die Checkbox selektiert/deselektiert.
|
|
Um ein <tt>'&'</tt>-Zeichen im Text zu verwenden, muss er mit einem <a href=#337>Escape-Zeichen</a> markiert werden.
|
|
<p>
|
|
<tt>dlgCheckBox</tt> wird hauptsächlich in <a href=#313>dlgGroup</a> benutzt,
|
|
kann aber auch anders verwendet werden.<br>
|
|
Alle Check-Boxen innerhalb eines gemeinsamen Dialogs müssen <b>unterschiedliche</b> <tt>Checked</tt>-Variablen haben!
|
|
<p>
|
|
Wenn ein Benutzer eine <tt>dlgCheckBox</tt> wählt, wird die entsprechende <tt>Checked</tt>-Variable auf
|
|
<tt>1</tt> gesetzt, andernfalls ist sie auf <tt>0</tt> gesetzt.
|
|
Der ursprüngliche Wert von <tt>Checked</tt> definiert, ob eine Checkbox anfänglich selektiert ist oder nicht.
|
|
Wenn <tt>Checked</tt> ungleich <tt>0</tt> ist, ist die Checkbox defaultmäßig selektiert.
|
|
<p>
|
|
Das optionale <tt>statement</tt> wird jedesmal ausgeführt, wenn Sie die <tt>dlgCheckBox</tt> selektieren/deselektieren.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
int mirror = 0;
|
|
int rotate = 1;
|
|
int flip = 0;
|
|
dlgGroup("Orientation") {
|
|
dlgCheckBox("&Mirror", mirror);
|
|
dlgCheckBox("&Rotate", rotate);
|
|
dlgCheckBox("&Flip", flip);
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=310>
|
|
<h1>dlgComboBox</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Definiert ein Combo-Box-Auswahl-Feld.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>dlgComboBox(string array[], int &Selected) [ <i>statement</i> ]</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#317>dlgListBox</a>,
|
|
<a href=#316>dlgLabel</a>,
|
|
<a href=#331>Layout-Information</a>,
|
|
<a href=#338>Ein vollständiges Beispiel</a>
|
|
<p>
|
|
Das <tt>dlgComboBox</tt>-Statement definiert ein Combo-Box-Auswahlfeld mit dem Inhalt von <tt>array</tt>.
|
|
<p>
|
|
<tt>Selected</tt> reflektiert den Index des selektieren Combo-Box-Eintrags. Der erste Eintrag hat den Index <tt>0</tt>.
|
|
<p>
|
|
Jedes Element von <tt>array</tt> legt den Inhalt eines Eintrags in der Combo-Box fest.
|
|
Keiner der Strings in <tt>array</tt> darf leer sein (sollte ein leerer String existieren,
|
|
werden alle folgenden, inklusive des leeren, ignoriert).
|
|
<p>
|
|
Das optionale <tt>statement</tt> wird jedesmal ausgeführt, wenn die Auswahl in der <tt>dlgComboBox</tt> verändert wird.<br>
|
|
Bevor <tt>statement</tt> ausgeführt wird, werden alle Variablen , die in den Dialog-Objekten verwendet werden
|
|
neu eingelesen und jede Veränderung innerhalb von <tt>statement</tt> wird im Dialog angezeigt.
|
|
<p>
|
|
Ist der Ausgangswert von <tt>Selected</tt> ausserhalb des Bereichs der Indices von <tt>array</tt>,
|
|
wird dieser auf <tt>0</tt> gesetzt.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
string Colors[] = { "red", "green", "blue", "yellow" };
|
|
int Selected = 2; // initially selects "blue"
|
|
dlgComboBox(Colors, Selected) dlgMessageBox("You have selected " + Colors[Selected]);
|
|
</pre>
|
|
|
|
|
|
<a name=311>
|
|
<h1>dlgDialog</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Führt einen User-Language-Dialog aus.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>int dlgDialog(string Title) <i>block</i> ;</tt>
|
|
<dt>
|
|
<b>Rückgabewert</b>
|
|
<dd>
|
|
Die <tt>dlgDialog</tt>-Funktion liefert einen Integer-Wert, dem durch den Aufruf der
|
|
<tt><a href=#333>dlgAccept()</a></tt>-Funktion eine benutzerspezifische
|
|
Bedeutung zugeordnet werden kann.<br>
|
|
Wird der Dialog einfach geschlossen, ist der Rückgabewert <tt>0</tt>.
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#312>dlgGridLayout</a>,
|
|
<a href=#314>dlgHBoxLayout</a>,
|
|
<a href=#330>dlgVBoxLayout</a>,
|
|
<a href=#333>dlgAccept</a>,
|
|
<a href=#335>dlgReset</a>,
|
|
<a href=#336>dlgReject</a>,
|
|
<a href=#338>Ein vollständiges Beispiel</a>
|
|
<p>
|
|
Die <tt>dlgDialog</tt>-Funktion, die durch <tt><a href=#229>block</a></tt> definiert wird.
|
|
Das ist das einzige Dialog-Objekt das tatsächlich eine User-Language-Builtin-Funktion ist.
|
|
Sie kann überall wo ein Funktionsaufruf erlaubt ist, verwendet werden.
|
|
<p>
|
|
<tt>block</tt> enthält normalerweise andere <a href=#307>Dialog-Objekte</a>.
|
|
Man kann aber auch andere User-Language-Statements verwenden, zum Beispiel, um bedingungsabhängig
|
|
dem Dialog Objekte hinzuzufügen (siehe das zweite der folgenden Beispiele).
|
|
<p>
|
|
Standardmäßig enthält <tt>dlgDialog</tt> ein <a href=#330>dlgVBoxLayout</a>,
|
|
so dass man sich bei einem einfachen Dialog um das Layout kein Gedanken machen muss.
|
|
<p>
|
|
Ein <tt>dlgDialog</tt> sollte an einer Stelle den Aufruf der <tt><a href=#333>dlgAccept()</a></tt>
|
|
-Funktion enthalten, um dem Benutzer zu erlauben, den Dialog zu schließen und dessen Inhalt zu akzeptieren.
|
|
<p>
|
|
Wenn Sie nur eine einfache Message-Box oder einen einfachen Dialog brauchen, können Sie statt dessen
|
|
auch einen der <a href=#303>Vordefinierten Dialoge</a> verwenden.
|
|
<h2>Beispiele</h2>
|
|
<pre>
|
|
int Result = dlgDialog("Hello") {
|
|
dlgLabel("Hello world");
|
|
dlgPushButton("+OK") dlgAccept();
|
|
};
|
|
int haveButton = 1;
|
|
dlgDialog("Test") {
|
|
dlgLabel("Start");
|
|
if (haveButton)
|
|
dlgPushButton("Here") dlgAccept();
|
|
};
|
|
</pre>
|
|
|
|
|
|
<a name=312>
|
|
<h1>dlgGridLayout</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Öffnet einen Grid-Layout-Kontext.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>dlgGridLayout <i>statement</i></tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#308>dlgCell</a>,
|
|
<a href=#314>dlgHBoxLayout</a>,
|
|
<a href=#330>dlgVBoxLayout</a>,
|
|
<a href=#331>Layout-Information</a>,
|
|
<a href=#338>Ein vollständiges Beispiel</a>
|
|
<p>
|
|
Das <tt>dlgGridLayout</tt>-Statement öffnet einen Grid-Layout-Kontext.
|
|
<p>
|
|
Das einzige Dialog-Objekt, das direkt in <tt>statement</tt> verwendet werden kann, ist
|
|
<a href=#308>dlgCell</a>, das die Position eines Dialog-Objekts
|
|
im Grid-Layout festlegt.
|
|
<p>
|
|
Die Indices für row und column beginnen mit 0, so dass die obere linke Cell den
|
|
Index (0, 0) hat.<br>
|
|
Die Anzahl der Reihen und Spalten wird automatisch an die Position von Dialog-Objekten,
|
|
die innerhalb des Grid-Layout-Kontexts definiert werden, angepasst. Die Anzahl der
|
|
Reihen und Spalten muss nicht explizit definiert werden.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
dlgGridLayout {
|
|
dlgCell(0, 0) dlgLabel("Row 0/Col 0");
|
|
dlgCell(1, 0) dlgLabel("Row 1/Col 0");
|
|
dlgCell(0, 1) dlgLabel("Row 0/Col 1");
|
|
dlgCell(1, 1) dlgLabel("Row 1/Col 1");
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=313>
|
|
<h1>dlgGroup</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Definiert ein Group-Feld.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>dlgGroup(string Title) <i>statement</i></tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#309>dlgCheckBox</a>,
|
|
<a href=#320>dlgRadioButton</a>,
|
|
<a href=#331>Layout-Information</a>,
|
|
<a href=#338>Ein vollständiges Beispiel</a>
|
|
<p>
|
|
Das <tt>dlgGroup</tt>-Statement definiert eine Gruppe mit dem gegebenen <tt>Title</tt>.
|
|
<p>
|
|
Standardmäßig enthält <tt>dlgGroup</tt> ein <a href=#330>dlgVBoxLayout</a>,
|
|
so braucht man sich bei einer einfachen Group keine Gedanken zum Layout machen.
|
|
<p>
|
|
<tt>dlgGroup</tt> wird hauptsächlich für einen Satz von <a href=#320>Radio-Buttons</a>
|
|
oder <a href=#309>Check-Boxes</a> verwendet, kann aber auch jedes andere beliebige
|
|
Objekt in <tt>statement</tt> enthalten.<br>
|
|
Radio-Buttons in einer <tt>dlgGroup</tt> werden mit <tt>0</tt> beginnend numeriert.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
int align = 1;
|
|
dlgGroup("Alignment") {
|
|
dlgRadioButton("&Top", align);
|
|
dlgRadioButton("&Center", align);
|
|
dlgRadioButton("&Bottom", align);
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=314>
|
|
<h1>dlgHBoxLayout</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Öffnet einen Horizontal-Box-Layout-Kontext.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>dlgHBoxLayout <i>statement</i></tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#312>dlgGridLayout</a>,
|
|
<a href=#330>dlgVBoxLayout</a>,
|
|
<a href=#331>Layout-Information</a>,
|
|
<a href=#338>Ein vollständige Beispiel</a>
|
|
<p>
|
|
Das <tt>dlgHBoxLayout</tt>-Statement öffnet einen Horizontal-Box-Layout-Kontext für das
|
|
angegebene <tt>statement</tt>.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
dlgHBoxLayout {
|
|
dlgLabel("Box 1");
|
|
dlgLabel("Box 2");
|
|
dlgLabel("Box 3");
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=315>
|
|
<h1>dlgIntEdit</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Definiert ein Integer-Eingabe-Feld.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>dlgIntEdit(int &Value, int Min, int Max)</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#321>dlgRealEdit</a>,
|
|
<a href=#325>dlgStringEdit</a>,
|
|
<a href=#316>dlgLabel</a>,
|
|
<a href=#331>Layout-Information</a>,
|
|
<a href=#338>Ein vollständiges Beispiel</a>
|
|
<p>
|
|
Das <tt>dlgIntEdit</tt>-Statement definiert ein Integer-Eingabe-Feld mit einem in <tt>Value</tt>
|
|
angegebenen Wert.
|
|
<p>
|
|
Ist <tt>Value</tt> ursprünglich ausserhalb des Bereichs <tt>Min</tt> und <tt>Max</tt>,
|
|
wird er auf diesen Bereich limitiert.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
int Value = 42;
|
|
dlgHBoxLayout {
|
|
dlgLabel("Enter a &Number between 0 and 99");
|
|
dlgIntEdit(Value, 0, 99);
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=316>
|
|
<h1>dlgLabel</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Definiert ein Text-Label.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>dlgLabel(string Text [, int Update])</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#331>Layout-Information</a>,
|
|
<a href=#338>Ein vollständiges Beispiel</a>,
|
|
<a href=#334>dlgRedisplay()</a>
|
|
<p>
|
|
Das <tt>dlgLabel</tt>-Statement definiert ein Label mit dem angegebenen <tt>Text</tt>.
|
|
<p>
|
|
<tt>Text</tt> kann entweder ein fester String wie <tt>"Hello"</tt> sein, oder eine String-Variable.
|
|
<p>
|
|
Falls <tt>Text</tt> HTML-Tags enthält, so müssen die Zeichen '<', '>' und '&',
|
|
damit sie als solche angezeigt werden, als "&lt;", "&gt;" bzw. "&amp;" angegeben
|
|
werden.
|
|
<p>
|
|
Wenn der <tt>Update</tt>-Parameter nicht <tt>0</tt> ist und <tt>Text</tt> eine String-Variable,
|
|
kann deren Inhalt im <tt>statement</tt> z. B. eines <a href=#319>dlgPushButton</a> modifiziert werden,
|
|
wodurch das Label automatisch aktualisiert wird. Das ist natürlich nur sinnvoll wenn <tt>Text</tt> eine
|
|
eindeutig bestimmte String-Variable ist (und beispielsweise keine Loop-Variable eines <tt>for</tt>-Statements).
|
|
<p>
|
|
Enthält <tt>Text</tt> ein <tt>'&'</tt>-Zeichen, und kann das Objekt, das auf das Label
|
|
folgt, den Keyboard-Fokus bekommen, wird das folgende Zeichen zum Hot-Key.
|
|
Drückt der Benutzer <tt>Alt+hotkey</tt>, wird das Objekt, das direkt nach <tt>dlgLabel</tt> definiert
|
|
wurde, aktiv.
|
|
Um ein <tt>'&'</tt>-Zeichen direkt im Text zu verwenden, muss man es mit einem
|
|
<a href=#337>Escape-Zeichen</a> markieren.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
string OS = "Windows";
|
|
dlgHBoxLayout {
|
|
dlgLabel(OS, 1);
|
|
dlgPushButton("&Change OS") { OS = "Linux"; }
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=317>
|
|
<h1>dlgListBox</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Definiert ein List-Box-Auswahl-Feld.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>dlgListBox(string array[], int &Selected) [ <i>statement</i> ]</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#310>dlgComboBox</a>,
|
|
<a href=#318>dlgListView</a>,
|
|
<a href=#316>dlgLabel</a>,
|
|
<a href=#331>Layout-Information</a>,
|
|
<a href=#338>Ein vollständiges Beispiel</a>
|
|
<p>
|
|
Das <tt>dlgListBox</tt>-Statement definiert ein List-Box-Auswahl-Feld mit dem Inhalt
|
|
von <tt>array</tt>.
|
|
<p>
|
|
<tt>Selected</tt> gibt den Index des selektierten List-Box-Eintrags wieder.
|
|
Der erste Eintrag hat den Index <tt>0</tt>.
|
|
<p>
|
|
Jedes Element von <tt>array</tt> legt den Inhalt einer Zeile in der List-Box fest.
|
|
Keiner der Strings in <tt>array</tt> darf leer sein (sollte ein leerer String existieren,
|
|
werden alle folgenden, inklusive des leeren, ignoriert).
|
|
<p>
|
|
Das optionale <tt>statement</tt> wird immer dann ausgeführt, wenn der Benutzer einen Doppelklick
|
|
auf einen Eintrag der <tt>dlgListBox</tt> ausführt.<br>
|
|
Bevor <tt>statement</tt> ausgeführt wird, werden alle Variablen, die von Dialog-Objekten benutzt
|
|
werden, aktualisiert. Alle Änderungen, die in <tt>statement</tt> gemacht wurden, wirken sich auf
|
|
den Dialog aus, sobald das Statement zurückgegeben wird.
|
|
<p>
|
|
Ist der Ausgangswert von <tt>Selected</tt> ausserhalb des Index-Bereichs von <tt>array</tt>,
|
|
wird kein Eintrag selektiert.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
string Colors[] = { "red", "green", "blue", "yellow" };
|
|
int Selected = 2; // initially selects "blue"
|
|
dlgListBox(Colors, Selected) dlgMessageBox("You have selected " + Colors[Selected]);
|
|
</pre>
|
|
|
|
|
|
<a name=318>
|
|
<h1>dlgListView</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Definiert ein mehrspaltiges List-View-Auswahl-Feld.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>dlgListView(string Headers, string array[], int &Selected[, int &Sort]) [ <i>statement</i> ]</tt>
|
|
</dl>
|
|
<b>Siehe auch </b> <a href=#317>dlgListBox</a>,
|
|
<a href=#316>dlgLabel</a>,
|
|
<a href=#331>Layout-Information</a>,
|
|
<a href=#338>Ein vollständiges Beispiel</a>
|
|
<p>
|
|
Das <tt>dlgListView</tt>-Statement definiert ein mehrspaltiges List-View-Auswahl-Feld mit dem Inhalt,
|
|
der in <tt>array</tt> angegeben ist.
|
|
<p>
|
|
<tt>Headers</tt> definiert die durch Tabulatoren getrennte Liste der Spalten-Überschriften.
|
|
<p>
|
|
<tt>Selected</tt> gibt den Index des selektierten List-View-Eintrags von <tt>array</tt> wieder
|
|
(die Reihenfolge in der die Einträge tatsächlich angezeigt werden, kann unterschiedlich sein,
|
|
da der Inhalt einer <tt>dlgListView</tt> in den verschiedenen Spalten sortiert werden kann).
|
|
Der erste Eintrag hat den Index <tt>0</tt>.<br>
|
|
Wenn kein spezieller Eintrag selektiert werden soll, wählt man für <tt>Selected</tt> den
|
|
Wert <tt>-1</tt>.
|
|
<p>
|
|
<tt>Sort</tt> gibt an, nach welcher Spalte der List-View sortiert werden soll. Die linke
|
|
Spalte hat die Nummer <tt>1</tt>. Das Vorzeichen dieses Parameters legt die Richtung der
|
|
Sortierung fest (positive Werte sortieren in aufsteigender Reihenfolge). Falls <tt>Sort</tt>
|
|
den Wert <tt>0</tt> hat, oder außerhalb der gültigen Anzahl von Spalten liegt, wird nicht
|
|
sortiert. Der Rückgabewert von <tt>Sort</tt> spiegelt die vom Benutzer durch Anklicken
|
|
der Spalten-Header gewählte Sortierspalte und -richtung wieder. Standardmäßig wird
|
|
nach der ersten Spalte, in aufsteigender Richtung sortiert.
|
|
<p>
|
|
Jedes Element von <tt>array</tt> legt den Inhalt einer Zeile in der List-View fest und
|
|
muss durch Tabulatoren getrennte Werte enthalten. Sind weniger Werte eines Elements in
|
|
<tt>array</tt> definiert als im <tt>Headers</tt>-String vorgegeben, bleiben die restlichen
|
|
Felder leer. Sind mehr Werte eines Element in <tt>array</tt> angegeben als
|
|
im <tt>Headers</tt>-String, werden die überzählgen stillschweigend ignoriert.
|
|
Keiner der Strings in <tt>array</tt> darf leer sein (sollte ein leerer String
|
|
vorhanden sein, werden alle nachfolgenden, inklusive dem Leerstring ignoriert).
|
|
<p>
|
|
Enthält ein Listeneintrag Zeilenumbrüche (<tt>'\n'</tt>), so wird er entsprechend
|
|
mehrzeilig dargestellt.
|
|
<p>
|
|
Das optionale <tt>statement</tt> wird ausgeführt, wann immer der Benutzer auf einen Eintrag
|
|
in <tt>dlgListView</tt> doppelklickt.<br>
|
|
Bevor <tt>statement</tt> ausgeführt wird, werden alle Variablen, die mit den Dialog-Objekten benutzt
|
|
wurden, aktualisiert. Alle Änderungen, die in <tt>statement</tt> gemacht wurden, wirken sich auf
|
|
den Dialog aus, sobald das Statement zurückgegeben wird.
|
|
<p>
|
|
Ist der Ausgangswert von <tt>Selected</tt> ausserhalb des Index-Bereichs von <tt>array</tt>,
|
|
wird kein Eintrag selektiert.
|
|
<p>
|
|
Ist <tt>Headers</tt> ein leerer String, wird das erste Element von <tt>array</tt> als
|
|
Header-String benutzt. Folglich ist der Index des ersten Eintrags dann <tt>1</tt>.
|
|
<p>
|
|
Der Inhalt von <tt>dlgListView</tt> kann in einer beliebigen Spalte sortiert werden, indem man
|
|
auf dessen Spalten-Header klickt. Die Spalten-Reihenfolge kann man durch Anklicken&Ziehen
|
|
des Spalten-Headers verändern. Beachten Sie, dass keine dieser Änderunen eine Auswirkung
|
|
auf den Inhalt von <tt>array</tt> hat.
|
|
Soll der Inhalt alphanumerisch sortiert werden, kann ein <tt>numeric string[]</tt>-Array
|
|
verwendet werden.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
string Colors[] = { "red\tThe color RED", "green\tThe color GREEN", "blue\tThe color BLUE" };
|
|
int Selected = 0; // initially selects "red"
|
|
dlgListView("Name\tDescription", Colors, Selected) dlgMessageBox("You have selected " + Colors[Selected]);
|
|
</pre>
|
|
|
|
|
|
<a name=319>
|
|
<h1>dlgPushButton</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Definiert einen Push-Button.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>dlgPushButton(string Text) <i>statement</i></tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#331>Layout-Information</a>,
|
|
<a href=#332>Dialog-Funktionen</a>,
|
|
<a href=#338>Ein vollständige Beispiel</a>
|
|
<p>
|
|
Das <tt>dlgPushButton</tt>-Statement definiert einen Push-Button mit dem angegebenen <tt>Text</tt>.
|
|
<p>
|
|
Enthält <tt>Text</tt> ein <tt>'&'</tt>-Zeichen, wird das folgende Zeichen zum Hot-Key. Wenn der
|
|
Benutzer dann <tt>Alt+hotkey</tt> drückt, wird dieser Button selektiert.
|
|
Soll ein <tt>'&'</tt>-Zeichen im Text verwendet werden, muss es mit einem
|
|
<a href=#337>Escape-Zeichen</a> markiert werden.
|
|
<p>
|
|
Beginnt <tt>Text</tt> mit einem <tt>'+'</tt>-Zeichen, wird dieser Button der Default-Button.
|
|
Dieser wird betätigt, wenn der Benutzer ENTER drückt.<br>
|
|
Wenn <tt>Text</tt> mit einem <tt>'-'</tt>-Zeichen beginnt, wird dieser Button der Cancel-Button.
|
|
Dieser wird gewählt wenn der Benutzer den Dialog schließt.<br>
|
|
<b>Achtung: Stellen Sie sicher, dass das <tt>statement</tt> eines so markierten Buttons einen
|
|
Aufruf von <a href=#336>dlgReject()</a> enthält! Ansonsten ist es dem Benutzer nicht
|
|
möglich den Dialog überhaupt zu schließen!</b><br>
|
|
Um ein <tt>'+'</tt> oder <tt>'-'</tt>-Zeichen als erstes Zeichen des Textes zu verwenden,
|
|
muss es mit einem <a href=#337>Escape-Zeichen</a> markiert werden.
|
|
<p>
|
|
Wenn der Benutzer einen <tt>dlgPushButton</tt> selektiert, wird das angegebene <tt>statement</tt>
|
|
ausgeführt.<br>
|
|
Bevor <tt>statement</tt> ausgeführt wird, werden alle Variablen, die mit den Dialog-Objekten
|
|
benutzt wurden, aktualisiert. Alle Änderungen, die in <tt>statement</tt> gemacht wurden, wirken sich
|
|
auf den Dialog aus, sobald das Statement zurückgegeben wird.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
int defaultWidth = 10;
|
|
int defaultHeight = 20;
|
|
int width = 5;
|
|
int height = 7;
|
|
dlgPushButton("&Reset defaults") {
|
|
width = defaultWidth;
|
|
height = defaultHeight;
|
|
}
|
|
dlgPushButton("+&Accept") dlgAccept();
|
|
dlgPushButton("-Cancel") { if (dlgMessageBox("Are you sure?", "Yes", "No") == 0) dlgReject(); }
|
|
</pre>
|
|
|
|
|
|
<a name=320>
|
|
<h1>dlgRadioButton</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Definiert einen Radio-Button.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>dlgRadioButton(string Text, int &Selected) [ <i>statement</i> ]</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#309>dlgCheckBox</a>,
|
|
<a href=#313>dlgGroup</a>,
|
|
<a href=#331>Layout-Information</a>,
|
|
<a href=#338>Ein vollständiges Beispiel</a>
|
|
<p>
|
|
Das <tt>dlgRadioButton</tt>-Statement definiert einen Radio-Button mit dem angegebenen <tt>Text</tt>.
|
|
<p>
|
|
Enthält <tt>Text</tt> ein <tt>'&'</tt>-Zeichen, wird das folgende Zeichen zum Hot-Key. Wenn der
|
|
Benutzer dann <tt>Alt+hotkey</tt> drückt, wird dieser Button selektiert.
|
|
Soll ein <tt>'&'</tt>-Zeichen im Text verwendet werden, muss es mit einem
|
|
<a href=#337>Escape-Zeichen</a> markiert werden.
|
|
<p>
|
|
<tt>dlgRadioButton</tt> kann nur innerhalb einer <a href=#313>dlgGroup</a> verwendet werden.<br>
|
|
Alle Radio-Buttons innerhalb derselben Group müssen <b>dieselbe</b> <tt>Selected</tt>-Variable haben!
|
|
<p>
|
|
Wenn der Benutzer einen <tt>dlgRadioButton</tt> selektiert, wird der Index dieses Buttons innerhalb
|
|
der <tt>dlgGroup</tt> in der <tt>Selected</tt>-Variablen gespeichert.<br>
|
|
Der Ausgangswert von <tt>Selected</tt> definiert, welcher Radio-button per default selektiert ist.
|
|
Liegt <tt>Selected</tt> ausserhalb des gültigen Bereichs dieser Group, ist kein Radio-Button
|
|
selektiert.
|
|
Um die richtige Radio-Button-Selektion zu erhalten, muss <tt>Selected</tt> schon <b>vor</b>
|
|
der Definition des ersten <tt>dlgRadioButton</tt> festgelegt werden, und darf nicht verändert
|
|
werden, während man weitere Radio-Buttons hinzufügt. Ansonsten ist es ungewiss welcher
|
|
Radio-Button (wenn überhaupt einer) selektiert wird.
|
|
<p>
|
|
Das optionale <tt>statement</tt> wird ausgeführt, wenn ein <tt>dlgRadioButton</tt> selektiet wird.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
int align = 1;
|
|
dlgGroup("Alignment") {
|
|
dlgRadioButton("&Top", align);
|
|
dlgRadioButton("&Center", align);
|
|
dlgRadioButton("&Bottom", align);
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=321>
|
|
<h1>dlgRealEdit</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Definiert ein Real-Eingabe-Feld.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>dlgRealEdit(real &Value, real Min, real Max)</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#315>dlgIntEdit</a>,
|
|
<a href=#325>dlgStringEdit</a>,
|
|
<a href=#316>dlgLabel</a>,
|
|
<a href=#331>Layout-Information</a>,
|
|
<a href=#338>Ein vollständiges Beispiel</a>
|
|
<p>
|
|
Das <tt>dlgRealEdit</tt>-Statement definiert ein Real-Eingabe-Feld mit dem angegebenen <tt>Value</tt> (Wert).
|
|
<p>
|
|
Wenn <tt>Value</tt> ursprünglich ausserhalb des Bereiches von <tt>Min</tt> und <tt>Max</tt> liegt,
|
|
wird dieser auf diese Werte begrenzt.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
real Value = 1.4142;
|
|
dlgHBoxLayout {
|
|
dlgLabel("Enter a &Number between 0 and 99");
|
|
dlgRealEdit(Value, 0.0, 99.0);
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=322>
|
|
<h1>dlgSpacing</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Definiert zusätzlichen Abstand in einem Box-Layout-Kontext.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>dlgSpacing(int Size)</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#314>dlgHBoxLayout</a>,
|
|
<a href=#330>dlgVBoxLayout</a>,
|
|
<a href=#324>dlgStretch</a>,
|
|
<a href=#331>Layout-Information</a>,
|
|
<a href=#338>Ein vollständiges Beispiel</a>
|
|
<p>
|
|
Das <tt>dlgSpacing</tt>-Statement definiert zusätzlichen Abstand in einem Vertical- bzw.
|
|
Horizontal-Box-Layout-Kontext.
|
|
<p>
|
|
<tt>Size</tt> definiert die Anzahl der Pixel des zusätzlichen Abstands.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
dlgVBoxLayout {
|
|
dlgLabel("Label 1");
|
|
dlgSpacing(40);
|
|
dlgLabel("Label 2");
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=323>
|
|
<h1>dlgSpinBox</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Definiert ein Spin-Box-Auswahl-Feld.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>dlgSpinBox(int &Value, int Min, int Max)</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#315>dlgIntEdit</a>,
|
|
<a href=#316>dlgLabel</a>,
|
|
<a href=#331>Layout-Information</a>,
|
|
<a href=#338>Ein vollständiges Beispiel</a>
|
|
<p>
|
|
Das <tt>dlgSpinBox</tt>-Statement definiert ein Spin-Box-Auswahl-Feld mit dem angegebenen <tt>Value</tt>.
|
|
<p>
|
|
Wenn <tt>Value</tt> ursprünglich ausserhalb des Bereiches von <tt>Min</tt> und <tt>Max</tt> liegt,
|
|
wird dieser auf diese Werte begrenzt.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
int Value = 42;
|
|
dlgHBoxLayout {
|
|
dlgLabel("&Select value");
|
|
dlgSpinBox(Value, 0, 99);
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=324>
|
|
<h1>dlgStretch</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Definiert einen leeren, dehnbaren Abstand in einem Box-Layout-Kontext.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>dlgStretch(int Factor)</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#314>dlgHBoxLayout</a>,
|
|
<a href=#330>dlgVBoxLayout</a>,
|
|
<a href=#322>dlgSpacing</a>,
|
|
<a href=#331>Layout-Information</a>,
|
|
<a href=#338>Ein vollständiges Beispiel</a>
|
|
<p>
|
|
Das <tt>dlgStretch</tt>-Statement definiert einen leeren dehnbaren Abstand in einem Vertical-
|
|
oder einem Horizontal-Box-Layout-Kontext.
|
|
<p>
|
|
<tt>Factor</tt> definiert den Dehnungsfaktor des Abstands.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
dlgHBoxLayout {
|
|
dlgStretch(1);
|
|
dlgPushButton("+OK") { dlgAccept(); };
|
|
dlgPushButton("Cancel") { dlgReject(); };
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=325>
|
|
<h1>dlgStringEdit</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Definiert ein String-Eingabe-Feld.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>dlgStringEdit(string &Text)</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#321>dlgRealEdit</a>,
|
|
<a href=#315>dlgIntEdit</a>,
|
|
<a href=#328>dlgTextEdit</a>,
|
|
<a href=#316>dlgLabel</a>,
|
|
<a href=#331>Layout-Information</a>,
|
|
<a href=#338>Ein vollständiges Beispiel</a>
|
|
<p>
|
|
Das <tt>dlgStringEdit</tt>-Statement definiert ein Text-Eingabe-Feld mit dem angegebenen <tt>Text</tt>.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
string Name = "Linus";
|
|
dlgHBoxLayout {
|
|
dlgLabel("Enter &Name");
|
|
dlgStringEdit(Name);
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=326>
|
|
<h1>dlgTabPage</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Definiert eine Tab-Page.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>dlgTabPage(string Title) <i>statement</i></tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#327>dlgTabWidget</a>,
|
|
<a href=#331>Layout-Information</a>,
|
|
<a href=#338>Ein vollständiges Beispiel</a>
|
|
<p>
|
|
Das <tt>dlgTabPage</tt>-Statement definiert eine Tab-Page mit dem angegebenen <tt>Title</tt>, die
|
|
<tt>statement</tt> enthält.
|
|
<p>
|
|
Enthält <tt>Title</tt> ein <tt>'&'</tt>-Zeichen, wird das folgende Zeichen zum Hot-Key.
|
|
Drückt der Benutzer <tt>Alt+hotkey</tt>, wird diese Tab-Page geöffnet.
|
|
Soll im Text ein <tt>'&'</tt>-Zeichen verwendet werden, muss es mit einem
|
|
<a href=#337>Escape-Zeichen</a> markiert werden.
|
|
<p>
|
|
Tab-Pages können nur innerhalb eines <a href=#327>dlgTabWidget</a> verwendet werden.
|
|
<p>
|
|
Standardmäßig enthält <tt>dlgTabPage</tt> ein <a href=#330>dlgVBoxLayout</a>,
|
|
so dass man sich bei einer einfachen Tab-Page nicht um das Layout kümmern muss.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
dlgTabWidget {
|
|
dlgTabPage("Tab &1") {
|
|
dlgLabel("This is page 1");
|
|
}
|
|
dlgTabPage("Tab &2") {
|
|
dlgLabel("This is page 2");
|
|
}
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=327>
|
|
<h1>dlgTabWidget</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Definiert einen Container für Tab-Pages.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>dlgTabWidget <i>statement</i></tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#326>dlgTabPage</a>,
|
|
<a href=#331>Layout-Information</a>,
|
|
<a href=#338>Ein vollständiges Beispiel</a>
|
|
<p>
|
|
Das <tt>dlgTabWidget</tt>-Statement definiert einen Platzhalter für einen Satz von Tab-Pages.
|
|
<p>
|
|
<tt>statement</tt> ist eine Liste eines oder mehrerer <a href=#326>dlgTabPage</a>-Objekte.
|
|
Es dürfen keine anderen Dialog-Objekte in dieser Liste enthalten sein.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
dlgTabWidget {
|
|
dlgTabPage("Tab &1") {
|
|
dlgLabel("This is page 1");
|
|
}
|
|
dlgTabPage("Tab &2") {
|
|
dlgLabel("This is page 2");
|
|
}
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=328>
|
|
<h1>dlgTextEdit</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Definiert ein mehrzeiliges Text-Eingabe-Feld.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>dlgTextEdit(string &Text)</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#325>dlgStringEdit</a>,
|
|
<a href=#329>dlgTextView</a>,
|
|
<a href=#316>dlgLabel</a>,
|
|
<a href=#331>Layout-Information</a>,
|
|
<a href=#338>Ein vollständiges Beispiel</a>
|
|
<p>
|
|
Das <tt>dlgTextEdit</tt>-Statement definiert ein mehrzeiliges text-Eingabe-Feld mit dem angegebenen <tt>Text</tt>.
|
|
<p>
|
|
Die einzelnen Zeilen in <tt>Text</tt> müssen mit einem Newline-Zeichen (<tt>'\n'</tt>) getrennt werden.
|
|
Beliebige Leerzeichen am Ende der <tt>Text</tt>-Zeilen werden gelöscht.
|
|
Leere Zeilen am Endes des Textes werden vollständig entfernt.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
string Text = "This is some text.\nLine 2\nLine 3";
|
|
dlgVBoxLayout {
|
|
dlgLabel("&Edit the text");
|
|
dlgTextEdit(Text);
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=329>
|
|
<h1>dlgTextView</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Definiert ein mehrzeiliges Text-Viewer-Feld.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>dlgTextView(string Text)</tt><br>
|
|
<tt>dlgTextView(string Text, string &Link) <i>statement</i></tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#328>dlgTextEdit</a>,
|
|
<a href=#316>dlgLabel</a>,
|
|
<a href=#331>Layout-Information</a>,
|
|
<a href=#338>Ein vollständiges Beispiel</a>
|
|
<p>
|
|
Das <tt>dlgTextView</tt>-Statement definiert ein mehrzeiliges Text-Viewer-Feld mit dem angegebenen <tt>Text</tt>.
|
|
<p>
|
|
Der <tt>Text</tt> darf <a href=#339>HTML</a>-Tags enthalten.
|
|
<p>
|
|
Falls <tt>Link</tt> angegeben wird und der <tt>Text</tt> Hyperlinks enthält, wird <tt>statement</tt>
|
|
ausgeführt wenn der Benutzer auf einen Hyperlink klickt, wobei der Wert von <tt>Link</tt>
|
|
auf das gesetzt wird, was im <tt><a href=...></tt>-Tag als Wert für <i>href</i> angegeben wurde.
|
|
Ist die <tt>Link</tt>-Variable nach der Ausführung von <tt>statement</tt> nicht leer, so
|
|
findet die standardmäßige Behandlung von Hyperlinks statt. Dies ist auch der Fall, wenn
|
|
<tt>Link</tt> vor dem Öffnen von dlgTextView bereits Text enthält, was es ermöglicht,
|
|
zu Beginn an eine vorgegebene Textstelle zu positionieren.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
string Text = "This is some text.\nLine 2\nLine 3";
|
|
dlgVBoxLayout {
|
|
dlgLabel("&View the text");
|
|
dlgTextView(Text);
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=330>
|
|
<h1>dlgVBoxLayout</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Öffnet einen Vertical-Box-Layout-Kontext.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>dlgVBoxLayout <i>statement</i></tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#312>dlgGridLayout</a>,
|
|
<a href=#314>dlgHBoxLayout</a>,
|
|
<a href=#331>Layout-Information</a>,
|
|
<a href=#338>Ein vollständiges Beispiel</a>
|
|
<p>
|
|
Das <tt>dlgVBoxLayout</tt>-Statement öffnet einen Vertical-Box-Layout-Kontext für das angegebene
|
|
<tt>statement</tt>.
|
|
<p>
|
|
Standardmäßig enthält <a href=#311>dlgDialog</a> ein <tt>dlgVBoxLayout</tt>,
|
|
so dass man sich bei einfachen Dialogen keine Gedanken zum Layout machen muss.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
dlgVBoxLayout {
|
|
dlgLabel("Box 1");
|
|
dlgLabel("Box 2");
|
|
dlgLabel("Box 3");
|
|
}
|
|
</pre>
|
|
|
|
|
|
<a name=331>
|
|
<h1>Layout-Information</h1>
|
|
Alle Objekte eines User-Language-Dialogs werden in einem <i>Layout-Kontext</i> verwendet.
|
|
<p>
|
|
Es gibt verschiedene Layout-Kontexte, wie <a href=#312>grid</a>, <a href=#314>horizontal</a>
|
|
oder <a href=#330>vertical</a>.
|
|
<h2>Grid-Layout-Kontext</h2>
|
|
Objekte in einem Grid-Layout-Kontext müssen die Raster-Koordinaten der Zelle (Cell) oder der Zellen angeben,
|
|
in der/denen sie plaziert werden sollen. Um einen Text in Reihe (row) 5, Spalte (column) 2 zu plazieren,
|
|
schreiben Sie
|
|
<pre>
|
|
dlgGridLayout {
|
|
dlgCell(5, 2) dlgLabel("Text");
|
|
}
|
|
</pre>
|
|
Soll das Objekt über mehr als eine Zelle gehen, müssen Sie die Koordinaten der Start-Zelle und
|
|
der End-Zelle angeben. Um eine Group zu plazieren, die sich von Reihe 1, Spalte 2 über Reihe 3,
|
|
Spalte 5 erstreckt, schreiben Sie
|
|
<pre>
|
|
dlgGridLayout {
|
|
dlgCell(1, 2, 3, 5) dlgGroup("Title") {
|
|
//...
|
|
}
|
|
}
|
|
</pre>
|
|
<h2>Horizontal-Layout-Kontext</h2>
|
|
Objekte in einem Horizontal-Layout-Kontext werden von links nach rechts plaziert.
|
|
<p>
|
|
Die Sonder-Objekte <a href=#324>dlgStretch</a> und <a href=#322>dlgSpacing</a>
|
|
können verwendet werden, um die Verteilung der Abstände zu verfeinern.
|
|
<p>
|
|
Um zwei Buttons zu definieren, die sich bis an den rechten Rand des Dialogs erstrecken, schreiben Sie
|
|
<pre>
|
|
dlgHBoxLayout {
|
|
dlgStretch(1);
|
|
dlgPushButton("+OK") dlgAccept();
|
|
dlgPushButton("Cancel") dlgReject();
|
|
}
|
|
</pre>
|
|
<h2>Vertical-Layout-Kontext</h2>
|
|
Objekte in einem Vertical-Layout-Kontext folgen denselben Vorschriften wie die in einem
|
|
Horizontal-Layout-Kontext mit dem Unterschied, dass sie von oben nach unten angeordnet werden.
|
|
<h2>Gemischter Layout-Kontext</h2>
|
|
Vertical-, Horizontal- und Grid-Layout-Kontexte können gemischt werden, um die gewünschte
|
|
Dialog-Struktur zu ezeugen.
|
|
Siehe <a href=#338>Ein vollständiges Beispiel</a>.
|
|
|
|
|
|
<a name=332>
|
|
<h1>Dialog-Funktionen</h1>
|
|
Folgende Funktionen können mit User-Language-Dialogen verwendet werden:
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><a href=#333>dlgAccept()</a> </td><td width=20><td>schließt den Dialog und akzeptiert dessen Inhalt</td></tr>
|
|
<tr><td><a href=#334>dlgRedisplay()</a> </td><td width=20><td>aktualisiert den Dialog nachdem beliebige Werte verändert wurden</td></tr>
|
|
<tr><td><a href=#335>dlgReset()</a> </td><td width=20><td>setzt alle Dialog-Objekte auf den Ursprungswert zurück</td></tr>
|
|
<tr><td><a href=#336>dlgReject()</a> </td><td width=20><td>schließt den Dialog und verwirft dessen Inhalt</td></tr>
|
|
</table>
|
|
|
|
|
|
<a name=333>
|
|
<h1>dlgAccept()</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Schließt den Dialog und akzeptiert dessen Inhalt.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>void dlgAccept([ <i>int Result</i> ]);</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#336>dlgReject</a>,
|
|
<a href=#311>dlgDialog</a>,
|
|
<a href=#338>Ein vollständiges Beispiel</a>
|
|
<p>
|
|
Die <tt>dlgAccept</tt>-Funktion schließt <a href=#311>dlgDialog</a>,
|
|
und kehrt zurück nachdem das aktuelle Statement beendet wurde.
|
|
<p>
|
|
Jede Änderung, die der Benutzer im Dialog macht, wird übernommen und an die Variablen,
|
|
die bei der Definition der <a href=#307>Dialog-Objekte</a> angegeben
|
|
wurden, kopiert.
|
|
<p>
|
|
Die optionale Angabe von <tt>Result</tt> ist der Wert der vom Dialog geliefert wird.
|
|
Das sollte typischerweise ein positiver Integer-Wert sein.
|
|
Wird kein Wert angegeben, ist der Standardwert gleich <tt>1</tt>.
|
|
<p>
|
|
Bitte beachten Sie, dass <tt>dlgAccept()</tt> wieder in die normale Programm-
|
|
Routine zurückkehrt, so wie in dieser Sequenz:
|
|
<pre>
|
|
dlgPushButton("OK") {
|
|
dlgAccept();
|
|
dlgMessageBox("Accepting!");
|
|
}
|
|
</pre>
|
|
Das Statement nach <tt>dlgAccept()</tt> wird noch ausgeführt!
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
int Result = dlgDialog("Test") {
|
|
dlgPushButton("+OK") dlgAccept(42);
|
|
dlgPushButton("Cancel") dlgReject();
|
|
};
|
|
</pre>
|
|
|
|
|
|
<a name=334>
|
|
<h1>dlgRedisplay()</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Aktualisiert den Dialog-Inhalt nachdem Werte verändert wurden.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>void dlgRedisplay(void);</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#335>dlgReset</a>,
|
|
<a href=#311>dlgDialog</a>,
|
|
<a href=#338>Ein vollständiges Beispiel</a>
|
|
<p>
|
|
Die <tt>dlgRedisplay</tt>-Funktion wird aufgerufen, um den <a href=#311>dlgDialog</a>,
|
|
nach dem Verändern von Variablen, die in den <a href=#307>Dialog-Objekten</a>
|
|
definiert wurden, zu aktualisieren.
|
|
<p>
|
|
Sie brauchen nur <tt>dlgRedisplay()</tt> aufrufen, wenn der Dialog während der Ausführung
|
|
des Programmcodes aktualisiert werden soll.
|
|
Im folgenden Beispiel wird der Status auf "Running..." gesetzt und <tt>dlgRedisplay()</tt>
|
|
muss aufgerufen werden, um die Änderungen für die Ausführung des Programms wirksam
|
|
zu machen. Nach dem Ändern des Status auf "Finished.", braucht man <tt>dlgRedisplay()</tt>
|
|
nicht mehr aufrufen, da alle Dialog-Objekte nach dem Verlassen des Statements aktualisiert
|
|
werden.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
string Status = "Idle";
|
|
int Result = dlgDialog("Test") {
|
|
dlgLabel(Status, 1); // note the '1' to tell the label to be updated!
|
|
dlgPushButton("+OK") dlgAccept(42);
|
|
dlgPushButton("Cancel") dlgReject();
|
|
dlgPushButton("Run") {
|
|
Status = "Running...";
|
|
dlgRedisplay();
|
|
// some program action here...
|
|
Status = "Finished.";
|
|
}
|
|
};
|
|
</pre>
|
|
|
|
|
|
<a name=335>
|
|
<h1>dlgReset()</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Setzt alle Dialog-Objekte auf ihren ursprünglichen Wert.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>void dlgReset(void);</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#336>dlgReject</a>,
|
|
<a href=#311>dlgDialog</a>,
|
|
<a href=#338>Ein vollständiges Beispiel</a>
|
|
<p>
|
|
Die <tt>dlgReset</tt>-Funktion kopiert die ursprünglichen Werte in alle
|
|
<a href=#307>Dialog-Objekte</a> des aktuellen
|
|
<a href=#311>dlgDialog</a> zurück.
|
|
<p>
|
|
Alle Änderungen, die der Benutzer im Dialog machte, werden verworfen.
|
|
<p>
|
|
Ein Aufruf von <a href=#336><tt>dlgReject()</tt></a> impliziert einen
|
|
Aufruf von <tt>dlgReset()</tt>.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
int Number = 1;
|
|
int Result = dlgDialog("Test") {
|
|
dlgIntEdit(Number);
|
|
dlgPushButton("+OK") dlgAccept(42);
|
|
dlgPushButton("Cancel") dlgReject();
|
|
dlgPushButton("Reset") dlgReset();
|
|
};
|
|
</pre>
|
|
|
|
|
|
<a name=336>
|
|
<h1>dlgReject()</h1>
|
|
<dl>
|
|
<dt>
|
|
<b>Funktion</b>
|
|
<dd>
|
|
Schließt den Dialog und verwirft seinen Inhalt.
|
|
<dt>
|
|
<b>Syntax</b>
|
|
<dd>
|
|
<tt>void dlgReject([ <i>int Result</i> ]);</tt>
|
|
</dl>
|
|
<b>Siehe auch</b> <a href=#333>dlgAccept</a>,
|
|
<a href=#335>dlgReset</a>,
|
|
<a href=#311>dlgDialog</a>,
|
|
<a href=#338>Ein vollständiges Beispiel</a>
|
|
<p>
|
|
Die <tt>dlgReject</tt>-Funktion veranlasst, dass <a href=#311>dlgDialog</a>
|
|
geschlossen wird und nach dem Beenden der aktuellen Statement-Sequenz zurückkehrt.
|
|
<p>
|
|
Jede Änderung, die der Benutzer im Dialog machte, wird verworfen.
|
|
Die Variablen, die während der Definition der <a href=#307>Dialog-Objekte</a>
|
|
übergeben wurden, werden auf Ihren ursprünglichen Wert zurückgesetzt.
|
|
<p>
|
|
Der optionale Wert für <tt>Result</tt> wird vom Dialog zurückgegeben.
|
|
Typischerweise ist das <tt>0</tt> oder ein negativer Integer-Wert.
|
|
Wird kein Wert angegeben, ist er standardmäßig <tt>0</tt>.
|
|
<p>
|
|
Beachten Sie, dass <tt>dlgReject()</tt> wieder in die normale Programm-Routine zurückkehrt,
|
|
wie in dieser Sequenz:
|
|
<pre>
|
|
dlgPushButton("Cancel") {
|
|
dlgReject();
|
|
dlgMessageBox("Rejecting!");
|
|
}
|
|
</pre>
|
|
Das Statement nach <tt>dlgReject()</tt> wird auch noch ausgeführt!
|
|
<p>
|
|
Der Aufruf von <tt>dlgReject()</tt> impliziert den Aufruf von <a href=#335><tt>dlgReset()</tt></a>.
|
|
<h2>Beispiel</h2>
|
|
<pre>
|
|
int Result = dlgDialog("Test") {
|
|
dlgPushButton("+OK") dlgAccept(42);
|
|
dlgPushButton("Cancel") dlgReject();
|
|
};
|
|
</pre>
|
|
|
|
|
|
<a name=337>
|
|
<h1>Escape-Zeichen</h1>
|
|
Einige Zeichen haben in Schaltflächen-
|
|
oder Label-Texten eine besondere Bedeutung, so dass sie mit <i>Escape-Zeichen</i>
|
|
markiert werden müssen, wenn sie tatsächlich im Text erscheinen sollen.
|
|
<p>
|
|
Dazu müssen Sie dem Zeichen einen <i>Backslash</i> voranstellen, so wie in
|
|
<pre>
|
|
dlgLabel("Miller \\& Co.");
|
|
</pre>
|
|
Das Ergebnis wird im Dialog so aussehen: "Miller & Co."
|
|
<p>
|
|
Beachten Sie, dass hier in Wirklichkeit <b>zwei</b> Backslash-Zeichen verwendet wurden,
|
|
da diese Zeile erst durch den User-Language-Parser geht, der den ersten Backslash
|
|
abzieht.
|
|
|
|
|
|
<a name=338>
|
|
<h1>Ein vollständiges Beispiel</h1>
|
|
Hier folgt ein vollständiges Beispiel eines User-Language-Dialogs:
|
|
<pre>
|
|
int hor = 1;
|
|
int ver = 1;
|
|
string fileName;
|
|
int Result = dlgDialog("Enter Parameters") {
|
|
dlgHBoxLayout {
|
|
dlgStretch(1);
|
|
dlgLabel("This is a simple dialog");
|
|
dlgStretch(1);
|
|
}
|
|
dlgHBoxLayout {
|
|
dlgGroup("Horizontal") {
|
|
dlgRadioButton("&Top", hor);
|
|
dlgRadioButton("&Center", hor);
|
|
dlgRadioButton("&Bottom", hor);
|
|
}
|
|
dlgGroup("Vertical") {
|
|
dlgRadioButton("&Left", ver);
|
|
dlgRadioButton("C&enter", ver);
|
|
dlgRadioButton("&Right", ver);
|
|
}
|
|
}
|
|
dlgHBoxLayout {
|
|
dlgLabel("File &name:");
|
|
dlgStringEdit(fileName);
|
|
dlgPushButton("Bro&wse") {
|
|
fileName = dlgFileOpen("Select a file", fileName);
|
|
}
|
|
}
|
|
dlgGridLayout {
|
|
dlgCell(0, 0) dlgLabel("Row 0/Col 0");
|
|
dlgCell(1, 0) dlgLabel("Row 1/Col 0");
|
|
dlgCell(0, 1) dlgLabel("Row 0/Col 1");
|
|
dlgCell(1, 1) dlgLabel("Row 1/Col 1");
|
|
}
|
|
dlgSpacing(10);
|
|
dlgHBoxLayout {
|
|
dlgStretch(1);
|
|
dlgPushButton("+OK") dlgAccept();
|
|
dlgPushButton("Cancel") dlgReject();
|
|
}
|
|
};
|
|
</pre>
|
|
|
|
|
|
<a name=339>
|
|
<h1>Unterstützte HTML-Tags</h1>
|
|
EAGLE unterstützt eine Teilmenge von Tags (Steuerzeichen), die zum Formatieren von HTML-Seiten
|
|
verwendet werden.
|
|
Damit kann man Texte von einigen Objekten im <a href=#302>User-Language-Dialog</a>,
|
|
in der <tt><a href=#147>#usage</a></tt>-Directive oder in der <a href=#44>Description</a>
|
|
von Bibliotheks-Objekten formatieren.
|
|
<p>
|
|
Text wird zu HTML-Text, wenn die erste Zeile ein Tag enthält.
|
|
Wenn das nicht der Fall ist und Sie den Text formatieren wollen,
|
|
schließen Sie den ganzen Text in das <tt><html>...</html></tt> Tag ein.
|
|
<p>
|
|
Die folgende Tabelle listet alle unterstützten HTML-Tags mit ihren verfügbaren Attributen auf:
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><b>Tag</b></td><td width=20><td><b>Beschreibung</b></td></tr>
|
|
<tr><td><html>...</html></td><td width=20><td>Ein HTML-Dokument. Es versteht folgende Attribute
|
|
<ul>
|
|
<li><tt>bgcolor</tt> - Die Hintergrundfarbe, z. B. <tt>bgcolor="yellow"</tt> or <tt>bgcolor="#0000FF"</tt>.
|
|
<li><tt>background</tt> - Das Hintergrundbild, zum Beispiel <tt>background="granit.xpm"</tt>.
|
|
<li><tt>text</tt> - Die default Textfarbe, z. B. <tt>text="red"</tt>.
|
|
<li><tt>link</tt> - Die Farbe eines Links, z. B. <tt>link="green"</tt>.
|
|
</ul>
|
|
</td></tr>
|
|
<tr><td><h1>...</h1></td><td width=20><td>Eine Haupt-Überschrift.</td></tr>
|
|
<tr><td><h2>...</h2></td><td width=20><td>Eine untergeordnete Überschrift.</td></tr>
|
|
<tr><td><h3>...</h3></td><td width=20><td>Eine weiter untergeordnete Überschrift.</td></tr>
|
|
<tr><td><p>...</p></td><td width=20><td>Ein links-bündiger Abschnitt. Bestimmen Sie die Anordnung mit dem <tt>align</tt> Attribut. Mögliche Werte sind <tt>left</tt>, <tt>right</tt> und <tt>center</tt>.</td></tr>
|
|
<tr><td><center>...</center></td><td width=20><td>Ein zentrierter Abschnitt.</td></tr>
|
|
<tr><td><blockquote>...</blockquote></td><td width=20><td>Ein eingerückter Abschnitt, sinnvoll für Zitate.</td></tr>
|
|
<tr><td><ul>...</ul></td><td width=20><td>Eine ungeordnete Liste. Sie können auch ein type-Argument angeben um einen Bullet-Style zu definieren. Default ist <tt>type=disc</tt>, andere Typen sind <tt>circle</tt> und <tt>square</tt>.</td></tr>
|
|
<tr><td><ol>...</ol></td><td width=20><td>Eine geordnete Liste. Sie können auch ein type-Argument angeben um die Art der Nummerierung zu definieren. Default ist <tt>type="1"</tt>, andere Typen sind <tt>"a"</tt> und <tt>"A"</tt>.</td></tr>
|
|
<tr><td><li>...</li></td><td width=20><td>Ein Punkt in einer Liste. Dieses Tag kann nur innerhalb eines <tt>ol</tt> oder <tt>ul</tt> Kontext verwendet werden.</td></tr>
|
|
<tr><td><pre>...</pre></td><td width=20><td>Für größere Mengen von Code. Leerzeichen im Inhalt bleiben erhalten. Für kleinere Mengen Code, benutzen Sie den Inline-style <tt>code</tt>.</td></tr>
|
|
<tr><td><a>...</a></td><td width=20><td>Ein Anker oder Link. Folgende Attribute sind erlaubt
|
|
<ul>
|
|
<li><tt>href</tt> - Das Referenz-Ziel wie in <tt><a href="#123">...</a></tt>.
|
|
<li><tt>name</tt> - Der Anker-Name, wie in <tt><a name="123">...</a></tt>.
|
|
</ul>
|
|
</td></tr>
|
|
<tr><td><em>...</em></td><td width=20><td>Emphasized (kursiv)(genauso wie <tt><i>...</i></tt>).</td></tr>
|
|
<tr><td><strong>...</strong></td><td width=20><td>Stark (genauso wie <tt><b>...</b></tt>).</td></tr>
|
|
<tr><td><i>...</i></td><td width=20><td>Kursiver Text.</td></tr>
|
|
<tr><td><b>...</b></td><td width=20><td>Fetter Text.</td></tr>
|
|
<tr><td><u>...</u></td><td width=20><td>Unterstrichener Text.</td></tr>
|
|
<tr><td><big>...</big></td><td width=20><td>Eine größere Texthöhe.</td></tr>
|
|
<tr><td><small>...</small></td><td width=20><td>Eine kleinere Texthöhe.</td></tr>
|
|
<tr><td><code>...</code></td><td width=20><td>Kennzeichnet Code. (wie auch <tt><tt>...</tt></tt>. Für größere Mengen an Code, verwenden Sie das Block-Tag <tt>pre</tt>.</td></tr>
|
|
<tr><td><tt>...</tt></td><td width=20><td>Typewriter Schriftart.</td></tr>
|
|
<tr><td><font>...</font></td><td width=20><td>Zur Bestimmung von Texthöhe, Schrift-Familie und Textfarbe. Das Tag versteht folgende Attribute:
|
|
<ul>
|
|
<li><tt>color</tt> - Die Textfarbe, z. B. <tt>color="red"</tt> oder <tt>color="#FF0000"</tt>.
|
|
<li><tt>size</tt> - Die logische Größe der Schrift. Logische Größen von 1 bis 7 werden unterstützt. Der Wert darf entweder absolut, z. B. <tt>size=3,</tt> oder relativ, wie <tt>size=-2</tt> sein. Im letzten Fall werden die Größen einfach addiert.
|
|
<li><tt>face</tt> - Die Schriftart-Familie, z. B. <tt>face=times</tt>.
|
|
</ul>
|
|
</td></tr>
|
|
<tr><td><img...></td><td width=20><td>Ein Bild. Dieses Tag versteht die folgenden Attribute:
|
|
<ul>
|
|
<li><tt>src</tt> - Den Namen des Bildes, z. B. <tt><img src="image.xpm"></tt>.<br>
|
|
Unterstützte Bildformate sind:<br>
|
|
".bmp" (Windows Bitmap Dateien)<br>
|
|
".pbm" (Portable Bitmap Dateien)<br>
|
|
".pgm" (Portable Grayscale Bitmap Dateien)<br>
|
|
".png" (Portable Network Graphics Dateien)<br>
|
|
".ppm" (Portable Pixelmap Dateien)<br>
|
|
".xbm" (X Bitmap Dateien)<br>
|
|
".xpm" (X Pixmap Dateien)
|
|
<li><tt>width</tt> - Die Breite des Bildes. Passt das Bild nicht in die angegebene Größe, wird es automatisch skaliert.
|
|
<li><tt>height</tt> - Die Höhe des Bildes.
|
|
<li><tt>align</tt> - Bestimmt wo das Bild plaziert wird. Defaultmäßig wird ein Bild "inline" plaziert, genauso wie ein Buchstabe. Legen Sie <tt>left</tt> oder <tt>right</tt> fest, um das Bild an der entsprechenden Stelle zu plazieren.
|
|
</ul>
|
|
</td></tr>
|
|
<tr><td><hr></td><td width=20><td>Eine waagrechte Linie.</td></tr>
|
|
<tr><td><br></td><td width=20><td>Ein Zeilenumbruch.</td></tr>
|
|
<tr><td><nobr>...</nobr></td><td width=20><td>Kein Zeilenumbruch.Erhält "Word Wrap".</td></tr>
|
|
<tr><td><table>...</table></td><td width=20><td>Eine Tabellen-Definition.
|
|
Die Standardtabelle ist ohne Rahmen. Geben Sie das boolsche Attribut
|
|
<tt>border</tt> an um einen Rahmen zu erhalten. Andere Attribute sind:
|
|
<ul>
|
|
<li><tt>bgcolor</tt> - Die Hintergrundfarbe.
|
|
<li> <tt>width</tt> - Die Tabellenbreite. Wird entweder in Pixel oder in Prozent der Spaltenbreite angegeben, z. B. <tt>width=80%</tt>.
|
|
<li> <tt>border</tt> - Die Breite des Tabellenrandes. Default ist 0 (= kein Rand).
|
|
<li> <tt>cellspacing</tt> - Zusätzlicher Leerraum um die Tabellenzelle. Default ist 2.
|
|
<li> <tt>cellpadding</tt> - Zusätzlicher Leerraum um den Inhalt einer Tabellenzelle. Default ist 1.
|
|
</ul>
|
|
</td></tr>
|
|
<tr><td><tr>...</tr></td><td width=20><td>Eine Tabellen-Reihe. Kann nur mit <tt>table</tt> verwendet werden. Versteht die Attribute:
|
|
<ul>
|
|
<li><tt>bgcolor</tt> - Die Hintergrundfarbe.
|
|
</ul>
|
|
</td></tr>
|
|
<tr><td><td>...</td></td><td width=20><td>Eine Zelle in einer Tabelle. Kann nur innerhalb <tt>tr</tt> verwendet werden.Versteht die Attribute:
|
|
<ul>
|
|
<li><tt>bgcolor</tt> - Die Hintergrundfarbe.
|
|
<li> <tt>width</tt> - Die Zellenbreite. Wird entweder in Pixel oder in Prozent der gesamten Tabellenbreite angegeben, z. B. <tt>width=50%</tt>.
|
|
<li> <tt>colspan</tt> - Legt fest wieviele Spalten diese Zelle belegt. Default ist 1.
|
|
<li> <tt>rowspan</tt> - Legt fest wieviele Reihen diese Zelle belegt. Default ist 1.
|
|
<li> <tt>align</tt> - Positionierung, mögliche Angaben sind <tt>left</tt>, <tt>right</tt> und <tt>center</tt>. Default ist links-bündig.
|
|
</ul>
|
|
</td></tr>
|
|
<tr><td><th>...</th></td><td width=20><td>Eine "Header"-Zelle in der Tabelle. Wie <tt>td</tt> aber als default mit zentrierter Ausrichtung und fetter Schriftart.</td></tr>
|
|
<tr><td><author>...</author></td><td width=20><td>Markiert den Autor des Texts.</td></tr>
|
|
<tr><td><dl>...</dl></td><td width=20><td>Eine Definitions-Liste.</td></tr>
|
|
<tr><td><dt>...</dt></td><td width=20><td>Ein Definitions-Tag. Kann nur innerhalb <tt>dl</tt> verwendet werden.</td></tr>
|
|
<tr><td><dd>...</dd></td><td width=20><td>Definitions-Daten. Kann nur innerhalb <tt>dl</tt> verwendet werden.</td></tr>
|
|
</table>
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td><b>Tag</b></td><td width=20><td><b>Bedeutung</b></td></tr>
|
|
<tr><td>&lt;</td><td width=20><td><</td></tr>
|
|
<tr><td>&gt;</td><td width=20><td>></td></tr>
|
|
<tr><td>&amp;</td><td width=20><td>&</td></tr>
|
|
<tr><td>&nbsp;</td><td width=20><td>Leerzeichen ohne Umbruch</td></tr>
|
|
<tr><td>&auml;</td><td width=20><td>ä</td></tr>
|
|
<tr><td>&ouml;</td><td width=20><td>ö</td></tr>
|
|
<tr><td>&uuml;</td><td width=20><td>ü</td></tr>
|
|
<tr><td>&Auml;</td><td width=20><td>Ä</td></tr>
|
|
<tr><td>&Ouml;</td><td width=20><td>Ö</td></tr>
|
|
<tr><td>&Uuml;</td><td width=20><td>Ü</td></tr>
|
|
<tr><td>&szlig;</td><td width=20><td>ß</td></tr>
|
|
<tr><td>&copy;</td><td width=20><td>©</td></tr>
|
|
<tr><td>&deg;</td><td width=20><td>°</td></tr>
|
|
<tr><td>&micro;</td><td width=20><td>µ</td></tr>
|
|
<tr><td>&plusmn;</td><td width=20><td>±</td></tr>
|
|
</table>
|
|
|
|
|
|
<a name=340>
|
|
<h1>Automatischer Backup</h1>
|
|
<h2>Maximum backup level</h2>
|
|
Der Write-Befehl erzeugt Backup-Kopien der gesicherten Dateien.
|
|
Sie haben denselben Namen wie die Originaldateien mit einer
|
|
modifizierten Extension, nach dem Muster
|
|
<pre>
|
|
.x#n
|
|
</pre>
|
|
Dabei steht für <tt>'x'</tt> der Buchstabe
|
|
<p>
|
|
<tt>b</tt> in Board-Dateien<br>
|
|
<tt>s</tt> in Schaltplan-Dateien<br>
|
|
<tt>l</tt> in Bibliotheks-Dateien
|
|
<p>
|
|
<tt>n</tt> steht für eine einstellige Zahl von
|
|
1..9. Höhere Ziffern zeigen ältere Dateien an.
|
|
<p>
|
|
Die feste Position des Zeichens '#' ermöglicht das einfache Löschen
|
|
aller Backup-Dateien aus dem Betriebssystem heraus mit <b><tt>*.?#?</tt></b>
|
|
als "Wildcard".
|
|
<p>
|
|
Bitte beachten Sie, dass Backup-Dateien mit derselben Ziffer 'n'
|
|
nicht notwendigerweise konsistente Paare von Platinen- und
|
|
Schaltplan-Dateien repräsentieren.
|
|
<p>
|
|
Die maximale Zahl von Backup-Kopien kann im
|
|
<a href=#15>Backup-Dialog</a>
|
|
gesetzt werden.
|
|
<h2>Auto-Backup-Interval</h2>
|
|
Wurde eine Zeichnung modifiziert, wird automatisch nach der unter
|
|
<i>Auto backup interval</i> eingestellten Zeit eine Sicherungskopie
|
|
erstellt.
|
|
<p>
|
|
Diese Sicherungskopie erhält den Namen nach folgendem Schema:
|
|
<pre>
|
|
.x##
|
|
</pre>
|
|
Dabei steht für <tt>'x'</tt> der Buchstabe
|
|
<p>
|
|
<tt>b</tt> in Board-Dateien<br>
|
|
<tt>s</tt> in Schaltplan-Dateien<br>
|
|
<tt>l</tt> in Bibliotheks-Dateien
|
|
<p>
|
|
Die Sicherheits-Backup-Datei wird nach einem erfolgreichen Abspeichern
|
|
der Zeichnung wieder gelöscht. Kann die Zeichnung nicht mit dem WRITE-Befehl
|
|
gespeichert werden (z. B. aufgrund eines Stromausfalls), benennen Sie
|
|
die Datei einfach um. So kann sie als normale Schaltplan-, Board- bzw.
|
|
Bibliotheksdatei wieder geladen werden.
|
|
<p>
|
|
Die Sicherungsintervall kann im <a href=#15>Backup-Dialog</a> gesetzt werden.
|
|
|
|
|
|
<a name=341>
|
|
<h1>Forward&Back-Annotation</h1>
|
|
Eine Schaltplandatei und die zugehörigen Platinendatei sind durch
|
|
automatische Forward&Back-Annotation logisch verknüpft. Der Benutzer muss
|
|
sich darum normalerweise nicht kümmern. Dennoch wird in diesem Abschnitt
|
|
beschrieben, was genau bei der Forward&Back-Annotation geschieht:
|
|
<ul>
|
|
<li>Holt man ein neues Bauteil in den Schaltplan, so wird das zugehörige
|
|
Package in der linken unteren Ecke der Platinenzeichnung plaziert.
|
|
Enthält das Bauteil Pins mit der Direction "Pwr", dann werden die
|
|
zugehörigen Pads automatisch mit dem entsprechenden Versorgungssignal
|
|
verbunden.
|
|
<li>Wird ein Bauteil aus einem Schaltplan gelöscht, so wird das
|
|
zugehörige Package auch aus der Platine gelöscht. Wires, die mit dem
|
|
Package verbunden waren, bleiben unberührt. Unter Unständen sind
|
|
zusätzliche Vias erforderlich, um diese Signale an den Stellen zu
|
|
verbinden, an denen sich die Pads des gelöschten Bauteils befunden
|
|
haben.
|
|
<li>Löscht man ein Bauteil aus einer Platine, werden alle "Gates", die
|
|
sich in diesem Bauteil befinden, aus dem Schaltplan gelöscht. Dies kann
|
|
unterschiedliche Seiten betreffen, falls die "Gates" auf mehrere Seiten
|
|
verteilt waren.
|
|
<li>Nach einer Operation, die ein Pad von einem Signal entfernt, das als
|
|
Supply-Layer realisiert ist, kann die Anzeige der
|
|
Thermal-/Annulus-Symbole fehlerhaft sein. Ein Window-Refresh korrigiert
|
|
die Anzeige. Derselbe Effekt kann bei Undo-/Redo-Operationen auftreten,
|
|
die sich auf mit einem Supply-Layer verbundene Pads beziehen.
|
|
<li>Die Befehle Pinswap und Gateswap im Schaltplan sorgen dafür, dass
|
|
alle notwendigen Änderungen auch im Board durchgeführt werden.
|
|
Allerdings können die Wires anschließend die Design Rules verletzen. Der
|
|
Benutzer sollte deshalb nach diesen Befehlen die Platine entsprechend
|
|
editieren.
|
|
<li>Um sicherzustellen, dass eine Platine und ein Schaltplan
|
|
zusammengehören (und über Forward&Back-Annotation verbunden sind),
|
|
müssen die beiden Dateien denselben Namen (mit Extensions .brd und .sch)
|
|
haben und im gleichen Verzeichnis gespeichert sein.
|
|
<li>Der Replace-Befehl prüft, ob alle Pads des alten Package, die einem
|
|
Pin zugewiesen waren, auch im neuen Package vorhanden sind - unabhängig
|
|
davon, ob sie mit einem Signal verbunden sind oder nicht.
|
|
<li>Liegen die Pins zweier Schaltplan-Symbole übereinander (Verbindung
|
|
ohne sichtbare Netz-Linie), dann wird eine Netz-Linie erzeugt, wenn
|
|
eines der Bauteile wegbewegt wird. Damit wird eine unnötige
|
|
Ripup-Operation im Board vermieden.
|
|
</ul>
|
|
|
|
|
|
<a name=342>
|
|
<h1>Konsistenzprüfung</h1>
|
|
Damit die Forward&Back-Annotation wirksam werden kann, müssen
|
|
Platine und Schaltplan konsistent sein. Das heisst, sie müssen äquivalente
|
|
Bauteile und Netze bzw. Signale enthalten.
|
|
<p>
|
|
Unter normalen Umständen sind Platine und Schaltplan immer konsistent,
|
|
sofern sie nicht separat editiert worden sind (in diesem Fall
|
|
würden Sie mit der Meldung
|
|
<i>Die Forward&Back-Annotation ist nicht aktiv!</i>
|
|
gewarnt worden sein).
|
|
<p>
|
|
Wenn ein Platinen/Schaltplan-Paar geladen wird, überprüft das Programm
|
|
Konsistenzmarkierungen in den Dateien, um zu sehen, ob sie noch
|
|
konsistent sind. Weisen diese Markierungen auf eine Inkonsistenz hin,
|
|
dann bietet Ihnen das Programm an, einen
|
|
<a href=#48>Electrical Rule Check</a> (ERC) auszuführen,
|
|
der beide Dateien überprüft.
|
|
<p>
|
|
Fällt die Prüfung positiv aus, werden die Dateien als konsistent markiert,
|
|
und die Forward&Back-Annotation wird aktiviert.
|
|
<p>
|
|
Werden die Dateien als inkonsistent erkannt, erscheint das ERC-Protokoll
|
|
in einem Dialog und die Forward&Back-Annotation wird
|
|
<b>nicht</b> aktiviert.
|
|
<p>
|
|
<b>Bitte erschrecken Sie nicht, wenn zahlreiche Fehlermeldungen
|
|
erscheinen. In den meisten Fällen reduziert schon eine einzige Korrektur
|
|
(wie die Umbenennung eines Netzes) die Zahl der Meldungen für den
|
|
nächsten Durchlauf erheblich.</b>
|
|
<h2>Platine und Schaltplan konsistent machen</h2>
|
|
Um ein inkonsistentes Schaltplan-/Platinen-Paar konsistent zu machen,
|
|
müssem Sie alle im ERC-Protokoll aufgeführten Inkonsistenzen manuell
|
|
beseitigen.
|
|
Das kann mit Hilfe der Editor-Befehle wie
|
|
<a href=#68>NAME</a>,
|
|
<a href=#103>VALUE</a>,
|
|
<a href=#76>PINSWAP</a>,
|
|
<a href=#86>REPLACE</a> etc. erreicht werden.
|
|
Nach der Korrektur müssen Sie den
|
|
<a href=#48>ERC</a>-Befehl nochmals verwenden,
|
|
um die Dateien zu überprüfen und um die Forward&Back-Annotation aktivieren
|
|
zu können.
|
|
|
|
|
|
<a name=343>
|
|
<h1>Einschränkungen</h1>
|
|
Folgende Aktionen sind in einer Platine nicht erlaubt, wenn die
|
|
Back-Annotation aktiv ist, wenn also der Schaltplan ebenfalls geladen ist:
|
|
<ul>
|
|
<li>Bauteil hinzufügen (ADD) oder kopieren, das Pads oder Smds enthält
|
|
<li>Luftlinie löschen
|
|
<li>Verbindungen mit dem Signal-Befehl definieren
|
|
<li>Schaltplanteile mit Paste von einem Board in ein Board kopieren,
|
|
wenn darin Pads, Smds oder verbundene Signale enthalten sind
|
|
</ul>
|
|
Sollten Sie eine dieser Operationen auszuführen versuchen, dann erhalten
|
|
Sie eine Meldung, dass dies unter Kontrolle der Back-Annotation nicht
|
|
möglich ist. Bitte führen Sie die Operation dann im Schaltplan aus, sie
|
|
wird dann automatisch in die Platine übernommen. Sollten Sie die
|
|
Operation dennoch im Board ausführen wollen, müssen Sie das
|
|
Schaltplan-Fenster schließen. In diesem Fall sind Schaltplan und Board
|
|
aber nicht mehr konsistent!
|
|
|
|
|
|
<a name=344>
|
|
<h1>Technische Unterstützung</h1>
|
|
Als registrierter EAGLE-Benutzer erhalten Sie von CadSoft kostenlose
|
|
technische Unterstützung. Es gibt folgende Möglichkeiten, uns zu
|
|
erreichen oder die neuesten Programmversionen, Bibliotheken und Treiber
|
|
zu erhalten:
|
|
<p>
|
|
CadSoft Computer GmbH<br>
|
|
Pleidolfweg 15<br>
|
|
84568 Pleiskirchen<br>
|
|
Deutschland
|
|
<p>
|
|
<table border=0 cellpadding=0 cellspacing=0>
|
|
<tr><td>Vertrieb </td><td width=20><td>08635-6989-10</td></tr>
|
|
<tr><td>Hotline </td><td width=20><td>08635-6989-30</td></tr>
|
|
<tr><td>Fax </td><td width=20><td>08635-6989-40</td></tr>
|
|
<tr><td>Email </td><td width=20><td>support@cadsoft.de</td></tr>
|
|
<tr><td>URL </td><td width=20><td>www.cadsoft.de</td></tr>
|
|
</table>
|
|
|
|
|
|
<a name=345>
|
|
<h1>Lizenz</h1>
|
|
Als legaler EAGLE-Benutzer müssen Sie im Besitz einer registrierten
|
|
Benutzer-Lizenz sein. Bitte überprüfen Sie, ob im Dialog "Hilfe/Über EAGLE"
|
|
unter "Lizenziert auf:" Ihr Name und Ihre Anschrift eingetragen ist.
|
|
Sollten Sie Zweifel an der Echtheit Ihrer Lizenz
|
|
haben, setzen Sie sich bitte mit unserem
|
|
<a href=#344>Support-Personal</a>
|
|
in Verbindung.
|
|
<table><tr><td valign="top"><img src="platforms-mac.png"></td><td valign="middle">
|
|
Unter <b>Mac OS X</b> finden Sie diese Angaben unter "EAGLE/Über EAGLE".
|
|
</td></tr></table>
|
|
<p>
|
|
Es gibt verschiedene Lizenz-Typen, die sich darin unterscheiden,
|
|
wie viele Benutzer erlaubt sind und wo das Programm verwendet werden
|
|
darf.
|
|
<h2>Einzelplatz-Lizenz</h2>
|
|
Nur <b>ein</b> Benutzer darf das Programm zu einer bestimmten Zeit
|
|
benutzen. Der Benutzer darf das Programm allerdings auf
|
|
unterschiedlichen Computern installieren, solange er sicherstellt, dass
|
|
nur eine Programmkopie gleichzeitig verwendet wird.
|
|
<p>
|
|
Ein typischer Anwender einer Einzelplatz-Lizenz ist jemand, der
|
|
einen fest installierten PC und zusätzlich einen Notebook-Computer hat,
|
|
den er unterwegs benutzt. Da er immer nur einen Computer benutzt, reicht
|
|
die Einzelplatz-Lizenz aus.
|
|
<h2>Mehrbenutzer-Lizenz</h2>
|
|
Eine Mehrbenutzer-Lizenz darf von mehreren Benutzern (bis zu der auf der
|
|
Lizenz angegebenen maximalen Anzahl) gleichzeitig benutzt werden.
|
|
Das Programm darf auf beliebig vielen unterschiedlichen
|
|
Computern am Standort des Lizenznehmers installiert sein.
|
|
<h2>Commercial License</h2>
|
|
Das Programm darf für jeden Zweck verwendet werden, kommerziell oder
|
|
privat.
|
|
<h2>Educational License</h2>
|
|
Das Programm darf ausschließlich in Ausbildungsstätten wie Schulen,
|
|
Universitäten oder Lehrwerkstätten zu Ausbildungszwecken verwendet
|
|
werden.
|
|
<h2>Student License</h2>
|
|
Das Programm darf ausschließlich für private Zwecke verwendet werden.
|
|
Jede kommerzielle Anwendung ist untersagt. Es stellt eine Verletzung der
|
|
Lizenzbedingungen dar, wenn Sie durch Gebrauch einer Studentenversion
|
|
Geld verdienen.
|
|
|
|
|
|
<a name=346>
|
|
<h1>EAGLE-Lizenz</h1>
|
|
Bevor Sie mit EAGLE arbeiten können, müssen Sie dem Programm Ihre
|
|
persönlichen Lizenzdaten "mitteilen".
|
|
<p>
|
|
Hierzu geben Sie im Dialog "EAGLE Lizenz" den Dateinamen Ihrer EAGLE-Lizenzdatei ein,
|
|
sowie den dazugehörigen Installations-Code, den Sie zusammen mit der Lizenzdatei
|
|
erhalten haben (dieser Code besteht aus zehn Kleinbuchstaben).
|
|
<p>
|
|
Nach dem Betätigen der Enter-Taste oder dem Anklicken des
|
|
<b>OK</b>-Buttons
|
|
ist EAGLE mit Ihren persönlichen Lizenzdaten installiert.
|
|
<p>
|
|
Wenn Sie Probleme mit der Installation haben oder über die
|
|
Gültigkeit Ihrer Lizenz im Zweifel sind, setzen Sie sich bitte mit
|
|
unserem
|
|
<a href=#344>Technischen Support</a> in Verbindung.
|
|
<h2>Nachträgliches Installieren von Modulen</h2>
|
|
Soll die Lizenz um das Schaltplan-/Autorouter-Modul erweitert werden,
|
|
erhalten Sie von uns eine neue Lizenzdatei mit einem
|
|
neuen Installations-Code, welche Sie dem Programm mitteilen müssen.
|
|
Dazu starten Sie das EAGLE-Programm und wählen im <a href=#12>Control Panel</a>
|
|
im Hilfe-Menü den Eintrag <i>EAGLE Lizenz</i>.
|
|
|
|
|
|
<a name=347>
|
|
<h1>EAGLE-Editionen</h1>
|
|
EAGLE ist in drei verschiedenen Editionen verfügbar, um den
|
|
Ansprüchen verschiedener Benutzergruppen gerecht zu werden.
|
|
<h2>Professional</h2>
|
|
Die <i>Professional</i> Edition stellt die volle Funktionalität zur Verfügung:
|
|
<ul>
|
|
<li>Platinenfläche bis zu 1600x1600mm (64x64inch)
|
|
<li>bis zu 16 Signallayer
|
|
<li>bis zu 999 Schaltplanseiten
|
|
</ul>
|
|
<h2>Standard</h2>
|
|
Die <i>Standard</i> Edition besitzt folgende Einschränkungen:
|
|
<ul>
|
|
<li>die Platinenfläche ist auf 160x100mm (6.3x4inch) beschränkt, was einer ganzen Europakarte entspricht
|
|
<li>es stehen nur vier Signallayer (Top, Route2, Route15 und Bottom) zur Verfügung
|
|
<li>ein Schaltplan kann aus bis zu 99 Seiten bestehen
|
|
</ul>
|
|
<h2>Light</h2>
|
|
Die <i>Light</i> Edition besitzt folgende Einschränkungen:
|
|
<ul>
|
|
<li>die Platinenfläche ist auf 100x80mm (4x3.2inch) beschränkt, was einer halben Europakarte entspricht
|
|
<li>es stehen nur zwei Signal-Layer (Top und Bottom) zur Verfügung
|
|
<li>ein Schaltplan kann nur aus einer einzelnen Seite bestehen
|
|
</ul>
|
|
<p>
|
|
Falls Sie eine Fehlermeldung der Form
|
|
<p>
|
|
<i>Die Light-Edition von EAGLE kann die gewünschte Aktion nicht ausführen!</i>
|
|
<p>
|
|
erhalten, so bedeutet dies, dass Sie versucht haben, etwas zu tun, das
|
|
im Widerspruch zu den Einschränkungen der benutzten EAGLE-Edition steht,
|
|
wie etwa ein Bauteil ausserhalb der zulässigen Fläche zu plazieren.
|
|
<p>
|
|
Sowohl die <i>Standard</i> als auch die <i>Light</i> Edition von EAGLE
|
|
ist in der Lage, Dateien zu laden, die mit der <i>Professional</i>
|
|
Edition erzeugt wurden, selbst wenn diese Zeichnungen die Editier-Möglichkeiten
|
|
der verwendeten Edition übersteigen.
|
|
<p>
|
|
Um zu sehen, welcher Edition Ihre Lizenz entspricht, wählen Sie
|
|
<i>Hilfe/Über EAGLE</i> aus dem Menü des Control Panels.
|
|
|
|
</body>
|
|
</html>
|