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.
Die Funktion (substr)

(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))
)


  © 2001 Stefan Lagotzki