;;; Edycja bloku
;;; zwcad.pl
;;; Polecenie do uruchomienia skryptu LISP: ByBlockInBlock
;;; Opis: https://www.zwcad.pl/materialy-edukacyjne/kurs-lisp/przyklady-lisp/184-edycja-elementow-bedacych-w-bloku.html

(vl-load-com)
	(setq *ZWCAD* (vlax-get-acad-object))
	(setq *Rysunek* (vla-get-activedocument *ZWCAD*))
	(setq *Model* (vla-get-Modelspace *Rysunek*))
(defun C:ByBlockInBlock ( / )
	;----------------------------------------------------------
	; funkcja zmienia właściwości elementów wewnątch bloku na ByBlock
	; Argumenty: nil 
	; Wynik: nil
	;----------------------------------------------------------
	(setq Wybor (entsel "Wskaż blok")	)	; funkcja prosi Użytkownika o wskazanie jednego narysowanego
;	elementu Zwraca listę: wybrany element i współrzędne klikniętego punktu 
	(setq Wybrany_obj(vlax-ename->vla-object (car Wybor))) ;Zamiana wskazania na właściwy objekt
	(setq Bloki (vlax-get-property *Rysunek* 'Blocks ))
	(setq Definicja(vlax-invoke-method Bloki 'Item (vlax-get-property Wybrany_obj 'Name )) )	
	; odczytujemy definicję wzkazanego bloku
	(vlax-for Element Definicja		; pętla przechodząca przez każdy element w kolekcji 
		(vlax-put-property Element 'Color 0)	; zmiana koloru na ByBlock
	) 
	(command "regen")	; konieczne, by zobaczyć zmianę, bez tego zmiany w elementach będą dokonane,
;	ale nie zostaną wyświetlone na ekranie
)