明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 7011|回复: 8

[讨论] 批量给块重命名,可以使用通配符

[复制链接]
发表于 2010-4-15 14:26:00 | 显示全部楼层 |阅读模式

能否编一个lisp,实现给cad中一部分名字具有相同特征的图块进行重命名,比方说我的一个图中有很多abbm这个前缀开头的图块,我能通过这个程序实现在这部分图块名字的前面统一加一个字母。

为什么呢,因为我们院里的设计图框各各图幅里面都有一些相同的图块,当两个不同的图幅插进一张图纸里的时候,这重复的图块就会让图幅变形,比方说一条线跑在别处了等等。

希望有朋友能帮个忙解决一下,我找了两天了也没在网上找到一个这样的图块批量更名的程序,连一个好点的带这个功能的图块管理程序都没有。

发表于 2010-4-15 23:23:00 | 显示全部楼层

我有个很无聊的但并不是没有意义的批量改块名的程序

供参考下

随机改块名.lsp

(defun c:sjgbn()
 (setq bnlist '())
 (setq bn (tblnext "block" T))
 (if (/= "*" (substr (cdr (assoc 2 bn)) 1 1))
  (setq bnlist (cons (cdr (assoc 2 bn)) bnlist))
 )
 (while bn
  (setq bn (tblnext "block"))
  (if (and bn (/= "*" (substr (cdr (assoc 2 bn)) 1 1)))
   (setq bnlist (cons (cdr (assoc 2 bn)) bnlist))
  )
 )
 (setq xgbnlist bnlist)
 
 (foreach x bnlist
 ;;;; (setq t1 (strcat (itoa (dos_random))(itoa (dos_random))(itoa (dos_random))))
 ;;;; (setq t2 (strcat "$Y$" (substr t1 1 9)))
  (setq t1 (rtos (getvar "cdate") 2 8))  ;;"20100415.23161522"
  (setq t2 (strcat "$Y$" (substr t1 10 8))) ;;"$Y$23161522"
  (if (null (member t2 xgbnlist))
   (setq xgbnlist (cons t2 xgbnlist))
  )
  (command "rename" "b" x t2)
 )
 
(princ)
)

发表于 2011-11-24 11:25:19 | 显示全部楼层
我试了一下 怎么显示函数被取消呢
发表于 2012-10-23 11:08:51 | 显示全部楼层
函数被取消。很有用的程序用不了。那位帮看看呀。
发表于 2013-11-20 18:09:50 | 显示全部楼层
我也迫切需要这种程序
发表于 2013-11-20 18:34:33 | 显示全部楼层
masterlong 发表于 2010-4-15 23:23
我有个很无聊的但并不是没有意义的批量改块名的程序供参考下随机改块名.lsp(defun c:sjgbn() (setq bn ...

沙发的代码太棒了!我就要这个
发表于 2020-2-28 15:34:08 | 显示全部楼层
不能使用了??
发表于 2021-4-21 18:46:30 | 显示全部楼层
masterlong 发表于 2010-4-15 23:23
我有个很无聊的但并不是没有意义的批量改块名的程序供参考下随机改块名.lsp(defun c:sjgbn() (setq bn ...

迫切需要这功能,只是一直出现重名错误
命令: SJGBN
块 (名为“d18451676”) 已存在。
*无效*
; 错误: 函数已取消
求大神出手解决
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-16 21:10 , Processed in 0.301001 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表