Diese kleine Programm gibt Zugriff auf die Elemente, die jeweils durch die letzten 5 Befehle erzeugt wurden. Mit Befehl: ssHistory werden die betreffenden Elemente nacheinander ausgewählt und mit Griffen versehen, dabei kann man mit <ENTER> einfach Befehl für Befehl durchscrollen.
Durch Ändern der Variablen SSH:MAXHISTORY kann man die Zahl der gespeicherten Befehle verändern (Vorsicht: AutoCAD verwaltet eine Obergrenze von 128 Auswahlsätzen): (setq SSH:MAXHISTORY 10)
Befehle wie DELETE, BLOCK usw, die Elemente aus der Zeichnung entfernen, müssten extra behandelt werden. Das geschieht in diesem Programm nicht - es kann als Fehlermeldungen geben, wenn das letzte Element gelöscht wurde.
Code:
((defun sshistory-create-editor-reactor ()
(setq SSH:REACTOR
(VLR-Editor-Reactor
nil
'(
(:vlr-commandwillstart . sshistory-startfunction)
(:vlr-commandended . sshistory-endfunction)
)
)
)
)
(defun sshistory-startfunction (reactor cmdlist)
(setq SSH:ENTLAST (entlast))
)
(defun sshistory-endfunction (reactor cmdlist)
(if (<= SSH:MAXHISTORY (length SSH:HISTORY))
(setq SSH:HISTORY (reverse (cdr (reverse SSH:HISTORY))))
)
;;
(cond
;; letztes Element gelöscht DELETE usw
((not (entget SSH:ENTLAST))
(setq SSH:ENTLAST (entlast))
)
;; Funktion hat nix dazu gebracht ZOOM usw
((equal SSH:ENTLAST (entlast))
;; (setq SSH:ENTLAST (entlast))
'OK
)
;;
('T
(setq SSH:HISTORY
(cons (cons (car cmdlist) (sshistory-findnewset SSH:ENTLAST)) SSH:HISTORY)
)
)
)
)
(defun sshistory-findnewset (en / nset)
(setq nset (ssadd))
(if en
(while (setq en (entnext en))
(if (member (cdr (assoc 0 (entget en))) '("VERTEX" "SEQEND"))
nil
(setq nset (ssadd en nset))
)
)
(setq nset (ssget "X"))
)
nset
)
(defun c:sshistory (/ counter loop)
(initget)
(setq counter 0
loop 1
)
(if SSH:HISTORY
(while loop
(sssetfirst
(cdr (nth counter SSH:HISTORY))
(cdr (nth counter SSH:HISTORY))
)
(initget)
(if (/= ""
(getstring (strcat "\nselection sset from the "
(itoa (1+ counter))
". command backward ("
(car (nth counter SSH:HISTORY))
")."
"\n continue no / <yes>: "
)
)
)
(setq loop nil)
)
(if (<= (1- (length SSH:HISTORY)) counter)
(setq counter 0)
(setq counter (1+ counter))
)
)
)
(prin1)
)
(if (not SSH:REACTOR)
(sshistory-create-editor-reactor)
)
(setq SSH:MAXHISTORY 5)
(princ "\nssHistory gives you access to the selection sets")
(princ "\nthat have been added to the drawing by the last")
(princ "\n5 commands.")
(princ "\nssHistory may behave faulty when commands are")
(princ "\nused which may have deleted the last entity in")
(princ "\nthe drawing base (i.e. delete, block etc).")
(princ "\n(c) Tom Berger - berger@archtools.de")
(princ "\nPermission to use this code freely is granted")
(princ "\nby the author.")
(prin1)
[Diese Nachricht wurde von archtools am 05. Sep. 2009 editiert.]
[Diese Nachricht wurde von archtools am 05. Sep. 2009 editiert.]
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP