Seite 1 von 1
Info über alle Objekte auf dem Layer
Verfasst: Mo 3. Apr 2006, 14:53
von Zeichenartist
Ich würde immer mal wieder gerne wissen, wieviele von welchen Objekten
auf einem Layer sind. Also ganz einfach gesagt:
z.B: 2 Punkte, 3 Linien, 1 Kreis, 2 Blöcke ....
Ich suche eine Info über z.B. Punkte die ich nicht sehe auf dem Bildschirm
oder Elemente, die außerhalb liegen oder sehr klein sind.
Verfasst: Mo 3. Apr 2006, 16:33
von CADwiesel
Code: Alles auswählen
(defun c:elemsliste ( / elemli gesliste i item)
(defun bau_elemli (asatz / n elemli)
(setq n 0)
(repeat (sslength asatz)
(setq elemli (cons (ssname asatz n) elemli)
n (1+ n)
) ;_ end of setq
) ;_ end of repeat
elemli
)
(vlax-for layer(vla-get-layers(vla-get-activedocument(vlax-get-acad-object)))
(mapcar '(lambda (y / c)
(if(member(setq c(cdr(assoc 0(entget y))))(mapcar 'car elemli))
(setq elemli (subst(cons c(+ 1 (cdr(assoc c elemli))))(assoc c elemli)elemli))
(setq elemli(cons (cons c 1)elemli))
)
)
(if(setq as (ssget "_X" (list(cons 8 (vla-get-name layer)))))
(bau_elemli as)
)
)
(setq gesliste(cons(apply 'list (cons (vla-get-name layer)elemli))gesliste))
)
(if
gesliste
(foreach item gesliste
(princ (strcat "\nLayername: "(car item))"\nElemente: \n")
(foreach i (cdr item)
(prin1 i)(terpri)
)
)
)
(princ)
)
sowas z.b?
Da funzt was nicht
Verfasst: Mo 3. Apr 2006, 16:52
von Zeichenartist
Danke für die Hyperschnelle Antwort.
Aber:
Das krieg ich leider nicht aufgerufen.
Wo liegt der Fehler.
Wie lautet der Befehlsaufruf?
Verfasst: Di 4. Apr 2006, 08:26
von CADwiesel
per _appload laden und dann starten durch eingabe in der Befehlszeile von:
elemsliste
Verfasst: Di 4. Apr 2006, 12:20
von CADwiesel
oops kleiner Klammer-Fehler
Hier nochmal überarbeitet
Code: Alles auswählen
(defun c:elemsliste ( / elemli gesliste i item)
(defun bau_elemli (asatz / n elemli)
(setq n 0)
(repeat (sslength asatz)
(setq elemli (cons (ssname asatz n) elemli)
n (1+ n)
) ;_ end of setq
) ;_ end of repeat
elemli
)
(vlax-for layer(vla-get-layers(vla-get-activedocument(vlax-get-acad-object)))
(mapcar '(lambda (y / c)
(if(member(setq c(cdr(assoc 0(entget y))))(mapcar 'car elemli))
(setq elemli (subst(cons c(+ 1 (cdr(assoc c elemli))))(assoc c elemli)elemli))
(setq elemli(cons (cons c 1)elemli))
)
)
(if(setq as (ssget "_X" (list(cons 8 (vla-get-name layer)))))
(bau_elemli as)
)
)
(setq gesliste(cons(apply 'list (cons (vla-get-name layer)elemli))gesliste))
)
(if
gesliste
(foreach item gesliste
(princ (strcat "\n\nLayername: "(car item)"\nElemente . Anzahl \n"))
(foreach i (cdr item)
(prin1 i)(terpri)
)
)
)
(princ)
)