Ten skrypt pozwala na prostą edycje dowolnych bloków.

 

Edycja w bloku

 

Polecenie do uruchomienia skryptu LISP: ByBlockInBlock

 

Kod źródłowy z opisem

 

;;; 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
)

 

Wykonanie w ZWCAD 2023

edycja w bloku