ich hab dir mal was umgebastelt
;****************************************************************************************************
;
;Hinweis:
;bitte denkt dran, wenn Ihr eine Zeichnung an andere weitergebt, sollten alle Elemente sichtbar sein.
;Es wissen die wenigsten User, wie sie 'unsichtbare' Elemente wieder sichtbar machen können.
;
;*****************************************************************************************************
;********************** Beginn Befehle **************************
; NSH schaltet alle gewählten Elemente aus (Noshow)
(defun C:NSH (/ a)
(princ "\nZum Ausschalten")
(if(setq tt (entget (car (entsel))))
(progn
(if(setq uu(cdr(assoc 62 tt)))
(setq a (ssget "_X" (list (cons 62 uu)))) ; sichtbare wählen
(setq a (ssget "_X" (list (cons 62 256))))
)
(if a
(noshow a) ; ausschalten
(princ "\nKeine Elemente gewählt\n")
) ;_ end of if
)
)
(princ)
) ;_ end of defun
; SSH schaltet die gewählten Elemente wieder ein (Switch to show)
; Achtung: nach (grclear) können auch Elemente gefunden werden, die momentan unsichtbar sind,
; sich aber trotzdem schon im eingeschalteten Zustand befinden. Durch diese Auswahl
; wird aber ihr Zustand nicht verändert!
(defun C:SSH (/ a b)
(setq
a (ssget "X" (list (cons 60 1))) ; Alle ausgeschalteteten aus der Datenbank holen
) ;_ end of setq
(if a
(progn
(grclear) ; alle sichtbaren löschen
(show a) ; alle unsichtbaren zeigen
(princ "\nZur Sichtbarkeit")
(setq b (ssget)) ; gewünschte wählen
(if b ; falls welche gewählt
(progn
(noshow (sssub a b)) ; von den bisher unsichtbaren die gewählten herausnehmen
(show b) ; und die gewählten wieder sichtbar machen
) ;_ end of progn
(noshow a) ; wenn keine gewählt, wieder alle Unsichtbaren zurück
) ;_ end of if
) ;_ end of progn
(princ "\nKeine Elemente unsichtbar geschaltet\n")
) ;_ end of if
(redraw) ; Bildschirm wieder herstellen
(princ)
) ;_ end of defun
; TNSH schaltet alle unsichtbaren Elemente wieder sichtbat (toggle all noshow entities to show)
(defun C:TNSH (/ a)
(setq
a (ssget "X" (list (cons 60 1))) ; alle unsichtbaren in der Datenbank suchen
) ;_ end of setq
(if a ; falls welche gefunden
(show a) ; diese anzeigen
(princ "\nKeine Elemente unsichtbar geschaltet\n")
) ;_ end of if
(princ)
) ;_ end of defun
;********************** Ende Befehle **************************
;**********************Beginn Funktionen ****************************
; sssub subtrahiert von Auswahlsatz a Entities die in Auswahlsatz b enthalten sind
(defun sssub (a b / c d e)
(setq d 0.0) ; Realzahl als Indexzeiger für Auswahlsatz verwenden
(while (setq e (ssname b d))
(if (ssmemb e a)
(setq a (ssdel e a))
) ;_ end of if
(setq d (1+ d))
) ;_ end of while
a
) ;_ end of defun
; noshow schaltet die Entities in Auswahlsatz a unsichtbar
(defun noshow (a / b c d e)
(setq
b (sslength a)
c 0.0
) ;_ end of setq
(while (setq d (ssname a c))
(setq
e (entget d)
; Hier muß zum ersten Mal auf die Reihenfolge der Unterlisten in der Elementliste geachtet werden:
; e (append (list (cons 60 1)) e) würde mit R13 Entities nicht funktionieren !
e (append e (list (cons 60 1)))
) ;_ end of setq
(entmod e)
(setq c (1+ c))
) ; Ende while
) ;_ end of defun
; show schaltet die Entities in Auswahlsatz a sichtbar
(defun show (a / b c d e)
(setq
b (sslength a)
c 0.0
) ;_ end of setq
(while (setq d (ssname a c))
(setq
e (entget d)
e (subst (cons 60 0) (assoc 60 e) e)
; Hier gilt für die Reihenfolge das Gleiche wie bei noshow
) ;_ end of setq
(entmod e)
(redraw (cdr (assoc -1 e)) 3)
(setq c (1+ c))
) ; Ende while
) ;_ end of defun
; fld gibt die zu a assozierte Unterliste aus Liste b zurück
(defun fld (a b)
(cdr (assoc a b))
) ;_ end of defun
;**********************Ende Funktionen ****************************
------------------
Gruß
CADwiesel
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP