25
Tips und Tricks zu ME10 Version 3.0 Beta 1 - September 2000 Quelle: ME10 Homepage – http://www.me10.de Dieser Text versucht, das zu ME10 gehörige ‚Drumherum‘ in knapper Form darzustellen. Dazu gehört die Makroprogrammierung, die Feinjustierung von ME10, aber auch all die kleinen Dinge, die ein CAD-System effizient bedienbar machen. In diesem Text geht es nicht um das Zeichnen von Linien - das muß man sich aus den ME10- Handbüchern oder in Kursen erarbeiten. Um diesen Text sinnvoll einsetzen zu können, sollte man mit einem DOS- bzw. Windows-Editor umgehen können und etwas Ahnung vom PC haben (Verzeichnisstruktur und so). Dieser Text fängt sehr allgemein mit recht einfachen Dingen an. Zum Ende hin wird es dann deutlich komplizierter. Dieser Text bezieht sich auf ME10, Version 8 bis 10 für Microsoft Windows 9x/NT/2000. Die Version 3.0 verzichtet auf einige Besonderheiten älterer Versionen von ME10. Dafür wir auf die neue Benutzeroberfläche eingegangen. Die wesentlichste Neuerung aber ist, daß dieser Text nun im PDF-Format vorliegt, und somit mit dem kostenlos erhältlichen Tool ‚Acrobat-Reader’ lesbar ist. Wichtig: Hochkommas werden mit eingetippt, Anführungszeichen dagegen nicht! Für <Text> muss man z.B. einen Variablennamen oder eine Zahl eintragen, also für <Zeilennummer> z.B. einfach 17 schreiben.

Tips und Tricks zu ME10me10.cad.de/tt.pdf · Makro-Datei zu verändern. Da diese Dateien aber komprimiert abgespeichert sind, muß man Da diese Dateien aber komprimiert abgespeichert

  • Upload
    others

  • View
    9

  • Download
    0

Embed Size (px)

Citation preview

Tips und Tricks zu ME10

Version 3.0 Beta 1 - September 2000

Quelle: ME10 Homepage – http://www.me10.de

Dieser Text versucht, das zu ME10 gehörige ‚Drumherum‘ in knapper Form darzustellen. Dazu gehört die Makroprogrammierung, die Feinjustierung von ME10, aber auch all die kleinen Dinge, die ein CAD-System effizient bedienbar machen. In diesem Text geht es nicht um das Zeichnen von Linien - das muß man sich aus den ME10-

Handbüchern oder in Kursen erarbeiten. Um diesen Text sinnvoll einsetzen zu können, sollte man mit einem DOS- bzw. Windows-Editor

umgehen können und etwas Ahnung vom PC haben (Verzeichnisstruktur und so). Dieser Text fängt sehr allgemein mit recht einfachen Dingen an. Zum Ende hin wird es dann deutlich komplizierter.

Dieser Text bezieht sich auf ME10, Version 8 bis 10 für Microsoft Windows 9x/NT/2000. Die Version 3.0 verzichtet auf einige Besonderheiten älterer Versionen von ME10. Dafür wir auf die neue Benutzeroberfläche eingegangen.

Die wesentlichste Neuerung aber ist, daß dieser Text nun im PDF-Format vorliegt, und somit mit dem kostenlos erhältlichen Tool ‚Acrobat-Reader’ lesbar ist.

Wichtig: Hochkommas werden mit eingetippt, Anführungszeichen dagegen nicht!

Für <Text> muss man z.B. einen Variablennamen oder eine Zahl eintragen, also

für <Zeilennummer> z.B. einfach 17 schreiben.

2

INHALT:

1. Die Hilfe-Funktion von ME10 nutzen

2. ME10 startet ... was passiert beim Start, und wie kann ich das nutzen?

3. Wie startet man aus ME10 heraus ein DOS-Programm?

4. Koordinatenvermassung einstellen

5. Den Recall-Buffer nutzen

6. Wichtige Befehle des ME10-Editors

7. Zeichensätze

8. Die Funktionstasten belegen

9. Die Ablaufverfolgung TRACE

10. Das Tablett belegen

11. Schrauben und Lochbilder für ME10

12. Die Null-Schraffur

13. Einstellung der Strichstärke beim Plotten

14. Sinnvolle Einstellungen in ME10

15. Info & Layer

16. Das Modul „versteckte Linien“ (Hidden Line)

17. Teilestruktur

18. Makros laden, speichern, komprimieren und verschlüsseln

19. Makroprogrammierung

19.1 Vorbemerkung

19.2 Warum Makroprogrammierung?

19.3 einfache Programmierung

19.4 Programmierung von Menüs

19.5 Programmierung logischer Tabellen

19.6 DDE-Programmierung (Dynamic Data Exchange)

20. Die neue Benutzeroberfläche (ab Version 9)

21. Die Konfiguration von ME10

22. Fehler in ME10

3

1. Die Hilfe-Funktion von ME10 nutzen Bei älteren Versionen von ME10 genügte es, das Tablettfeld „HILFE“ anzutippen und anschließend ein beliebiges Tablett-/Menüfeld. Alternativ konnte man auch über die Eingabezeile die Hilfe aufrufen, z.B. „help dim_coord“.

Ab der 8er Version wurde es notwendig, einen Browser (Netscape Navigator oder MS-Internet Explorer) zu installieren. Nun hat man nicht nur Zugriff auf die Hilfefunktion (/me10/me_help), sondern auch auf die auf CD vorliegende Online-Dokumentation (Electronic Manual). Natürlich muß dazu die CD in das Laufwerk eingelegt werden. 2. ME10 startet Beim Start von ME10 wird immer die Datei „STARTUP“ und die Datei „ME10.INI“ von ME10 gelesen (ähnlich wie früher DOS stets zuerst die „autoexec.bat“ geladen hat). In der Datei „STARTUP“ wird das Paßwort geladen, sowie einige wichtige Systemeinstellungen getroffen. Laden Sie also diese Datei mit einem Editor (z.B. mit NOTEPAD) und schauen Sie sich diese Datei an.

Zwei Beispiele für das Anpassen der „STARTUP“: Setzt man für "LET Menu_slot_border_distance_y" einen größeren Wert ein, z.B. 5, so werden die einzelnen Bildschirmmenüs höher (gut bei Auflösungen über 1024x768). Ändert man den Wert bei "LET Fill_up_menu" von 0 auf 1, so wird das Bildschirmmenü über die gesamte Bildschirmhöhe gestreckt. Will man ME10 erweitern bzw. anpassen, so sollte man nicht die STARTUP verändern (wegen der Fehlersuche), sondern am Ende der Datei STARTUP eine eigene Datei laden. Schreiben Sie also an das ENDE der STARTUP mit einem geeigneten Editor die Zeile "INPUT 'custom.mac'" (ohne die Anführungszeichen, aber mit den Hochkommas - darauf wurde bereits am Anfang hingewiesen!). Nun muß man noch die Datei „CUSTOM.MAC“ erzeugen. Starten Sie also z.B. NOTEPAD. Damit auch etwas in der Datei steht, schreiben Sie folgende Zeile: „DRAWING_SCALE 1“. Damit ist nach dem Start von ME10 der Maßstab stets M 1:1. Speichern Sie die Datei im ME10-Verzeichnis (c:\me10 oder c:\programme\me10) unter dem Namen „CUSTOM.MAC“ ab.

Was in früheren Versionen von ME10 mit DOS-Umgebungsvariablen gemacht wurde, hat man nun in die „ME10.INI“ verschoben. Hieß es früher z.B. „SET MELOCATORPORT=COM1“, so steht diese Einstellung heute in der „ME10.INI“. Eine ganz wichtige Einstellung betrifft das Erscheinungsbild von ME10. Mit der Variable „MEPELOOK“ kann man einstellen: =0 (alte Oberfläche ohne 3D-Look) =1 (alte Oberfläche mit 3D-Look) =2 (neue Windows-Oberfläche – erst ab ME10 Version 9) Ganz wichtig (ab Version 9): Die alte Benutzeroberfläche ist ein eigenes Programm in einem eigenen Verzeichnis (/me10/old_ui) mit eigener „ME10.INI“. Beim Arbeiten mit der alten Oberfläche (nur damit laufen auch Tabletts) also die „ME10.INI“ in diesem Unterverzeichnis ändern!

4

3. Wie startet man aus ME10 heraus ein DOS- oder Windowsprogramm? Dies macht man mit dem Befehl „RUN“. Beispiel: „RUN '<Programmname>'“ Der Trick dabei ist folgender: Gibt man „RUN“ nur mit einem einzigen Anführungszeichen ein, so ruft ME10 DOS auf und verharrt am DOS-Prompt. Nun kann man sich wie gewohnt in DOS bewegen, also schnell mal ein Inhaltsverzeichnis ansehen, eine Datei löschen usw. Zurück nach ME10 kommt man mit „EXIT“. Beispiel für den Aufruf eines Windows-Programms aus ME10 heraus: „PARTS_LIST TREE DEL_OLD 'C:\ME.PRT'“ { schreibt den Teilebaum in eine Datei } „RUN 'notepad C:\ME.PRT'“ { startet NOTEPAD mit der Teilebaum-Datei } 4. Koordinatenvermassung einstellen M10 kennt drei Methoden der Koordinatenvermassung: NO_STANDARD, ANSI und ISO. Standardmäßig eingestellt ist NO_STANDARD, die einfachste Art. Am komfortabelsten ist ISO. Leider wird hier die Punktgröße wie die Pfeilgröße (z.B. 3,5mm) gesetzt, also viel zu groß. DIM_COORD ISO SELECT_DIM_ARROW FIRST_ARROW ABSOLUTE 1 FILL_ON DOT_TYPE SELECT_DIM_ARROW SEC_ARROW ABSOLUTE 3.5 ARROW_TYPE Schreiben Sie diese drei Zeilen an das Ende der STARTUP bzw. der CUSTOM.MAC- Datei und fortan werden die Pfeile 3,5 mm groß und der Bezugspunkt 1 mm groß gezeichnet. Ab der Version 9 gibt es neue Aspekte der Konfiguration, auf die im Kapitel 22 näher eingegangen wird. 5. Den Recall-Buffer nutzen Sehr nützlich ist es, daß ME10 alle Tastatur-Eingaben in einem Puffer speichert. Diese Eingaben können nämlich mit den BILD hoch/runter-Tasten zurückgeholt werden. Dies spart ungemein viel an Tipparbeit bei Änderungen. Für Makro-Programmierer wichtig: Mit dem Befehl „STORE_IN_RECALL_BUFFER“ kann man einen beliebigen Text (also auch Befehle) in den Puffer schreiben. Eine mögliche Anwendung: Den Teilenamen und den eindeutigen Teilenamen in den Puffer schreiben. Dies macht das folgende Makro:

DEFINE Hole_namen LOCAL Teilename LOCAL Eind_name INQ_ENV 7 { lade Werte in Systemtabelle } LET Teilename (INQ 301) { Name des aktuellen Teils } LET Eind_name (INQ 302) { eindeutiger Name des aktuellen Teils } LET Teilename ( CHR(39) + Teilename ) LET Eind_name ( CHR(39) + '~' + Eind_name ) STORE_IN_RECALL_BUFFER (Teilename) STORE_IN_RECALL_BUFFER (Eind_name) END_DEFINE

5

Das Selektieren von Teilen oder z.B. das Umbenennen von Teilen wird damit deutlich vereinfacht.

In diesem Zusammenhang möchte ich kurz auf die seit der Version 6 gebräuchlichen eindeutigen Teilenamen eingehen: Bis zur Version 5 war es nicht möglich, ein Teil zu selektieren, dessen Name es mehrfach gab. Ab der Version 6 führte man den sogenannten „eindeutigen Telenamen“ ein. Dieser besteht aus einer Tilde (~) und einer Zahl, die nur einmal vergeben wird. Da durch das Löschen von Teilen, die frei werdenden Nummern nicht vergeben werden, sondern immer weiter hoch gezählt wird, kann es sinnvoll sein, mit „RESET_PART_NUMBER“ die Teile neu durchnumerieren zu lassen. Dies dürfte aber nur für Teile- und Änderungsintensive Zeichnungen gelten. 6. Wichtige Befehle des ME10-Editors (alte Benutzer-Oberfläche)

ALT + F5 Zeile einfügen ALT + F6 Zeile löschen ALT + F7 löscht den Rest der Zeile ab Cursor ALT + F8 löscht den Inhalt einer Zeile Strg.+Bild hoch eine Seite hoch Strg.+Bild runter eine Seite runter $L"Dateiname" Datei laden $W"Dateiname" Datei speichern 7. Zeichensätze Standardmäßig lädt ME10 nicht alle Zeichensätze, welche im Lieferumfang enthalten sind. Bearbeitet man nun eine Zeichnung, die einen nicht geladenen Font (Zeichensatz) enthält, so werden die entsprechenden Zeichen als Kästchen (!) dargestellt. Um einen Font zu installieren, muß man in der „STARTUP“ folgende Zeile eintragen: „LOAD_FONT '<Fontname>'“

Hier eine Liste der wesentlichen Fonts: LOAD_FONT 'i3098_c.fnt' * LOAD_FONT 'i3098_v.fnt' LOAD_FONT 'HP_BLK_c.fnt' LOAD_FONT 'HP_BLK_v.fnt' * LOAD_FONT 'hp_y14_5.fnt' * LOAD_FONT 'hp_syms.fnt' * LOAD_FONT 'hp_syms2.fnt' LOAD_FONT 'hp_d17_c.fnt' LOAD_FONT 'hp_d17_v.fnt' Die Fonts mit dem Stern sind bereits standardmäßig in der „STARTUP“ enthalten.

6

Das "c" im Fontname steht übrigens für konstante Zeichenbreite. Dagegen steht das "v" für die variable Form, also für einen proportionalen Zeichensatz. Fonts mit konstanter Zeichenbreite eignen sich z.B. gut für Tabellen (z.B. Stücklisten!). Ab der Version 9 kann man auch TrueType - Schriften in ME10 verwenden. Im Menü Text 2 sind die verfügbaren Schriften aufgeführt. Dies gilt auch für die alte Benutzeroberfläche. 8. Die Funktionstasten belegen Mit dem ME10-Befehl DEFINE_KEY kann man die Funktionstasten des PC belegen. Besonders sinnvoll ist dies für die Sonderzeichen Durchmesser und Plus-Minus. Tragen Sie daher folgende zwei Zeilen in die Datei „CUSTOM.MAC“ ein: DEFINE_KEY 1 (CHR 254) DEFINE_KEY 2 (CHR 210) Auf der Funktionstaste F1 liegt nun das Plus-Minus-Zeichen, und auf F2 das Durchmesserzeichen. Das Grad-Zeichen ist direkt auf Tastatur. Selbstverständlich kann man mit dieser Methode auch ganze Makros über eine Funktionstaste (F1-F8) starten. Achtung! Ab der Version ist es nicht mehr möglich, die von Windows reservierten Funktionstasten F1 (Hilfe) und F5 (Neuzeichnen) für eine eigene Definition zu nutzen. 9. TRACE - dem Fehler auf der Spur Sie haben ein Problem mit ME10-Makros? Vielleicht kann Ihnen da ein sehr nützlicher Befehl von ME10 helfen: Der Befehl „TRACE“ protokolliert jeden einzelnen Programmschritt. Da die Makrosprache von ME10 keine Compilersprache, sondern eine Interpretersprache ist, kann ME10 alle Befehle beim Ausführen eines Makros mit- protokollieren. Damit kann man relativ leicht Fehler in Makros finden. Form: "TRACE '<Dateiname>'" bzw. "TRACE OFF" zum Schließen einer laufenden Aufzeichnung! TRACE kann aber noch mehr: Nämlich... 10. Das Tablett belegen Der Befehl zum Belegen eines Tablettfeldes ist "TMENU". Das Belegen selbst ist auch kein Problem, schwierig wird es dies dauerhaft zu tun. Ich möchte dies einmal an einem Beispiel zeigen: Man zeichnet zuerst mit „TRACE“ die Ablaufverfolgung ein. Z.B. „TRACE 'c:\daten'“. Dann gibt man in ME10 "TMENU" ein. ME10 erwartet nun die Eingabe zweier Punkte (der Punkt links unten, und dann rechts oben) auf dem Tablettfeld, das es zu belegen gilt. Danach muß man den Makronamen des Makros eingeben, welches ME10 beim Antippen dieses Feldes ausführen soll (in Hochkommas!). Das ganze Spiel kann man nun beliebig oft wiederholen, also wieder TMENU, zwei Punkte auf dem Tablett antippen und den Makronamen eingeben. Nun gibt man in ME10 "TRACE OFF" ein. Damit wird die Datei "daten" geschlossen. Danach lädt man sich z.B.mit „NOTEPAD“ die Datei „c:\daten“. Markieren Sie nun die Zeile(n) in denen steht: "TMENU xlu,ylu xro,yro

7

'Makroname'" und wählen Sie im Editormenü "kopieren". Laden Sie nun mit dem Editor die Datei "c:\me10\custom.mac" und fügen Sie die zuvor kopierten Zeile(n) in die „CUSTOM.MAC“ an geeigneter Stelle ein. (xlu heisst:Koordinate 'x links unten' und steht für die entsprechende Zahl!). Wie man die Bildschirmmenüs belegt? Die radikalste Methode ist es, die entsprechende ME10 Makro-Datei zu verändern. Da diese Dateien aber komprimiert abgespeichert sind, muß man sie erst einmal in Klartext verwandeln, also dekomprimieren (vergl. Kap. 18). Zuerst aber muß man die richtige Datei einmal finden! Sehr interessant ist z.B. die Datei „HP_MAC_T.MAC“ 11. Schrauben und Lochbilder für ME10 Im Lieferumfang zu ME10 gehört das Makro 'WB_MACRO'. Diese Datei enthält Makros zum Erstellen von Sechskantschrauben, Muttern, Scheiben sowie Loch- und Bohrbilder. Das Makro ist recht einfach gehalten. Man kann nur Sechskant- schrauben, Sechskantmuttern und Scheiben nach DIN 125 zeichnen. Aber immerhin. Um die Datei zu laden gibt man ein: INPUT 'WB_MACRO' Gestartet werden die Makros mit: Init_wb Workbook_macros_1 { Schrauben, Muttern und Scheiben } Workbook_macros_2 { Loch- und Bohrbilder } Auf den verschiedenen ME10-Homepages gibt es aber bessere Programme kostenlos zum Download. 12. Die Null-Schraffur Um eine Fläche zu schwärzen, schraffiert man die Fläche mit dem Schraffur- abstand Null. ME10 erzeugt dann beim Plotten wie auf dem Bildschirm eine geschlossene Fläche. 13. Einstellung der Strichstärke beim Plotten Druckt man mit einem A0-Plotter, so ist die Linienstärke stets gleich. Wir benutzen aber zusätzlich einen DIN-A3 Drucker (HP Laserjet 4V), da es so wirtschaftlicher ist. Druckt man sich nun eine A0-Zeichnung auf A3 oder gar A4 aus, so ist es notwendig, die Linienstärken an den Verkleinerungsfaktor anzupassen. Außerdem gilt es die Abstände z.B. der Strichpunktlinie, der Unsichtbaren etc. zu verkleinern. Hier ein Makro, welches sowohl die Linienstärke, als auch die Größe der Linienabstände recht fein setzt. Vergleiche hierzu auch die ME10-Datei DEFAULTS.MAC! (Hinweis: Unsere Linienstärken sind 0,7=cyan; 0,5=weiß; 0,35=gelb; 0,25=rot. Entsprechend sind die Verkleinerungen der Linienstärken)

8

DEFINE Setze_auflösung_extra_fein PLOT_LINETYPE_LENGTH 8 8 8 8 8 8 5 PLOT_LINETYPE_LENGTH dotted 1 { Abstände der Gepunkteten 1 mm } PLOT_LINETYPE_LENGTH phantom 3 PLOT_LINETYPE_LENGTH long_dotted 3 PLOT_LINETYPE_LENGTH dot_center 3 { Abstände der Mittellinie 3 mm } PLOT_LINETYPE_LENGTH dashed 1 { Abstände der Unsichtbaren 1 mm } LET Nt_plot_option NT_PLOT_OPTION_B_AND_W true_color_plotting off PLOT_TRANSFORMATION ALL { all colors } .0 1. .0 1. .0 1. SAME 1 { Color mapping for a RGB color cube devided into 8 color ranges } PLOT_TRANSFORMATION ALL { black } .0 .5 .0 .5 .0 .5 SAME 1 PLOT_TRANSFORMATION ALL { red } .5 1. .0 .5 .0 .5 SAME 1 PLOT_TRANSFORMATION ALL { red } .5 1. .0 .5 .0 .5 {0 width lines} 0 0 {same line type} SAME penwidth .080 {pen number} 1 PLOT_TRANSFORMATION ALL { green } .0 .5 .5 1. .0 .5 SAME 1 PLOT_TRANSFORMATION ALL { green } .0 .5 .5 1. .0 .5 {0 width lines} 0 0 {same line type} SAME penwidth .100 {pen number} 3 { gruen } PLOT_TRANSFORMATION ALL { yellow } .5 1. .5 1. .0 .5 SAME 1 PLOT_TRANSFORMATION ALL { yellow } .5 1. .5 1. .0 .5 {0 width lines} 0 0 {same line type} SAME penwidth .140 {pen number} 1 PLOT_TRANSFORMATION ALL { blue } .0 .5 .0 .5 .5 1. SAME 1 PLOT_TRANSFORMATION ALL { blue } .0 .5 .0 .5 .5 1. {0 width lines} 0 0 {same line type} SAME penwidth .1 {pen number} 2 { rot } PLOT_TRANSFORMATION ALL { magenta } .5 1. .0 .5 .5 1. SAME 1 PLOT_TRANSFORMATION ALL { magenta } .5 1. .0 .5 .5 1. {0 width lines} 0 0 {same line type} SAME penwidth .1 {pen number} 1 PLOT_TRANSFORMATION ALL { cyan } .0 .5 .5 1. .5 1. SAME 1 PLOT_TRANSFORMATION ALL { cyan } .0 .5 .5 1. .5 1. {0 width lines} 0 0 {same line type} SAME penwidth .180 {pen number} 1 PLOT_TRANSFORMATION ALL { white } .5 1. .5 1. .5 1. SAME 0 { Special mappings for BLACK, WHITE etc. } PLOT_TRANSFORMATION ALL { black color } BLACK SAME 0 PLOT_TRANSFORMATION ALL { white color } WHITE SAME 1 PLOT_TRANSFORMATION ALL { white color } .5 1. .5 1. .5 1. {0 width lines} 0 0 {same line type} SAME penwidth .150 {pen number} 1 PLOT_TRANSFORMATION PHANTOM CYAN SAME 0 END_DEFINE (Die Zeilen mit { same_line_type} gehören eigentlich hinter die Zeile davor!) Am wichtigsten ist der Befehl "PENWIDTH", er gibt die Strichstärke vor. Aber auch die Zahl hinter "Pen number" ist wichtig, sie gibt die Farbe an. Damit kann man einen interessanten Effekt erreichen. Z.B. kann man mit Grün (=3) Flächen entsprechend einfärben, welche dann beim Drucken mit einem Laser- drucker als graue Flächen dargestellt werden. Zum Schattieren bestens geeignet! Man sieht, daß die Farben, wie sie in ME10 gezeigt werden, unabhängig sind von den Farben, wie sie gedruckt werden!

9

Der Befehl SAME ist ebenfalls wichtig. Die letzte Zeile im Beispielmakro: PLOT_TRANSFORMATION PHANTOM CYAN SAME 0 führt mit "SAME 0" dazu, daß Geometrie als Phantom-Linie in Türkies nicht ausgeplottet wird. Neben den Optionen Schwarz/Weiß und Farbig, kann man auch in ‚TrueColor‘ plotten. Real stehen ca. 35000 Farben zur Verfügung (TrueColor fängt eigentlich bei 24Bit = 16 Mio Farben an!). In diesem Modus existiert allerdings keine Zuordnung von Farben und Linienstärken mehr, so daß alle Linien sehr dünn geplottet werden. Eine Möglichkeit ist es, mit dem Befehl „PENSIZE“ die auf dem Bildschirm angezeigte Liniendicke zu setzen. 14. Sinnvolle Einstellungen in ME10 Es gibt in ME10 eine Menge von Befehlen und Variablen zum Einstellen des Programmverhaltens. Einige der wichtigsten führe ich hier exemplarisch auf. Analog zu DOS kann man in ME10 einen Suchpfad definieren. Damit spart man sich die Pfadangabe z.B. beim Laden eines Makros. SEARCH 'c:\me10' 'c:\me10\macros 'c:\me10\progs END Im folgenden eine Reihe von nützlichen Variablen: UNITS 1 MM { Einheiten mm } UNITS 1 DEG { ... und Grad } CS_REF_PT 0,0 { Referenzpunkt festlegen } CATCH RANGE 10 { Fangbereich } GRID_FACTOR 10 { Gitterabstand } MAX_FEEDBACK 50 { Größe Recall-Buffer - siehe Kapitel 5 } LINE RED SOLID END { Volllinie } C_LINE GREEN DOTTED END { Hilfgeometriefarbe und -linienart } SPLITTING ON { Linien tennen AN } SPOTLIGHT OFF { Hervorhebung AUS } CURRENT_SPOTLIGHT_ATTR DOTTED MAGENTA { Hervorhebung } LOAD_METER OFF { neu in Version 7 - Ladebalken } CURRENT_FONT 'hp_i3098_v' { aktueller Zeichensatz } ARROW_FILL ON { Pfeile füllen } LEADER_ARROW 3.5 ARROW_TYPE { Pfeilgröße } UA_COPILOT ON { Copilot aktivieren } UA_DISTANCE_GRID 1.0 { Fangabstand Copilot } UA_ANGLE_GRID 7.5 { Winkelraster Copilot } DIM_FORMAT MM '0,01' { Bemassungsformat, hier: 2 Stellen hinter dem Komma } { DIM_FORMAT MM '0,1' - mit einer Stelle hinter dem Komma }

10

{ DIM_FORMAT MM '0,' - ohne eine Stelle hinter dem Komma } DIM_FORMAT DEGREE '0,01' DIM_FORMAT RADIAN '0,01' DIM_FORMAT DEG_MIN_SEC '0,01' DIM_FONT 'hp_i3098_v' { Schriftart für Bemassung } DIM_SCALE 1 DIM_UNITS MM DIM_DEC_PLACE 2 DIM_2ND_DEC_PLACE 3 DIM_DEG_MIN_SEC OFF DIM_TEXT_SIZE 3.5 { Schriftgröße Bemassung 3,5 mm } DIM_TEXT_RATIO 1 DIM_TOLERANCE UPPER_LOWER TEXT_SCALE 0.7 0 0 DIM_PREFIX TEXT_SCALE 1 '' DIM_POSTFIX TEXT_SCALE 1 '' DIM_TEXT_LOCATION ABOVE DIM_TEXT_ORIENTATION PARALLEL DIM_LINE WHITE END { Hilfslinienfarbe } DIM_TEXT_COLOR YELLOW { Bemassungstextfarbe } DIM_ARROW ARROW_TYPE { Bemassungsabschluss } DIM_FRAME OFF DIM_MIN_SPACE 10 DIM_OFFSET_LINE 2 DIM_OFFSET_POINT 0 DIM_DATUM_STEP 8 DIM_BROKEN OFF DIM_DIAMETER_LINE OFF DIM_RADIUS_LINE OFF DIM_CATCH_RANGE 1 { Fangabstand Massmitte } DIM_CATCH_LINES ON DIM_UNDERLINE_EDITED ON { Manuell geänderte Masse unterstreichen } TEXT YELLOW END { Standart-Textfarbe } TEXT_LINESPACE 1.8 { Text-Zeilenabstand } TEXT_RATIO 1 { Verhältnis Breite zu Höhe } TEXT_FRAME OFF TEXT_ANGLE 0 { Textwinkel 0 Grad } TEXT_ADJUST 1 TEXT_FILL OFF TEXT_SIZE 3.5 { Textgröße 3,5 mm } TEXT_SLANT 0 DRAWING_SCALE 1 { Zeichnungsmaßstab } SL_OFFSET 5 { Überstand der Sym.-line in mm } SL_LINETYPE DOT_CENTER { Linienart der Sym.-line } SL_COLOR WHITE { Farbe der Sym.-line } CL_ABS_OFFSET 2 { Überstand der Centerline in mm } CL_REL_OFFSET 0.05 { Überstand der Centerline in mm } CL_LINETYPE DOT_CENTER { Linienart der Centerline } CL_COLOR WHITE { Farbe der Centerline }

11

HATCH_ANGLE 45 { Schraffurwinkel } HATCH_DIST 5 { Schraffurabstand } HATCH WHITE SOLID END { Schraffurfarbe und -linienart } FBROWSER SET_MASK '*' { setzt die Maske für die Dateiliste } Auch in der „ME10.INI“ kann man bestimmte Einstellungen für ME10 treffen. So ist es möglich, einen anderen Zeichensatz einzustellen (was durchaus sinnvoll sein kann). Dazu müssen z.B. folgende Änderungen in der „ME10.INI“ eingetragen werden: „MEFONT=8X13“ Neben dem 8X13-Font stellt ME10 noch die Fonts 6X13 und 6X10 zur Verfügung. Allerdings muß der gewünschte Font zuerst Windows bekannt gemacht werden! Dazu in Win95/NT die Systemsteuerung/Fonts aufrufen und den Font aus dem Verzeichnis „\me10\winfonts“ installieren. Wie bereits gesagt, gibt es ab der Version 9 Aspekte der Konfiguration, auf die im Kapitel 22 näher eingegangen wird. 15. Info & Layer Gleich am Anfang: Die ME10 Layerstruktur arbeitet völlig unabhängig von der Teilestruktur, verändert also in keinem Fall die Teilestruktur. Damit kann man die Teilestruktur und die Layer- bzw. Schichttechnik gleichzeitig einsetzen! Das Menü INFO gehört zu der Sorte (wie auch VERDECKTE LINIEN) ohne die man auch leben kann. Allerdings verbergen sich hinter Info einige recht interessante Möglichkeiten. Daher möchte ich kurz beschreiben, was es mit der INFO auf sich hat, und welche Möglichkeiten INFO bietet. Was ist den eine INFO? Nun, eine Info ist ein Text, welcher an ein Element (z.B. eine Linie) oder an ein Teil 'angehängt' wird. Das heißt, man kann seitenlange Texte an jede beliebige Geometrie anhängen. Nützlich ist es zum Beispiel, den Bearbeiter einer Zeichnung sowie Erstelldatum etc. an den TOP zu hängen (auch der TOP ist nur ein Teil, wenn auch das Oberste). Eine andere Anwendung der INFO ist die Layertechnik. Denn auch ME10 kann Layer erzeugen. Dies geschieht durch das Anhängen einer ganz bestimmten INFO an ein Element (z.B. Linie) oder an ein Teil. Diese spezielle Info hat die Form "LAYER: <Name>", wobei <Name> eine Zahl oder auch ein Text sein kann. Selektiert man nun eine ganz bestimmte Schicht, so bedeutet dies, alle Elemente zu selektieren, welche die entsprechende Info besitzen. Angenommen, Sie möchten alle Texte einer Zeichnung einem Layer mit Namen "Text" zuordnen. Dann geben Sie über die Tastatur folgende zwei Zeilen ein: ADD_ELEM_INFO 'LAYER: Text' SELECT GLOBAL TEXTS ALL CONFIRM Nun hängt an allen Texten die Info "LAYER: Text". Mit den Zeigen/Schicht-Befehl kann man nun die Texte gezielt aus- und wieder einblenden. Als Befehlssequenz über die Tastatur gibt man ein: SHOW GLOBAL INFOS 'LAYER: Text' ON (bzw. OFF) Einfacher ist es über das entsprechende Tablettfeld zu gehen. Hier muß man nur nach Aufforderung den Layernamen (hier:'Text') eingeben. Um ein Element von einer Schicht in die

12

andere zu übertragen, muß man also lediglich die Info der entsprechenden Elemente verändern. Mit folgenden Befehlen wird alles im Layer "Text" in den Layer "2" übertragen: CHANGE_ELEM_INFO 'LAYER: Text' 'LAYER: 2' SELECT GLOBAL TEXTS ALL CONFIRM Wobei das 'Übertragen' nicht so zu verstehen ist, daß hier tatsächlich etwas übertragen wird, nein, es wird lediglich der Infotext verändert! Mit diesem Konzept ist es leicht möglich, daß ein Element (z.B. eine Linie) mehreren Layern gleichzeitig zugeordnet ist! 16. Das Modul „Versteckte Linien“ (Hidden Line) (kommt noch) 17. Teilestruktur Leider nutzen viele User die Teilestruktur nicht. Man sieht nur den Aufwand am Anfang und nicht den Nutzen am Ende. Dabei ist ein ME10 ohne Teilestruktur auch nicht viel besser als (das billigere) Autocad. Hat man sich erst einmal durchgebissen, so möchte man die Teilestruktur nicht mehr missen. Ohne Teilestruktur bekommt man z.B. bei der Schraffur erhebliche Probleme wegen der sich daraus ergebenden Uneindeutigkeit der Linien. Daher ist ein Verzicht auf die Teilestruktur nahezu zwangsläufig auch mit einem Verzicht auf das automatische Schraffieren verbunden. Das Hidden-Line-Modul kann man ohne Teilestruktur ebenfalls vergessen (von der Parametrisierung gar nicht zu sprechen). Die Teilestruktur ist eine Baumstruktur, genau wie auch die Verzeichnisse der Festplatte organisiert sind, oder die Struktur eines Unternehmens ist (der Boss ist der TOP, die Arbeit wird nur 'unten' geleistet, der Rest ist Struktur) oder die Organisation des Alls (Universum-Cluster-Galaxien-Sonnen- systeme-...). Die Baumstruktur findet sich in sehr vielen Bereichen wieder und ist daher so wichtig, daß man sie allgemein verstanden haben sollte (was auch nicht so schwierig ist). Die sinnvolle Strukturierung einer Konstruktion sieht z.B. so aus: 0 TOP (hier hat keine Geometrie etwas zu suchen, nur Teile!) | | 1 Vorderansicht Baugruppe Seitenansicht Baugruppe | | | | | | | | 2 Schweißteil Flansch Schraube Mutter Schweißteil Flansch Schraube Mutter | | | | 3 Platte Steg Platte Steg Links sind die Ebenen aufgetragen. Auf der Ebene 1 befindet sich neben den zwei Ansichten z.B. noch das Teil Zeichnungsvordruck oder auch ein Teil für einen Stempel (z.B. den Text 'spannungsfrei geglüht' im Teil 'Zusatztext'). Im Teil 'Vorderansicht Baugruppe' befindet sich nur Geometrie, die keinem

13

Einzelteil zuzuordnen ist, also z.B. gemeinsame Mittellinien, Masse, Positionsnummern. Das sieht nach viel Arbeit aus. Tatsächlich ist es viel Arbeit, da man sehr oft die Teile wechseln muß. Aber trotzdem: Hat man erst einmal die notwendige Übung (1000 Stunden?!), so ist das Arbeiten mit Teilen sehr effizient. Und noch einmal: Was man am Anfang an Zeit investieren muß, bekommt man am Ende doppelt zurück! Das ist meine 7-jährige intensive Erfahrung mit ME10. Dazu kommt, wer eine saubere Struktur einhält, der arbeitet fast automatisch auch die einzelnen Teile sauberer aus. Damit werden meiner Erfahrung nach die Fehlerquellen entscheidend minimiert. Dies mag für einen Studenten von geringerem Wert sein, aber in der Industrie, wo ein Fehler richtig GELD und ZEIT kostet... 18. Makros laden, speichern, komprimieren und verschlüsseln Mit ME10 kann man Makros, welche naturgemäß im ASCII-Format (also im Klar- text) geschrieben werden, komprimieren, um zum einen Platz zu sparen, als auch um die Ausführungsgeschwindigkeit (geringfügig) zu erhöhen. Außerdem kann man Makros auch verschlüsseln, um das Eigentum eines Programmierers bzw. einer Firma an einem Makro bzw. einem ganzen Programm zu sichern. DELETE_MACRO ALL { löscht alle Makros } LIST_MACRO_NAMES { listet die Makronamen aller Makros im Speicher } INPUT { lädt eine Datei } SAVE_MACRO { speichert eine Datei } LOAD_MACRO { lädt eine komprimierte Datei } STORE_MACRO { speichert komprimierte Datei } SECURE_MACRO { verschlüsselt eine Datei } Möchte man z.B. ein Makro, welches im ASCII-Format vorliegt (Klartext) komprimieren und/oder verschlüsseln, so geht man wie folgt vor: 1. Mit DELETE_MACROS ALL alle Makros im Speicher löschen 2. Mit INPUT <Dateiname> die zu komprimierende Makro-Datei laden. 3. Nur, wenn Datei verschlüsselt werden soll: SECURE_MACRO ALL, ansonsten diesen Schritt übergehen. 4. Mit STORE_MACRO ALL <Dateiname> die Datei komprimiert speichern. Diese (komprimierte) Datei muß fortan mit LOAD_MACRO <Dateiname> geladen werden. Eine komprimierte Datei wird entsprechend zurück in den ASCII- Klartext gebracht: 1. Mit DELETE_MACROS ALL alle Makros im Speicher löschen 2. Datei mit LOAD_MACRO <Dateiname> laden 3. Mit SAVE_MACRO ALL <Dateiname> die Datei unkomprimiert im Klartext speichern. Bei verschlüsselten (geschützten) Makros funktioniert dies natürlich nicht!

14

19. Makroprogrammierung 19.1 Vorbemerkung Ich werde die Makroprogrammierung unter ME10 in vier Bereichen behandeln: - die einfache Programmierung - die Programmierung von Menüs - die Programmierung logischer Tabellen - die DDE-Programmierung (Dynamic Data Exchange) unter MS-Windows Im Rahmen dieses Textes kann ich keinen Makroprogrammierkurs abhalten, sondern nur einige wesentliche Hinweise geben. Mein Ziel ist es, die Makro- programmierung 'anzuschieben', also eine ev. vorhandene Scheu davor abzubauen. 19.2 Warum Makroprogrammierung? Grundsätzlich gibt es zwei mögliche CAD-Philosophien: Entweder bietet man als CAD-Programmhersteller ein Komplettpaket an, oder man beschränkt sich darauf, ein CAD-Kernsystem anzubieten, welches der User an seine speziellen Bedürfnisse anpassen kann. ME10 gehört klar zur letzteren Sorte! Dies bedeutet aber, daß Anwender, welche ME10 nutzen 'wie es ist', mit einem nicht optimierten System viel Zeit vergeuden, z.B. mit unnötig vielen (Tastatur/Maus/Stift-) Eingaben. Nun bieten eine Reihe von Herstellern Zusatz- programme an (DIN-Normteile, etc), aber es bleibt noch viel Raum für Zeit-Sparmaßnahmen (= Makroprogrammierung). Ein Beispiel: Welcher User benötigt schon alle Linienarten/Farbe-Kombinationen, die auf dem ME10-Standardtablett definiert sind. Oft ist es so, daß man mit fünf bis sechs Linen/Farbe-Kombinationen auskommt, also z.B. Tablettfelder mit Mittellinie/weiß, Unsichtbare/gelb, Sichtbare/rot und Körperkante/weiß etc. Damit spart man bereits eine Menge an Tabletteingaben. Ein anderes Beispiel: Will man die gesamte Hilfsgeometrie löschen, so kann man eingeben 'Lösche Wähle Global Hifsgeo Alles Bestätigen Ende', oder man legt sich die ersten 5 Befehle über ein Makro auf das Tablett ( bzw. in die Toolbox bei der tablettlosen Version) und tippt nur noch an z.B. Hilfsgeo löschen und dann Bestätigen und Ende. So werden aus sieben Tabletteingaben nur noch drei! Ich selbst habe mir vor einigen Jahren alle wichtigen Befehle aus den Menüs (Erstellen, Bemaßen, Ändern etc.) auf das Tablett gelegt, so daß ich nur noch sehr selten in die Bildschirmmenüs muß. Damit entfällt das permanente Umschalten der einzelnen Menüs. Für viele User mag die Makro-Programmierung (wie auch die Teile-Struktur) ein Graus sein, aber das eine wie das andere ist nicht nur sehr nützlich, sondern macht auch die Stärke von ME10 aus. Mit der mächtigen ME10-Makrosprache kann man mit wenig Aufwand brauchbare Ergebnisse erzielen, welche helfen kann, viel Arbeit zu sparen. Daher hier die Hilfen zur Makro-Programmierung!

15

19.3 Die Grundlagen der einfachen Programmierung 19.3.1 Schreibweisen Grundsätzlich gilt in ME10: ME10-Befehle werden nur groß (oder nur klein) geschrieben (z.B. DIM_COORD) und Makronamen bzw. Variable am Anfang groß (z.B. C_geo). Jedes Makro beginnt mit DEFINE <Makroname>. Jedes Makro endet mit END_DEFINE. Hierzu ein Beispiel-Makro: DEFINE Setze_koordinatenbemassung DIM_COORD ISO SELECT_DIM_ARROW FIRST_ARROW ABSOLUTE 1 FILL_ON DOT_TYPE SELECT_DIM_ARROW SEC_ARROW ABSOLUTE 3.5 ARROW_TYPE END_DEFINE Ein solches Makro kann man in die STARTUP oder die CUSTOM.MAC schreiben oder in eine andere beliebige (Makro-) Datei. Diese Makrodatei, die letztlich eine ganz normale ASCII-Textdatei ist, kann beliebig viele Makros enthalten. Natürlich muß man diese Makrodatei mit den darin enthaltenen Makros zuerst einmal laden, bevor man die darin enthaltenen Makros ausführen kann. Geladen wird eine (unkomprimierte) Makrodatei mit dem Befehl „INPUT <Name>“. Ausgeführt wird das Makro durch Eingabe seines Namens. (hier "Setze_koordinatenbemassung") in der ME10-Kommandozeile. Man kann im Prinzip in Makros (fast) alle Befehle verwenden wie beim normalen Einsatz mit ME10 sonst auch (also z.B. alle Zeichenbefehle). Laut ME10-Hilfe darf der „INPUT-Befehl“ in Makros nicht verwendet werden. Allerdings funktioniert dies durchaus. Man kann aber kein Makro innerhalb eines Makros laden und es gleich danach ausführen (Achtung! Bei den neueren Versionen von ME10 so nicht mehr richtig!). Z.B.: DEFINE Test INPUT Makro2 Starte Makro2 END_DEFINE Diese Technik funktioniert nur mit komprimierten Makros (LOAD_MACRO). Zum Zeitpunkt 'Starte Makro2' kennt ME10 den Inhalt von Makro2 noch nicht, obwohl der INPUT-Befehl davor steht! ME10 arbeitet ein mit INPUT geladenes Makro nicht in der gleichen Reihenfolge ab, wie die Befehle im Makro stehen (und dieser Punkt hat mir schon große Probleme bereitet!). 19.3.2 Variable Variable können mit dem LET-Befehl angelegt werden. Z.B. 'LET A (t-3)'. Was diese Zeile bewirkt, dürfte jedem klar sein. Wichtig ist folgendes Problem: Durch den LET-Befehl wird eine Variable implizit definiert (anders als z.B. in Pascal, wo man Variablen explizit definieren muß). Schlimmer noch: eine so erzeugte Variable ist automatisch GLOBAL definiert und überschreibt damit eine ggf. vorhandene gleichnamige Variable aus einem anderen Makro! Daher

16

immer versuchen, Variablen lokal zu definieren! Lokale Makros sind (leider) nicht in Untermakros gültig. 19.3.3 Befehle Diese sind aufgelistet und beschrieben im ME10-Programmierhandbuch. Zum Teil (bis auf die Befehle für die logischen Tabellen und die DDE-Programmierung) sind die Makrobefehle in der Hilfefunktion von ME10 beschrieben. In den neueren Versionen von ME10 ist die komplette Dokumentation als Online-Hilfe verfügbar! Ich beschränke mich darauf, hier ein Makrobeispiel zu zeigen: Das Makro dreht einen Text um einen zu definierenden Bogen: DEFINE T_rot { Aus dem Macro-Programmierhandbuch} LOCAL T LOCAL Cp LOCAL Sp LOCAL A LOCAL N LOCAL Da READ STRING 'Text eingeben' T { String ist Zeichenketteneingabe } READ PNT 'Mittelpunkt eingeben' Cp { PNT steht für Point } READ PNT 'Anfangspunkt eingeben' Sp READ NUMBER 'Winkel eingeben' A { Number steht für Zahleneingabe } LET N (LEN T) LET Da (A/N) LET A (ANG (Sp - Cp)) LET N 1 WHILE (N<=LEN T) TEXT_ANGLE (A - 90) TEXT (SUBSTR T N 1) Sp LET A (A - Da) LET Sp (Cp+PNT_RA (LEN (Sp - Cp)) A) LET N (N+1) END_WHILE END TEXT_ANGLE 0 END_DEFINE Hier wird folgendes deutlich: Der Einsatz der lokalen Variablen, die User- Eingabe von Texten , digitalisierten Punkten und Zahlen, die Variablen- definition und die WHILE-Schleife!

17

19.3.4 Bedingungen Die Bedingung in ME10 heißt ähnlich wie in anderen Programmiersprachen auch: IF ... ELSE ... ELSE_IF ... END_IF Ein Beispiel: IF (D<20) LET Tol '+0,1' ELSE_IF (D<50) LET Tol '+0,2' ELSE_IF (D<100) LET Tol '+0,5' END_IF Ansonsten gilt die alte Programmiererweisheit: Nie auf Gleichheit prüfen, sondern immer nur auf Differenzen! 19.3.5 Schleifen In ME10 gibt es drei Schleifenarten: 1) Die WHILE-Schleife, die am Anfang die Abbruchbedingung abfragt. 2) Die UNTIL -Schleife, die erst am Ende der Schleife die Abbruchbedingung auswertet. 3) Die LOOP-Schleife, die einen Abbruch innerhalb der Schleife erlaubt. Dazu drei Beispiele: 1) LET T 100 2) LET T 100 3) LET T 100 WHILE (T>10) REPEAT LOOP LET T (T-1) LET T (T-1) LET T (T-1) END_WHILE UNTIL (T<10) EXIT_IF (T<10) END_LOOP 19.3.6 Dateioperationen Hier nur je ein Beispiel für das Lesen und das Schreiben einer Datei DEFINE Erzeuge_neuer_datensatz READ NUMBER 'Eingabe Zahl' Za { Eingabe einer beliebigen Zahl } READ STRING 'Eingabe String' St { Eingabe eines beliebigen Textes } OPEN_OUTFILE 1 'c:\test.dat' { Kanal 1 herstellen zur Datei 'Test.dat'} WRITE_FILE 1 Za { schreibe Zahl in Kanal 1 } WRITE_FILE 1 St { schreibe String in Kanal 1 } CLOSE_FILE 1 { schliesse Kanal 1 } END_DEFINE DEFINE Lese_neuer_datensatz OPEN_INFILE 1 'test.dat' { Kanal 1 herstellen zur Datei 'test.dat' } READ_FILE 1 Za { Lese aus Kanal 1 die Zahl in der Datei } READ_FILE 1 St { Lese aus Kanal 1 den String in der Datei } CLOSE_FILE 1 { schliesse Kanal 1 }

18

END_DEFINE Aus dem Konzept ergibt sich, daß mehrere Kanäle (=Dateien) gleichzeitig geöffnet sein können! 19.3.7 Systemwerte ME10 verwaltet intern eine Reihe von Systemwerten, die man für eigene Zwecke nutzen kann. In diesen internen Tabellen stehen z.B. Angaben über die Zeichnungsgröße oder die aktuelle Bildschirmauflösung, das gerade aktuelle Menü oder die ME10-Version. Wichtig ist hierbei der Befehl INQ, der Werte aus einer systeminternen Tabelle abruft. WICHTIG: welche Werte in dieser Tabelle stehen, ergibt sich aus dem Befehl, der vor dem INQ-Befehl abgesetzt wurde! Der 'reine' INQ-Befehl bezieht sich auf die MESSEN-Funktionen, welche die gemessenen Werte in die Systemmatrix schreiben. DISPLAY (INQ 3) liefert so den letzten gemessenen Wert. Nun kann man mit speziellen Befehlen noch andere Tabellen in die interne Matrix eintragen: INQ_ELEM liefert Infos über Elemente wie Linien, Kreise, etc. INQ_ENV liefert Infos über die Systemumgebung INQ_PART liefert Infos über Maßstabe INQ_MENU liefert Infos über die Menüs Beispiel: INQ_ENV (5) stellt eine bestimmte Gruppe von Infos in die System- matrix. Nun kann man z.B. mit DISPLAY (INQ 3) sich die Breite des Plotter- fensters anzeigen lassen. Mit INQ_ENV (10) werden andere Infos in die System- matrix eingetragen. Jetzt liefert DISPLAY (INQ 3) den Tablett-Typ! Mißt man jetzt einfach eine Strecke, so liefert DISPLAY (INQ 3) danach den gemessenen Wert. Mehr dazu in der Hilfe-Funktion von ME10. Folgendes (nützliches) Beispiel benennt ein Teil um. Der Clou dabei ist, daß der alte Teilenamen zum Ändern vorgeschlagen wird (das macht das ENTER)! Enter_teil RENAME_PART ENTER Teilename { am besten auf's Tablett legen! } DEFINE Enter_teil INQ_ENV 7 { aktiviert die entsprechende Systemtabelle } LET Teilename (INQ 301) { liefert den aktuellen Teilenamen } END_DEFINE

19

19.4 Die Programmierung von Menüs Das, was man bei ME10 am rechten Bildrand sieht, sind Menüs. Hier können Befehle abgesetzt werden oder auch Parameter übergeben werden. Aber auch das Fenster, daß beim Beenden von ME10 nach Windows-Art erscheint, ist ein Menü. Über Menüs kann man eine Auswahl treffen. Leider ist es nicht möglich im Menüfenster Werte einzugeben. Dies bleibt der Eingabezeile von ME10 vorbehalten. Hier ein kleines Beispiel: Bei Start von ME10 soll ein Fenster erscheinen, welche das wahlweise Einloggen von drei Usern erlaubt. DEFINE Loggin_me10 CURRENT_MENU 'ME10_start' MENU_LAYOUT (2*Text_slot_height) ' Wähle User ' (3*Text_slot_height) ' User 1 | User 2 | User 3 ' (2*Text_slot_height) ' Abbruch ' Graphic_area_low_left+((Graphic_area_up_right -Graphic_area_low_left)/1.7)) END MENU Colo0 Bcol5 CENTER 'Wähle User:' '' 1 1 MENU Colo0 Bcol5 CENTER 'Abbruch' 'DELETE_MENU END' 1 2 MENU Colo0 Bcol1 CENTER 'User 1' 'Set_user_1 DELETE_MENU END' 2 1 MENU Colo0 Bcol1 CENTER 'User 2' 'Set_user_2 DELETE_MENU END' 2 2 MENU Colo0 Bcol1 CENTER 'User 3' 'Set_user_3 DELETE_MENU END' 2 3 MENU Colo0 Bcol5 CENTER 'Abbruch' 'DELETE_MENU END' 3 1 END END_DEFINE Über den Makronamen "Login_me10" wird das Makro gestartet. Diesen Namen stellt man z.B. in die ME10-Startdatei "STARTUP". CURRENT_MENU ist der Namen des aktuellen Menüs. Befehle wie MENU_LAYOUT beziehen sich solange auf dieses Menü, bis ein anderes Menü als "CURRENT_MENU" definiert wird. Mit MENU_LAYOUT definiert man das Aussehen des Menüs. So wird die Zeilen- und Spaltenzahl (|=Trennzeichen der Spalten) und auch die Zeilenhöhen (Text_slot_height) und die Menübreite (Breite zwischen den Hochkommas) hier definiert. Der Text in den Menüfeldern ist ohne Bedeutung, man sieht lediglich besser, wie das Menü aufgebaut ist. Am Ende wird noch die Position des Fensters auf dem Bildschirm festgelegt (Graphic_arrea_low_left...). Hier könnte auch ein fester Punkt def. werden, z.B. "(500,200)". Mit „END“ wird das Layout abgeschlossen. Als nächstes folgt die Belegung des Layouts mit Funktionen, Text und Farbe. Der Befehl hierfür heißt „MENU“. Dann folgt die Vordergrund- und die Hintergrundfarbe. Man kann hier die Standardfarben von ME10 verwenden (Colo0, Colo1 usw. bzw. Bcol1, Bcol2 etc.). Mit der Option CENTER kann man (ab ME10 Ver.6) den Menütext mittig zentrieren. Danach folgt der Eintrag in das Menü, also den Text, den der Anwender später sieht. Dann folgt (auch in 2 Hochkommas) die auszuführende Funktion(en). Die Makros "Set_user_1" müssen freilich noch geschrieben werden. In diesen Makros können z.B. Userspezifische Arbeitsverzeichnisse gesetzt werden etc. Am Ende des MENU-Befehls folgt immer die Position des Menüeintrags, auf das sich der Eintrag bezieht. Die Position wir in Y/X-Darstellung angegeben. Der Eintrag

20

"User3" erscheint in der 2.Zeile und der 3.Spalte. Auch der MENU-Befehl wird mit „END“ abgeschlossen. Nun gehen wir zu einem größeren Projekt über. An der Stelle der normalen ME10-Menüs (Erstellen etc.) soll ein eigenes Menü definiert werden. Auch hier braucht man am Anfang ein LAYOUT. Standard-Layouts von ME10 sind in der ME10-Datei HP_LAY.MAC definiert. Wir verwenden hier das Standard-Layout 'Layout_body_1'. Wer ein spezielles Layout braucht, der muß die Datei HP_Lay.mac dekomprimieren, und dann das Layout kopieren, umbenennen und anpassen. DEFINE Menue_layout CURRENT_MENU 'Menue' CURRENT_SCREEN 1 MENU_LAYOUT Menu_position RIGHT Layout_body_1 Menu_home_point_top END MENU_STATUS ENABLE_INQ LET menue_layout_name 'Menue' END_DEFINE Nun folgt die Belegung des definierten Menüs: DEFINE Test_menue LET Lastmen 'Test_menue' IF (I_port) Check_i_port END_IF IF (NOT I_port) MENU_BUFFER ON CURRENT_MENU Menue_layout {das ist das oben def. Menue-layout!} T_clear_menu Menu_control_icons MENU Colo0 Bcol5 CENTER 'Titeltext' '' 1 3 MENU Colo0 Bcol1 'Text 2 1' 'Funktion' 2 1 MENU Colo0 Bcol1 Variable 'Funktion' 2 2 MENU Colo0 Bcol1 'Text 3 1' 'Funktion' 3 1 ... ... MENU Colo0 Bcol1 'Text 25 1' 'Funktion' 25 1 MENU Colo0 Bcol1 'Text 25 2 'Funktion' 25 2 Eight_menu_slots_add END_IF END_DEFINE Die I-Port-Variable dient nur dazu, daß das Menü nicht eingeblendet wird, wenn das ME10-Fenster auf 'groß' (Ganzschirm) geschaltet wurde. Die Menu_control_icons fügen die

21

Zusatzschalter in die Titelleiste ein (nur ab ME10 Ver.6). Die Menüdefinitionen sind identisch wie oben beschrieben. Auch hier muß man natürlich keine Funktion eingeben. Wenn nur ein Text angezeigt werden soll, wie in der Titelleiste, dann gibt man nur die zwei Hochkommas ein. Im Standardmenü sind max. 25 Zeilen belegbar. Natürlich sind statt Texten in Hochkommas auch Variablen einsetzbar (siehe in Feld 2 2). Am Ende kann man mit "Eight_menu_slots_add" die acht Standardmenüs in die zwei letzten zwei Zeilen einfügen lassen. Wer hier tiefer einsteigen will, dem sei das Studium der verfügbaren Makros empfohlen. Die Makros, die mit ME10 mitgeliefert werden, sollte man sich dekomprimieren und ansehen. Noch ein Hinweis: Man kann die Felder eines Menüs nicht nur mit Text füllen, sondern auch mit (zweifarbigen) Grafiken! Dies wird über CHR-Codes erreicht (praktisch ein einfachster Plotter). Als Beispiel sollte man sich die Datei HP_ICON1.MAC ansehen. Ein gutes Beispiel ist auch das Makroprogramm "CREATE.MAC" von der ME10-Homepage. Freilich, an die Möglichkeiten von Windows kommt diese Technik nicht heran. Wer hier besseres will, der muß ab der Version 9 auf die neue Windowsoberfläche wechseln. 19.5 Logische Tabellen Logische Tabellen sind erheblich leistungsfähiger als Menüs. Kann man in Menüs nur eine Auswahl unter fest vorgegebenen Punkten treffen, so kann man sich mit dieser Technik beliebige Tabellen erzeugen, ansehen, verändern, und natürlich kann man eine Auswahl treffen. Zusätzlich kann man auch Buttons bzw. Schalter definieren. Ein gutes Beispiel ist eine Zeichnungsverwaltung. So etwas kann man nur mit logischen Tabellen realisieren. Die Leistungsfähigkeit von log.Tabellen bedingt aber auch, daß das Thema zum Schwierigsten gehört, was ME10 zu bieten hat. Grundsätzlich ist die Struktur folgende: Man definiert zum einen eine Anzeigetabelle und zum anderen eine Datentabelle. Diese Datentabelle verknüpft man dann mit der Anzeigetabelle. Ein gutes Beispiel für eine log. Tabelle ist die Dateiliste von ME10. Man sieht gut die Möglichkeiten (inkl. Scrollbalken und Schalter). Im Rahmen dieses Textes möchte ich nur kurz skizzieren, wie man vorgehen muß und welche Möglichkeiten es gibt. 1. Wir basteln uns eine logische Tabelle Der Befehl zu diesem Zweck ist: „CREATE_LTAB <z> <s> <Tabellenname>“. Man muß vorab (!) bereits abschätzen (nur ungefähr) wieviel Zeilen (z) und Spalten (s) man vermutlich brauchen wird. ME10 reserviert dann entsprechend viel Speicherplatz. Nun schreiben wir Einträge in die log.Tabelle. Der Befehl dafür ist: “WRITE_LTAB <Tabellenname> <z> <s> <Variable>”. Man kann aber auch eine zweite Form des „WRITE_LTAB “-Befehls nehmen. Dieser ermöglicht es Schalter/Buttons zu realisierten: „WRITE_LTAB <Tabellenname> TITLE <Nummer> <Variable>“. Wie geht man nun konkret vor? Nun, nehmen wir an, wir wollen die oben genannte Zeichnungsverwaltung realisieren. Dann werden wir mit dem „CATALOG“-Befehl von ME10 eine Zeichnungsliste erstellen, und anschließend mittels eines Makros folgende Befehle absetzen:

22

CREATE_LTAB 20 2 Tablename WRITE_LTAB Tablename 1 1 ('Zwischentisch') WRITE_LTAB Tablename 1 2 ('s:/daten/z_tisch') WRITE_LTAB Tablename 1 3 ('1') WRITE_LTAB Tablename 1 4 ('0') WRITE_LTAB Tablename 2 1 ('Transportpalette') WRITE_LTAB Tablename 2 2 ('s:/daten/palette') ... WRITE_LTAB Tablename 19 2 ('s:/daten/haspel') WRITE_LTAB Tablename 19 3 ('19') WRITE_LTAB Tablename 19 4 ('0') WRITE_LTAB Tablename TITLE 1 ('Sichern') Dieses Beispiel enthält alles, was bereits angesprochen wurde. Eine vierspaltige Tabelle mit Zeichnungsnamen, physikalischem Verzeichnis, Zähler und Markierflag sowie die Def. des Schalters "Sichern". Im Arbeitsspeicher existiert nun obige log.Tabelle mit Namen "Tablename" (der Name ist natürlichfrei wählbar!). Der Vollständigkeit halber: Man kann mit „WRITE_LTAB“ Zeilen zur Tabelle hinzufügen und mit „DELETE_LTAB_ROW <Tablename> <Zeile>“ auch Zeilen aus der Tabelle löschen. Mit „DELETE_LTAB <Tablename>“ löscht man eine Tabelle, mit „DELETE_LTAB ALL“ löscht man alle Tabellen. Diese Möglichkeiten kann man sich in der Hilfe-Datei unter ME10 bzw. der Dokumentation ansehen. Noch wichtig: „SORT_LTAB“, „INSERT_LTAB_ROW“ und „HIGHLIGHT_LTAB“ usw. 2. Nun gehen wir daran, eine Anzeigetabelle zu erstellen. Stellenweise ist das Definieren einer Anzeigetabelle ähnlich wie das eines Menüs. Ansonsten aber ist die Sache deutlich komplizierter, bietet aber auch deutlich mehr Möglichkeiten. Zuerst werden mit „TABLE_LAYOUT“ allgemeine Eigenschaften des Anzeigefensters definiert (Rand, Farben, Scroll-Leiste). Dann wird mit „TITLE_LAYOUT“ das Erscheinungsbild des Tabellenkopfes definiert. Der Tabellenkopf enthält die unveränderlichen Teile einer Anzeigetabelle, also z.B. Felder zur Anzeige des gewählten Eintrags aus der log.Tabelle oder die bereits erwähnten Buttons und Schalter, die Titelzeile etc. Schließlich definieren wir mit „COLUMN_LAYOUT“ noch das Erscheinungsbild des Datenbereichs. Der Anfang eines entsprechendes Makros sieht wie folgt aus: DEFINE Anzeigetabelle LET Table_line_cmd 'File_action "@v1" "@v2" "@v3" "@v4"' {in diesem Fall müssen auch die Hochkommas mit eingegeben werden!} TABLE_LAYOUT <Tablename> <Rahmenfarbe> ROWS <Zeilenzahl> FRAME_WIDTH <Rahmenbreite> HORIZONTAL <Farbe Trennlinien horizontal> VERTICAL <Farbe Trennlinien vertikal> SCROLL_BAR <Scroll bar farbe> <Scroll bar breite> <x,y-Koordinaten der Anzeigetabelle> TITLE_LAYOUT <Titelzeilenhöhe> ' | | Anzeigentabelle | '

23

<Spaltenhöhe> 'Kunde | ' <Spaltenhöhe> 'Projekt | ' <Spaltenhöhe> 'Zeichnung| ' <Trennspaltenhöhe> ' ' <Spaltenhöhe> ' Lade Zchng | Lösche Zchng | Info ' END COLUMN_LAYOUT ' | ' ... Wie gehabt, spielt z.B. der Eintrag "Anzeigetabelle" keine Rolle, er dient nur der Übersichtlichkeit. Wichtig ist nur die Anordnung der Hochkommas zur Festlegung der Breite der Menüfelder bzw. der Breite der Anzeigetabelle und der senkrechten Striche zur Trennung der einzelnen Menüfelder. Nun folgt das Ausfüllen der Menüfelder (eben mit "Kunde", "Projekt" usw. und natürlich den entsprechenden Funktionen, die ausgeführt werden sollen!). Dafür gibt es den Befehl „TABLE_TITLE“. Dies bitte ich in der ME10-Hilfe selbst nachzuschauen. Die Sache läuft ganz analog wie bei den Menüs. Was bei den Menüs die "Menu_control_icons" waren (die Buttons zum Verschieben und Schließen von Menüs), sind bei Tabellen die "Table_control_icons" (in der ersten Zeile des TITLE_LAYOUT's oben wurden entsprechende Felder vorgesehen). Das war aber noch lange nicht alles! Schalter wollen integriert werden und... ja, was soll denn passieren, wenn man einen Eintrag im Datenbereich antippt? Zuerst zu den Schaltern. Ein Schalter muß markierfähig sein, sonst ist er als Schalter nicht zu erkennen. Also 'Schalter' heißt: Markierung EIN oder AUS. Damit der Schalter markierfähig wird, müssen wir das zu bearbeitende Menüfeld mit dem entsprechenden Eintrag in der log.Tabelle verknüpfen. TABLE_TITLE <Tablename> VordergrndFarbe HintergrndFarbe '@s1' 'Funktion' Y X Durch das '@s1' wird der Text angezeigt, der als Zeichenfolge 1 in der log. Tabelle steht. In diesem Beispiel ist das "Sichern". Dann kann man mit "HIGHLIGHT_LTAB <Tablename> TITLE 1 MARK" die Hervorhebung einschalten und mit "HIGHLIGHT_LTAB <Tablename> TITLE 1 OFF" die Hervorhebung ausschalten. Dies ergibt den Schaltereffekt. Mit dem Schalter "Sichern" könnte man z.B. eine Funktion realisieren, die bei gedrücktem Schalter und dem Betätigen des Menüfeldes (Buttons) "Löschen" eine Zeichnung vor dem Löschen noch sichert. Nun werden wir noch die Einträge im Datenbereich (also z.B. die Zeichnungs- einträge) mit Aktion belegen. Dies geschieht mit der Zeile: „TABLE_COLUMN <Tablename> COLUMN 1 VgFarbe HgFarbe Table_line_cmd LEFT“ Beim Anklicken der ersten Spalte des Datenbereichs wird das Makro "Table_line_cmd" ausgeführt. Mit der Befehlszeile: LET Table_line_cmd 'File_action "@v1" "@v2" "@v3" "@v4"' wird bewirkt, daß beim Antippen einer Zeile im Datenfeld an das Makro "File_action" die Einträge der log.Tabelle in den Spalten 1-4 der angetippten Zeile übergeben werden. Nun muß man noch das Makro "File_action" schreiben. Dieses Makro könnte etwa so aussehen: DEFINE File_action PARAMETER Zeichnungsname PARAMETER Zeichnungspfad PARAMETER Zeichnungszähler PARAMETER Markiert

24

LET Zeichnungsname (TRIM Zeichnungsname) IF (Spalte bereits markiert) THEN LET (Spalte 4=1) ELSE LET (Spalte 4=1) ...usw. END_DEFINE Nun kann man im Menübereich seine Funktionsfelder mit TABLE_TITLE entsprechend gestalten. Man definiert sich ein Button "Zchng laden" mit folgender Funktion: Wird der Button angetippt, dann wird die log. Tabelle auf ein markiertes Feld hin untersucht, d.h. in unserem Beispiel wird die 4. Spalte auf eine "1" hin untersucht. Die entsprechende Zeichnung wird dann geladen. Dies also die extrem gedrängte Darstellung von logischen Tabellen. Es gibt noch viele Aspekte zu beachten. Als begleitendes Material kann man sich von der ME10-Homepage den Quelltext einer Zeichnungsverwaltung, sowie ein Bild des Zeichnungsfensters dieser Dateiverwaltung herunterladen. Die Dateiverwaltung ist aber so nicht lauffähig, da noch viele Bedingungen dafür erfüllt sein müssen. Die Beispiele oben sind aber aus dem Quelltext abgeleitet. Tip: mit @s0 (oder einfach @s) kann man sich die Anzahl der Zeilen der aktuellen verbundenen log. Tabelle holen! 19.6 DDE-Programmierung Man kann auf mehrere Arten zwischen ME10 und einem anderen Programm Daten aus- tauschen. 1) Über eine Datei auf der Festplatte. Diese Methode ist langsam. 2) Über die Zwischenablage. Hier wird über den Arbeitsspeicher kommuniziert. 3) Über DDE (dynamischer Datenaustausch). Bei diesem Datenaustausch kommunizieren die Programme direkt miteinander. ME10 und Programme wie Word oder Excel sind DDE-fähig. Das DDE-Protokoll unterscheidet Clients (nimmt die Daten an) und Server (stellt die Daten bereit). Bei der Konversation wird ein dreistufiges Kennungssystem eingesetzt. Oberste Priorität hat der Name der Server-Anwendung (application name). Innerhalb des Servers unterscheidet man zwischen verschiedenen Themen (topics) (es gibt statt dessen auch General- Topics!). Jedes Gebiet kann nun mehrere Punkte (items) beinhalten. Beispiel: Application: Excel, Topic: Tabellenname, Item: Zeilen/Spaltennummer. Jede DDE-Verbindung beginnt mit der Aufrufen der Server-Applikation (also z.B. Excel) und der Übergabe des Themas, über das man sich auszutauschen gedenkt (also z.B. den Tabellen- oder, bei Word, dem Dokumentennamen). Zurückgeliefert wird entweder ERROR oder eine eindeutige Kennung. Mit DDE_REQUEST und der Angabe des genauen Gegenstandes können nun Daten angefordert werden. Mit DDE_CLOSE wird die Konversation geschlossen. Hier nun ein Beispiel in WINWORD. Vorbereitend zuerst Winword starten. Dann "Testtext!" schreiben, markieren und eine Textmarke 'wordtest' hinzufügen. Das Ganze dann als "test" abspeichern. Dann in ME10 das nachstehende Makro ausführen. DEFINE DDE_test LET Handle (DDE_INITIATE 'winword' 'test')

25

DISPLAY (Handle) LET Daten (DDE_REQUEST Handle 'wordtest') DISPLAY (Daten) LET Ende (DDE_CLOSE Handle) DISPLAY (Ende) END_DEFINE Problem: Das Thema (item) 'wordtest' ist programmspezifisch. Bei Excel steht hier z.B. 'Z3S2' für den Wert in Zeile 3, Spalte 2. In Winword steht hier, wie im Beispiel gezeigt, z.B. eine Textmarke. Man muss sich also immer die begleitende Dokumentation der jeweiligen Software ansehen! Es gibt noch weitere Befehle, wie z.B. DDE_EXECUTE, um den Server zu einer Befehlsausführung zu veranlassen. Diese Befehle sind u.a. in der ME10-Hilfedatei dokumentiert. Mit DDE_ENABLE befähigt man ME10 als Server zu fungieren. Der Applikationsname für ME10 6.11 ist 'HP_ME10' und ab der Version 7 'ME10F' Das General-topic für ME10 ist 'general' (für Excel und Word 'system'). Im Downloadbereich der ME10-Homepage gibt es begleitend zu diesem Thema ein umfangreicheres Makro am Beispiel des Datenaustauschs zwischen ME10 und EXCEL. 21. Die neue Benutzeroberfläche (ab Version 9) ... (kommt noch 21. Die Konfiguration von ME10 ... (kommt noch 22. Fehler in ME10 Immer wieder hatte ME10 Probleme mit diversen Programmfehlern. Zugegeben hat dies der Hersteller in der Regel durch zahlreiche Bugfixes/Patches. Immer, wenn ein Sprung in der Entwicklung erfolgte, hat es Ärger mit Programmfehlern gegeben. Aktuell macht die 9er Version so manche Probleme (fehlerhaftes Abspeichern). Die einzig sinnvolle Konsequenz liegt darin, sich bei neuen Versionen zurückzuhalten und nicht am letzten Betatest teilzunehmen.

Auch andere Änderungen (keine richtigen Fehler) werden von den ME10-Programmierern gemacht, ohne daß es gleich auffällt. So konnte man in der Version 6/7 nicht die Symmetrielinien per Makro ‚fangen’. Bei der 9er Version geht das einwandfrei! ME10 befindet sich eben in einem stetigen Entwicklungsfluß. Schreibfehler bitte ich zu entschuldigen. Korrekturen, Hinweise etc. wurden und werden dankend angenommen. (gmg) im September 2000