Datum und Zeit mit AutoLISP in eine Zeichnung eintragen
Die Aufgabe besteht aus zwei Teilen: (1) Ermitteln von Datum und Zeit
und (2) Eintragen dieser Information in die aktuelle Zeichnung.
Datum und Zeit kann man unter AutoLISP automatisch auslesen. AutoCAD besitzt eine
Systemvariable, in der in einer reellen Zahl die Systemzeit zur Verfügung gestellt wird.
Zum Zeitpunkt der Erstellung dieser Seite ist das zum Beispiel
Befehl: (setq dt (getvar "CDATE"))
2.0011e+007
Befehl: (setq dts (rtos dt 2 6))
"20011012.163806"
In der oberen Form kann man mit dem Datum nicht sehr viel anfangen. Deshalb wird es
mit der Funktion (rtos) in eine Zeichenkette umgewandelt. Im
Beispiel ist die Genauigkeit 6 Stellen nach dem Komma eingestellt.
Letztlich geht es also darum, eine Zeichenkette zu erzeugen, die vor dem Dezimalpunkt das
Datum anzeigt (hier der 12.10.2001) und danach die Zeit (hier: 16.38 Uhr).
In den folgenden kleinen Programmen wird nun aus dieser Zeichenkette noch ein Datum bzw. eine Zeit
formatiert. Dazu extrahiert zuerst die Funktion (substr) jeweils den entsprechenden
Teil der Zeichenkette für Tag/Monat/Jahr bzw. Stunden/Minuten/Sekunden.
(defun Zeit_Angabe ()
(setq
sst (substr scrd 10 2)
smin (substr scrd 12 2)
ssec (substr scrd 14 2)
Zeit (strcat sst ":" smin ":" ssec )
)
)
(defun Datums_Angabe ()
(setq
scrd (rtos (getvar "CDATE") 2 6)
sj (substr scrd 1 4)
sm (substr scrd 5 2)
st (substr scrd 7 2)
Datum (strcat st "." sm "." sj )
)
)
Noch eine Anmerkung: wenn mehrere Zuweisungen erforderlich sind, kann man
die Zuweisungsfunktion (setq) vereinfacht so anwenden, wie in den
beiden Beispielen. Hier wird immer paarweise einer Variablen ein Wert zugewiesen.
Nun folgt das Hauptprogramm, in dem die beiden Funktionen aufgerufen werden.
(defun C:DT()
(Zeit_Angabe)
(Datums_Angabe)
(setq P1 (getpoint "\n Bitte Punkt eingeben "))
(command "_text" P1 5 0 (strcat Datum " " Zeit))
)