批量给块重命名,可以使用通配符
<p>能否编一个lisp,实现给cad中一部分名字具有相同特征的图块进行重命名,比方说我的一个图中有很多abbm这个前缀开头的图块,我能通过这个程序实现在这部分图块名字的前面统一加一个字母。</p><p>为什么呢,因为我们院里的设计图框各各图幅里面都有一些相同的图块,当两个不同的图幅插进一张图纸里的时候,这重复的图块就会让图幅变形,比方说一条线跑在别处了等等。</p><p>希望有朋友能帮个忙解决一下,我找了两天了也没在网上找到一个这样的图块批量更名的程序,连一个好点的带这个功能的图块管理程序都没有。</p> <p>我有个很无聊的但并不是没有意义的批量改块名的程序</p><p>供参考下</p><p>随机改块名.lsp</p><p>(defun c:sjgbn()<br/> (setq bnlist '())<br/> (setq bn (tblnext "block" T))<br/> (if (/= "*" (substr (cdr (assoc 2 bn)) 1 1))<br/> (setq bnlist (cons (cdr (assoc 2 bn)) bnlist))<br/> )<br/> (while bn<br/> (setq bn (tblnext "block"))<br/> (if (and bn (/= "*" (substr (cdr (assoc 2 bn)) 1 1)))<br/> (setq bnlist (cons (cdr (assoc 2 bn)) bnlist))<br/> )<br/> )<br/> (setq xgbnlist bnlist)<br/> <br/> (foreach x bnlist<br/> ;;;; (setq t1 (strcat (itoa (dos_random))(itoa (dos_random))(itoa (dos_random))))<br/> ;;;; (setq t2 (strcat "$Y$" (substr t1 1 9)))<br/> (setq t1 (rtos (getvar "cdate") 2 8)) ;;"20100415.23161522"<br/> (setq t2 (strcat "$Y$" (substr t1 10 8))) ;;"$Y$23161522"<br/> (if (null (member t2 xgbnlist))<br/> (setq xgbnlist (cons t2 xgbnlist))<br/> )<br/> (command "rename" "b" x t2)<br/> )<br/> <br/>(princ)<br/>)</p> 我试了一下 怎么显示函数被取消呢 函数被取消。很有用的程序用不了。那位帮看看呀。 我也迫切需要这种程序 masterlong 发表于 2010-4-15 23:23 static/image/common/back.gif我有个很无聊的但并不是没有意义的批量改块名的程序供参考下随机改块名.lsp(defun c:sjgbn() (setq bn ...
沙发的代码太棒了!我就要这个 不能使用了??
masterlong 发表于 2010-4-15 23:23
我有个很无聊的但并不是没有意义的批量改块名的程序供参考下随机改块名.lsp(defun c:sjgbn() (setq bn ...
迫切需要这功能,只是一直出现重名错误
命令: SJGBN
块 (名为“d18451676”) 已存在。
*无效*
; 错误: 函数已取消
求大神出手解决
页:
[1]