
[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.
Messagebox

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)
homework I.I.MM
arnd wippermann