Hallo allersetits,
es geht um das Einfügen von Datum und DWGNAME in einen Block. Ich weiss das diese Frage schon einige male gestellt wurde und ich habe wirklich in mühevoller Kleinarbeit das gesamte Forum bis zur letzten Seite durchforstet aber der vielversprechendste, gleich folgende Quellcode von CADWIESEL liefert mir nur eine Fehlermeldung.
kann mir jemand sagen, wie die Attribute heissen müssen (hab jetzt Änderung1, Änderung2, Änderung3 als Attribut... ob ein bestimmter Blockname verwendet werden muss hab ich nicht rausbekommen) und hier die Fehlermeldung: "Fehler: Fehlerhafter Argumenttyp: stringp nil"
und der Quellcode von CADWIESEL:
;;;*********************Systemzeit auslesen*******************************
(defun parse_time ( / )
(setq USERLOG (getvar "Loginname"))
(setq date_str (rtos (getvar "cdate") 2 4)
year (substr date_str 1 4)
month (substr date_str 5 2)
day (substr date_str 7 2)
hour (substr date_str 10 2)
minu (substr date_str 12 2)
date (strcat day "." month "." year " / " Userid)
);ende setq
);ende defun
;;;*****************Stempel ändern***************************************
(defun c:stemp ( / d tt te)
(setvar "cmdecho" 0)
(parse_time)
(setq md_zaehler 0)
(if (setq tt (ssget "x" '((0 . "INSERT")(2 . "legende"))))
(progn
(while
(> (sslength tt) md_zaehler)
(setq te (entget (ssname tt md_zaehler)))
(setq aslstblk (entget (entnext (cdr (assoc -1 te)))))
(while (/= (cdr (assoc 0 aslstblk)) "SEQEND")
(setq md_text (cdr (assoc 2 aslstblk)))
(cond
((= md_text "ÄNDERUNG1")
(setq ename1 aslstblk)
(setq md_fill1 (cdr (assoc 1 aslstblk)))
)
((= md_text "ÄNDERUNG2")
(setq ename2 aslstblk)
(setq md_fill2 (cdr (assoc 1 aslstblk)))
)
((= md_text "ÄNDERUNG3")
(setq ename3 aslstblk)
(setq md_fill3 (cdr (assoc 1 aslstblk)))
)
);ende cond
(setq aslstblk (entget (entnext (cdr (assoc -1 aslstblk)))))
);ende while
(if
(/= md_fill3 date)
(progn
(entmod (subst (cons 1 md_fill2)(assoc 1 ename1) ename1))
(entmod (subst (cons 1 md_fill3)(assoc 1 ename2) ename2))
(entmod (subst (cons 1 date)(assoc 1 ename3) ename3))
);ende progn
);ende if
(setq md_zaehler (1+ md_zaehler))
);ende while
);ende progn
);ende if
);ende defun
Da ich langsam an meinen ersten, zaghaften LISP-Versuchen verzweifele hoffe ich auf eure Hilfe (kann aber erst morgen wieder reinschauen)
~~ idraH
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP