Zestawienie zaznaczonych elementów.
W poniższym przykładzie przedstawię jak można zliczyć elementy zaznaczone w rysunku. Wygenerowana lista będzie zawierała nazwę typu obiektu oraz ilość elementów tego typu. Dla bloków oddzielne wpisy powstawną dla każdego typu bloku.

Wykonanie funkcji Sumaelementow dla tego rysunku zwróci następujący wynik. 
W kolejnym przykładzie przedstawię, jak można taki wynik wyświetlić w rysunku albo w oknie dialogowym.

 

Zestawienie elementów

 

Polecenie do uruchomienia skryptu LISP: Sumaelementow

 

Kod źródłowy z opisem

 

;;; Zestawienie zaznaczonych elementów
;;; zwcad.pl
;;; Polecenie do uruchomienia skryptu LISP: Sumaelementow
;;; Opis: https://www.zwcad.pl/materialy-edukacyjne/kurs-lisp/przyklady-lisp/308-zestawienie-zaznaczonych-elementow.html
(vl-load-com)
(setq *ZWCAD* (vlax-get-acad-object))
(setq *Rysunek* (vla-get-activedocument *ZWCAD* ))
(setq *Model* (vla-get-Modelspace *Rysunek* ))
(defun XSSGet (tresc / selElems elementy )
(setq selElems(ssgetfirst ))
(if (car selElems)
(setq elementy (sel2list (car selElems)))
(progn
;(princ tresc )
(setq elementy(vl-catch-all-apply 'ssget (list )))
(if (not(vl-catch-all-error-p elementy))
(progn
(setq elementy (sel2list elementy ))
)
)
)
)
elementy
)
(defun sel2list (selset / Wynik ileelementow i)
(setq ileelementow(sslength selset) )
(setq i 0 )
(repeat ileelementow
(setq Wynik (append Wynik (list (vlax-ename->vla-object(ssname selset i) ) )))
(setq i (1+ i ))
)
Wynik
)
(defun Dodaj (nazwa Wynik / wybrany element)
(setq wybrany(assoc nazwa Wynik ))
(if wybrany
(progn
(setq Wynik (subst (cons nazwa (1+(cdr wybrany))) wybrany Wynik))
)
(progn
(setq element (cons nazwa 1))
(setq Wynik (append Wynik(list element )))
)
)
Wynik
)
(defun Zlicz (elems / wynik % nazwa)
(setq wynik (list))
(foreach % elems
(setq nazwa(vlax-get-property % 'ObjectName))
(if (eq nazwa "AcDbBlockReference") (setq nazwa (vlax-get-property % 'Name )))
(setq wynik (Dodaj nazwa wynik))
)
)
(defun C:Sumaelementow ( / elementy zliczone)
(setq elementy (XSSGet "Wskaż elementy do zestawienia" ))
(setq zliczone (Zlicz elementy)) ;w zliczaniu posłużymy się tzw listami asocjacyjnymi. W lista
; ta łączy dwa elementy. Nazwę elementu oraz ilość wystąpienia.
; w jednym z kolejnych przykładów przedstawię w jaki sposób wyświetlić takie zestawienie w rysunku
)

W jednym z kolejnych przykładów przedstawię, jak można taki wynik wyświetlić w rysunku albo w oknie dialogowym.

 

Wykonanie w ZWCAD 2023 

zestawienie elementow

 

Wykonanie w ZWCAD 2015

LISP SumaElementow 2015

 

Wykonanie w ZWCAD Classic

LISP SumaElementow Classic