Message 1 of 3
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
Hello for everyone.
I'm trying to check if a block ends with _v* (Line 8), which could be _v1, _v2, _v3, and so on, but I'm having trouble. It's not able to find _v and go to the bottom part of the command.
I dont know if is match is wrong or what.
(defun c:atualizar-nome-bloco (/ a oldname newname version)
(setq a (tblnext "block" t)) ; Encontra o primeiro bloco na tabela de blocos
(while a
(setq oldname (cdr (assoc 2 a))) ; Obtém o nome do bloco
;; Verifica se o nome do bloco já possui a versão
(if (not (wcmatch (strcase oldname) "*_v[0-9]*"))
(progn
;; Adiciona a versão inicial "_v1" ao nome do bloco
(setq newname (strcat oldname "_v1"))
)
;; Se o nome do bloco já possuir uma versão, incrementa a versão existente
(progn
(setq version_start (+ 2 (vl-string-search "_v" oldname))) ; Encontra o início da versão
(setq version (atoi (substr oldname version_start))) ; Extrai a versão existente
(setq version (1+ version)) ; Incrementa a versão
(setq base_name (substr oldname 1 (- version_start 2))) ; Extrai o nome base sem a versão
(setq newname (strcat base_name "_v" (itoa version))) ; Constrói o novo nome com a versão incrementada
)
)
(princ newname)
;; Verifica se o novo nome já existe ou não
; (cond ((or (null newname) (= oldname newname)))
; ((tblsearch "block" newname))
; (t (command ".RENAME" "B" oldname newname))
; )
(setq a (tblnext "block")) ; Encontra o próximo bloco na tabela de blocos
)
(princ)
)
Solved! Go to Solution.