Wenn Sie sich einen Überblick über die Makrokommandos verschaffen wollen, erzeugen Sie sich unter dem Kommando Makrodatei >> Dokumentieren im Parameter-Menü eine Liste der aktuell verfügbaren Makrokommandos. Zusammen mit den von uns mitgelieferten Beispieldateien geograf.mde und menue.mde haben Sie die ideale Grundlage, um Ihre eigenen Makros oder Stapeldateien zu programmieren. Mit F12 bekommen Sie ebenfalls alle zur Verfügung stehenden Kommandos am Bildschirm aufgelistet. Durch Eingabe eines Kommandoteils (z.B. Lin), können Sie sich alle Kommandos in einer Auswahlliste anzeigen lassen, die den Text 'Lin' enthalten. Durch Auswahl eines Kommandos können Sie die Funktionsweise überprüfen.
1. Befehlsabfolge
Bei der Makroprogrammierung ist eine feste Befehlsfolge einzuhalten. Die Folgende bildet eine “Einheit”:
CMD ”CMD-Befehl” RET
Beispiele: ALT-p=CMD ”SetEbene” RET ”1503.1” RET CMD ”SetDotArt” RET ”1503.233” RET
GM0="Linienart" { CMD "SetLinArt" RET "." RET } LF \
Die Groß- und Kleinschreibung im CMD-Befehl dient nur der Übersicht und ist nicht von Bedeutung. Die Ausdrücke CMD und RET müssen jedoch groß geschrieben werden.
Alternativ kann ab Version 4.0c die verkürzte Syntax CMDBefehl verwendet werden.
Beispiele: ALT-p=CMDSetEbene "1503.1" RET CMDSetDotArt "1503.233" RET
GM0="Linienart" { CMDSetLinArt "." RET } LF \
2. Befehlsabfolge mit Funktionstasten
A) Für einige Kommandos innerhalb eines Werkzeuges existieren nicht unbedingt Namen. Hier wird, wie in früheren Versionen, mit den Funktionstasten F1 bis F9 gearbeitet. Dabei steht F1 für das erste Werkzeug von links, F2 für das zweite u.s.w.. Da Makros mit Funktionstasten vom Kontext abhängig sind, in dem sie aufgerufen wurden, müssen diese Befehlszeilen stets mit einem CMD-Kommando vorweg starten.
Beispiel: CMD "SchraffFlaeche" RET F2 "3,5" RET F4 "1" RET ruft das Erzeugen eine Normalschraffur über einer Fläche mit Linienabstand 3,5 auf.
B) Einträge in Aufklapplisten und Auswahlfenstern lassen sich im Makro über F<n> "<option>" RET wählen, wobei <n> für das n-te Kommando von links und <option> für den Eintragstext der gewünschten Option in der Auswahlliste steht. Dieses Kommando gilt ebenso für die sogenannten "Rundumschalter" für Einstellungen in GEOgraf, von denen stets der Eintrag vor der Klammer gültig ist (z. B. '2D(3D)' oder 'Teilen ja (nein)' ).
Beispiele:
C) Auswahldialoge, in denen mehrere Optionen angehakt werden können, sind auch per Makro ansteuerbar durch F<n> "001011..." RET, wobei jede 0 oder 1 eine Zeile des Dialogs setzt.
3. Die Kommandos RET und ESC
Jedes Makrokommando wird mit einem ‘RET‘ beendet. Zum Teil wird mehr als ein ‘RET‘ verlangt. Das ist im Einzelfall in GEOgraf “per Hand” nachzuvollziehen.
Beispiel:
ALT-l=CMD "PrnDatei" RET RET "ü" RET CMD "PrnSeitenNr" RET "1" RET
Soll ein Werkzeug nach seiner Ausführung per Makro (in Kombination mit F10) gleich wieder verlassen werden, so kann ein ESC am Ende programmiert werden.
4. Definition der Grafikmenüs und Tastaturkommandos
Tastatur- oder Menüdefinitionen (z.B.: GM22 oder Alt-p) dürfen keine Leerzeichen enthalten.
Falsch: GM 22 oder ALT -p Richtig: GM22 oder ALT-p
Eine Makrodefinition darf nicht mit einer Leerzeile beginnen.
Falsch: GM0=
"Rechnen" { CMD "RechnenFlaechen" RET GM2 } LF \
Richtig: GM0="Rechnen" { CMD "RechnenFlaechen" RET GM2 } LF \
Innerhalb der Makrokommandos sind Leerzeichen nötig. Hier sind auch mehrere Leerzeichen hintereinander zulässig, um beispielsweise die Makrodatei übersichtlicher zu gestalten. Definitionen von Grafikmenüs dürfen keine TABs enthalten. Verwenden Sie Leerzeichen stattdessen.
6. Die Kommandos ‘LF \‘ ,‘ | ‘ und ‘LF‘
Diese Kommandos formatieren das Grafikmenü. ‘LF \‘ bildet die waagrechte Trennlinie zum nächsten Kommandofeld und muss am Ende einer Zeile stehen. 'LF' bildet den Abschluss eines Grafikmenüs. ‘ | ‘ ist die senkrechte Begrenzungslinie für Menüfelder, die statt untereinander, nebeneinander liegen sollen. Beide Menüfelder müssen in einer Zeile stehend definiert sein. Vor jedem ‘LF‘ muss eine Kommandofolge in Klammern { } stehen.
Beispiel:
GM11="Konstruktion" { CMD "PunkteOrtho" RET ...} LF \ "Rechnen" { CMD "... } | "Beschriften" { CMD "... } LF \ "Ende" { GM0 } LF |
|
7. Das Kommando 'ALT-LF \' für mehrzeilige Menüs
Der Menüeintrag wird durch das Kommando ALT-LF \ am Ende um eine Zeile vergrößert. In einem Zeilenset, das mit ALT-LF verbunden ist, darf nur eine Kommandoklammer stehen, wobei dies wahlweise die erste oder zweite Zeile sein darf.
Beispiel:
GM0="1. Zeile Beschrift" { CMD "BeschriftDot" RET GM1 } ALT-LF \
"2. Zeile Beschrift" LF \
"erste Zeile Spline" ALT-LF \
"zweite Zeile Spline" { CMD "SplineGen" RET GM2 } LF \
8. Verzweigung von Grafikmakros
GM0 |
GM1 |
|
|
|
Verzweigung vom Makro Konstruktion in GM0 zu GM1. GM0="Konstruktion" { GM1 } LF \ |
9. HardZoom-Kommandos
HardZoom-Kommandos wechseln den Ausschnitt der Grafik (Blatt, Plotbox, ...). Ein Makro, welches ein HardZoom-Kommando enthält, muss mit diesem enden. Darauf folgende Kommandos können aufgrund des Multithreadings nicht mehr ausgeführt werden.
Beispiel:
GM9= "Blattwechsel" { CMD "HardZoomBlatt" RET "Geograf" RET } LF \
Daher funktioniert auch der Befehl END nach einem Mako, welches einen Ausschnitts-Wechsel auslöste, nicht mehr. Hier muss das gewünschte GMxxx explizit programmiert werden.
10. Massenbearbeitung über Makros
Eine Massenbearbeitung kann auch in Makros programmiert werden. Dazu gibt es einige Regeln, welche Sie unbedingt beachten sollten. Der Ablauf der Programmierung muss grundsätzlich folgendermaßen sein:
Beispiel: Massenhaftes Erzeugen von Schraffuren über Objekte
CMDF10Stop CMDSetEbene "11" RET CMDSetLinArt "2013" RET CMDSchraffObjekte F2 "2" RET F3 "100" RET F4 "Normal" RET CMDF10ArtenEbenen "1001" RET "11,81" RET CMDF10SelectAlles CMDF10SelectStart
Per Makro wird F10 nur über Kommandos aus dem 2. Abschnitt vollständig gewählt. Daher muss nach einer Auswahl über den 3. Abschnitt ("F10ArtenEbenen") noch ein "F10SelectAlles" ergänzt werden. Ausgelöst wird die Massenbearbeitung über ein CMDF10SelectStart am Ende.
11. Subroutinen in der GEOgraf Makroprogrammierung
Um bei der Programmierung von GEOgraf-Makros mehr Übersicht zu erhalten, können auch Subroutinen verwendet werden. Auch mehrere Subroutinen nacheinander können mit einem Makrobefehl aufgerufen werden. So verhindern Subroutinen, dass die Makrodefinitionszeilen unübersichtlich lang werden.
Die Syntax für Subroutinen lautet:
M<nr>=<Makrobefehl>
mit <nr> = Nummer der Subroutine, Zahl ab 1000
und <Makrobefehl> = Sequenz von Makrobefehlen, die ausgeführt werden sollen.
Die Aufruf-Syntax lautet dann beispielsweise:
ALT-c=M1001 M1010
oder als Grafikmakro
"Kommandofeld-Name" { M1005 }
Beispiele:
* M1001 = Funktion F10 abschalten zwischen den Makros
M1001=CMD "F10Stop" RET
* M1002 = Funktion "Texte löschen" per Masse
M1002=CMD "TxtDelete" RET CMD "F10SelectAlles" RET "j"
* M1003 = Funktion "Schraffen löschen" per Masse
M1003=CMD "SchraffDelete" RET CMD "F10SelectAlles" RET "j"
....
ALT-d=M1001 M1002 M1001 M1003
* M1004 = Funktion "PNR AN"
M1004=F9 F9 F9 F9 F3 "3" RET "5" RET ESC
* M1005 = Funktion "PNR AUS"
M1005=F9 F9 F9 F9 F3 "0" RET ESC
....
GM0="- HAUPTMENÜ -" { } LF \
....
"PNR AN" { M1004 } | \
"PNR AUS" { M1005 } LF
12. Ansicht-Menü per Makro steuern
Für alle Optionen und Zusatzfenster, welche sich per Mausklick an und aus schalten lassen, ist eine Makrosteuerung implementiert. Dies gilt im Wesentlichen für die Einträge im Ansicht-Menü, welche ein Häkchen davor haben, wenn sie angeschaltet sind, und keines nach Abschaltung.
Das Makro-Kommando lautet:
CMD "SetView" RET
Nachfolgend wird der Text des Kommandos geschrieben, welches gesteuert werden soll, und =1 für das Anschalten oder =0 für das Abschalten angehängt.
Beispiele:
CMD "SetView" RET "Plotansicht=1" RET
CMD "SetView" RET "Ebenenmanager=0" RET
CMD "SetView" RET "Plotboxen=0" RET
CMD "SetView" RET "Plotansicht=0, Punktnummern=1" RET
Die Kommandotexte müssen genau so geschrieben werden, wie sie im Menü stehen. Nur die Groß-/Klein-Schreibung ist beliebig. Wird ein Kommandotext ohne =1 bzw. =0 angegeben, so schaltet der aktuelle Zustand dieser Ansicht um.
13. Menü-Kommandos per Makro starten
Alle Kommandos in den Menüs von GEOgraf können per Makro aufgerufen werden, wozu der Befehl
CMDStartTool
zur Verfügung steht. Mit geöffnetem Dialog endet das Makro.
Das gewünschte Kommando wird als Text angegeben, genau so, wie der Text im GEOgraf erscheint. Das Trennzeichen zwischen den einzelnen Texten im Menübaum ist der senkrechte Strich |.
Beispiele:
CMDStartTool "Werkzeuge|Punkte|Ändern|Datum" RET
CMDStartTool "Datei|Drucken" RET
CMDStartTool "Export|ALK.EDBS|Grundriss" RET
Wenn der Text im Menübaum eindeutig ist, kann eine verkürzte Eingabe erfolgen.
CMDStartTool "Wer|Pu|Änd|Dat" RET
CMDStartTool "Da|Drucken" RET
CMDStartTool "Ex|ALK.ED|Gru" RET
Bedenken Sie dabei jedoch die Lesbarkeit und Pflege Ihrer Makrodateien!
14. Drucken per Makro
Das Drucken einer Plotbox mit einem anzugebenden Blatt kann auch per Makro erfolgen, obwohl die Plotboxauswahl ein Dialog ist.
CMDPlotboxDrucken "Box10" RET "Blatt7" RET
15. Absteckskizze per Makro steuern
Normalerweise enden GEOgraf-Makros, wenn ein Dialog geöffnet wird. Aber für den Dialog Bemaßungsparameter der Absteckskizze ist eine Ansteuerung per Makro möglich.
Zunächst erfolgt der Aufruf des Werkzeugs mit
CMD "BemassOrtho" RET
Zur Eingabe der Parameter wird dahinter ein F4 und in Anführungszeichen jeweils ein Attributname und der gewünschte Wert geschrieben und mit RET abgeschlossen.
F4 "Punktart=1" RET
F4 "Linienart.Ordinate=1" RET
F4 "Anlegemaß.Textart=20" RET
F4 "Endmaß.Format=&(*.###)" RET
F4 "Abszisse.Rahmen=2" RET
Als Attributname wird genau der Text angegeben, der auch im Dialog für diesen Parameter steht. Bei den Parametern aus den vier Registern wird der Registername mit einem Punkt getrennt vorangestellt.
Die Eingabe kann jedoch verkürzt werden, da jeweils die ersten 2 Buchstaben ausreichen.
F4 "Pu=1" RET
F4 "Li.Or=1" RET
F4 "An.Te=20" RET
F4 "En.Fo=&(*.###)" RET
F4 "Ab.Ra=2" RET
Attribute, die nicht im Makro erwähnt werden, bleiben unverändert.
Wird von einem zweiteiligen Attributnamen nur ein Teil angegeben, so steuert dieses Makro alle Felder mit diesem Namen. So kann durch ein Kommando das Textformat, also die Anzahl der Nachkommastellen in allen vier Registern umgestellt werden. Auch der Rahmen oder die Textart von Anlegemaß, Endmaß, Ordinate und Abszisse kann mit einem einzigen Makrokommando einheitlich gesetzt werden.
F4 "Format=&(*.#)" RET
F4 "Format=&(*,##)" RET
F4 "Format=&(*.###)" RET
F4 "Rahmen=5" RET
F4 "Textart=20" RET
Der gewünschte Rahmen wird als Nummer angegeben. Diese entspricht seiner Position in der Auswahlliste der Textrahmen im Dialog. Beispielsweise stellt Rahmen=5 den fünften Rahmen aus dieser Liste "eng, doppelt unterstrichen" ein.
16. Maßkette per Makro steuern
Normalerweise enden GEOgraf-Makros, wenn ein Dialog geöffnet wird. Aber für den Dialog Maßkettenparameter der Maßkette ist eine Ansteuerung per Makro möglich. Das funktioniert analog zum Werkzeug Absteckskizze .
Zunächst erfolgt der Aufruf des Werkzeugs mit
CMDBemassKette bzw. CMDDimensionChain
Zur Eingabe der Parameter wird dahinter ein F5 und in Anführungszeichen jeweils ein Attributname und der gewünschte Wert geschrieben und mit RET abgeschlossen.
F5 "Punktart=1" RET
F5 "Linienart=1" RET
F5 "Textart=20" RET
F5 "Minimale Streckenlänge(m)=1" RET
F5 "Format=&(*.###)" RET
Als Attributname wird genau der Text angegeben, der auch im Dialog für diesen Parameter steht. Das Attribut Format steht erst ab Version 10.2 zur Verfügung.
17. Fangparameter per Makro steuern
Normalerweise enden GEOgraf-Makros, wenn ein Dialog geöffnet wird. Aber für den Dialog Fangparameter ist eine Ansteuerung per Makro möglich. Die einzelnen Kontrollkästchen werden dabei durch 0 bzw. 1 aus- bzw. angeschaltet. Gezählt werden die 14 Zeilen unter "Alle".
alles an:
CmdSnapParameter "11111111111111" RET
Alles aus:
CmdSnapParameter "00000000000000" RET
Gemischt:
CmdSnapParameter "11001101101110" RET
Beim Interpretieren der *.mde-Datei werden von GEOgraf bei Programmierfehlern meistens Fehlermeldungen ausgegeben.
Unbekannte Anweisung
Diese Fehlermeldung gibt einen Hinweis auf die Zeile, in der vermutlich ein Fehler steckt. Gleichzeitig zeigt die Meldung an, welches Zeichen bei der Interpretation Schwierigkeiten macht. |
Taste schon belegt
Diese Fehlermeldung gibt an, dass eine Tastenkombination mehrfach mit Makrokommandos definiert wurde. Sie gibt einen Hinweis auf die Zeile, in der vermutlich ein Fehler steckt. |
Keine Fehlermeldung, Grafikmenü unvollständig
GEOgraf gibt keine Fehlermeldung aus für fehlende Leerzeichen, RET, CMD oder Linefeed. Um diese Fehlerquellen schon bei der Programmierung auszuschließen, empfiehlt sich ein Editor, der Leerzeichen, TABs und Zeilenumbrüche anzeigt.