Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  ssHistory - Elemente finden, die frühere Befehle in Zeichnung erzeugt haben

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  ssHistory - Elemente finden, die frühere Befehle in Zeichnung erzeugt haben (344 mal gelesen)
archtools
Mitglied



Sehen Sie sich das Profil von archtools an!   Senden Sie eine Private Message an archtools  Schreiben Sie einen Gästebucheintrag für archtools

Beiträge: 823
Registriert: 09.10.2004

Entwickler für AutoCAD, BricsCAD u.a., alle Systeme

erstellt am: 05. Sep. 2009 12:58    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz