To problem stosunkowo prosty do rozwiązania, (oczywiście) za pomocą LISP-a. Poniżej krótki uproszczony kod programu. Wcześniej trzeba załadować bibliotekę CADPL-Pack-v1.lsp (https://kojacek.wordpress.com/2015/11/04/cadpl-pack/)
Potem należy załadować dwie poniższe funkcje:
; -------------------------------------------------------------------- ;
; by kojacek 2025 (https://kojacek.wordpress.com) ;
; -------------------------------------------------------------------- ;
(defun C:RENBLO (/ %o %n %l %i)
(if
(setq %l (cd:SYS_CollList "BLOCK" (+ 1 2 4 8)))
(progn
(if
(and
(setq %o (getstring T "\nPodaj początek nazwy bloku zmienianego:"))
(setq %n (getstring T "\nPodaj przedrostek nowej nazwy:"))
)
(if
(snvalid %n 1)
(progn
(setq %i (strlen %o))
(cd:SYS_UndoBegin)
(foreach % %l
(if
(wcmatch % (strcat %o "*"))
(jk:BLK_Rename %
(strcat %n (substr % (1+ %i) 300))
)
)
)
(cd:SYS_UndoEnd)
)
(princ "\nNieprawidłowy ciąg znaków.")
)
)
)
(princ "\nW rysunku nie ma bloków.")
)
(princ)
)
; -------------------------------------------------------------------- ;
(defun jk:BLK_Rename (OldName NewName / )
(if
(and
(snvalid NewName 1)
(not (tblobjname "BLOCK" NewName))
)
(if
(tblobjname "BLOCK" OldName)
(vla-put-Name
(vla-item (cd:ACX_Blocks) OldName)
NewName
)
)
)
)
; -------------------------------------------------------------------- ;
Następnie wywołać polecenie RENBLO, podać ciąg znaków początku nazwy bloków do zmiany, a potem ciąg znaków którymi będzie on zamieniony...
Przykładowo:
"OKNO_podwojne - O3_G_Balkonowe" zamieniasz na "0-OK"
co ilustrują poniższe obrazy:
Przed:
oraz po zmianie przez RENBLO: