[Home] --- [Allgemein] [Popeye] [Lisp] [Topologie] [Ase1] [Ase2] [Koordinaten] [Karten] [Arx] --- [@]

ARX-Anwendungen
Bemerkung : Das schöne an der Entwicklung von ARX-Anwendungen ist die Fehlersuche und auch die Frage, ob man alle Fehlermöglichkeiten abgefangen hat. Denn jeder Fehler führt fast unweigerlich zum Neustart des Rechners (Windows 95) und Starten von ACAD und Fehler beheben und Compilieren und Testen. In der Regel laufen die Programme in meiner Umgebung, aber verschiedentlich bleibt doch alles stehen.

Apfelmännchen, Julia und Bifurkation

Dieses Programm (aw_ac14_bifur.cpp, aw_ac14_bifur.arx) ist nicht sehr nützlich und wird geschwindigkeitsmäßig von allen anderen Programmen dieser Art geschlagen. Aber als Programmierbeispiel für eine ARX-Anwendung ist es eine hübsche Sache.

Der Befehl M_INIT/J_INIT/B_INIT (Mandel/Julia/Bifur) zoomt den passenden Ausschnitt. Der Befehl MANDEL erzeugt das Apfelmännchen, JULIA eine Juliamenge und BIFUR die Bifurkation. Die Iterationstiefe ist mit 100 vorgegeben, kann aber mit (setq maxiter n) auf einen anderen Wert gesetzt werden. Wenn man eine Julia-Menge darstellen will, muß unbedingt die Variable CJULIA mit (setq cjulia (getpoint)) gesetzt werden. Ansonsten siehe Bemerkung.
Die Darstellung besteht nicht aus ACAD-Elementen (z.Bsp. Punkten), sondern ist mit gdraw nur temporär gezeichnet und verschwindet nach dem nächsten Neuzeichnen. Man kann in die Zeichnung hineinzoomen und für den neuen Ausschnitt die Berechnung wieder starten. Obwohl die Zeichnung nur temporär ist, scheint ACAD jeden Pixel aufwendig im Speicher zu halten und wirkt außerordentlich schwerfällig.

ac14_mandel.gif ac14_julia.gif ac14_bifur.gif



Messagebox

ac14_messagebox.gif

Die Alert-Box in Lisp ist etwas beschränkt. Deshalb habe ich die Standard-Messagebox von Windows, die auch von Autocad genutzt wird, als ARX-Funktion selbst programmiert. Mit Flag wird die Erscheinungsweise der Box beeinflußt (siehe WinAPI). Der Rückgabewert gibt an, welche Schaltfläche gewählt wurde.

Aufruf : (setq antwort (c:aw_Messagebox "Titel" "Meldung" Flag))

(aw_ac14_messagebox.cpp, aw_ac14_messagebox.arx)

Fileselectbox, Mehrfachauswahl

Mit der Fileselectbox in Lisp läßt sich keine Mehrfachauswahl realisieren. Mit der ARX-Funktion OpenFile können mehrere Dateien ausgewählt werden. Es wird eine Liste oder NIL zurückgegeben. Die Liste beinhaltet bei Einfachauswahl den Dateinamen mit Pfad und eine Endekennung "Ende der Liste". Bei einer Mehrfachauswahl ist das erste Listenelement der Pfad, die nachfolgenden Elemente sind die Dateinamen ohne Pfadangabe und als letztes Element die Endekennung.

Aufruf : (setq liste (c:aw_OpenFile "Titel" "Pfad" "Endung"))

(aw_ac14_openfile.cpp, aw_ac14_openfile.arx)

Topologie und ADE

Die Blockattributte des Blocks AEARC werden durch die entsprechenden Werte der ADE-Tabellen aktualisiert (z.Bsp. Attribut BGRD durch Tabelle.Feld BGRD.BGRD).
Anhand dieses Programms läßt sich ersehen, wie man auf die nichtgraphischen internen Datentabellen zugreifen kann und wie man Blöcke mit Attributen bearbeiten kann.
(aw_ac14_aktatt_aearc.cpp, aw_ac14_aktatt_aearc.arx)
blank.gif
homework I.I.MM i_hw.gif (1325 Byte) arnd wippermann