找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 788|回复: 3

[LISP程序]:快速重新命名块

[复制链接]

已领礼包: 58个

财富等级: 招财进宝

发表于 2007-3-7 20:04:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
(defun zgx-get-dxf (code entname kk)
   (if (= kk 2)
      (assoc code (entget entname))
      (cdr (assoc code (entget entname)))
   )
)
(defun c:renblk        (/ en newname oldname)
   (setvar "cmdecho" 0)
   (while (or (= nil en)
              (if en
                 (/= (zgx-get-dxf 0 en 1) "INSERT")
              )
          )
      (setq en (car (entsel "\n请选择要重名的图块:")))
   )
   (setq oldname (zgx-get-dxf 2 en 1))
   (while (or (= newname nil)
              (= newname "")
              (if newname
                 (tblsearch "block" newname)
              )
          )
      (setq newname
              (getstring (strcat "\n请输入新的块名称,[选择的块名为:"
                                 oldname
                                 "]:"
                         )
              )
      )
   )
   (command ".rename" "b" oldname newname)
   (princ
      (strcat "\n*****图块" oldname "重命名为" newname "!*****")
   )
   (princ)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2007-3-7 20:13:30 | 显示全部楼层
不支持重命名无名块。。。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-4-5 23:13:36 | 显示全部楼层
不支持重命名无名块就没什么应用价值 CAD本身又有重命名块的功能
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 8121个

财富等级: 富甲天下

发表于 2007-4-6 09:33:34 | 显示全部楼层
关于对无名块的改名可见:
http://www.mjtd.com/Codes/ArticleShow.asp?ArticleID=1191

  1. (prompt "在命令行中输入命令: CCC!")
  2. ;;;测试程序
  3. (defun C:ccc (/ *APP *DOC EntNam NewNam i l)
  4.   (vl-load-com)
  5.   (setq *APP (vlax-get-acad-object))
  6.   (setq *DOC (vla-get-activeDocument *APP))
  7.   ;;(vla-auditinfo *Doc :vlax-true)
  8.   (prompt "\n请选择块: ")
  9.   (if (setq SS (ssget '((0 . "INSERT"))))
  10.     (progn
  11.       (setq l (sslength ss))
  12.       (setq i 0)
  13.       (while (< i l)
  14.         (setq EntNam (ssname ss i))
  15.         (if (setq NewNam (getstring "\n请输入新块名<字符规范,不要重名>: "))
  16.           (change-block-name EntNam NewNam)
  17.           (princ "\n你没有输入新块名!")
  18.         )
  19.         (setq i (1+ i))
  20.       )
  21.     )
  22.     (princ "\n你没有选择块物体!")
  23.   )  
  24.   (princ)
  25. )
  26. ;;;改块名程序
  27. (defun change-block-name (EntNam NewNam / obj blocks BlkNam block)
  28.   (setq obj (vlax-ename->vla-object EntNam))
  29.   (setq blocks (vla-get-blocks *DOC))
  30.   (if (=(vla-get-objectname obj) "AcDbBlockReference")
  31.     (if (tblsearch "block" NewNam)
  32.       (princ "\n和已有块名重复!")
  33.       (progn
  34.         (setq BlkNam (vla-get-name obj))
  35.         (setq block  (vla-item blocks BlkNam))
  36.         (vla-put-name block NewNam)
  37.         (if (= (substr BlkNam 1 1) "*")
  38.           (progn
  39.             (princ "\n这是一个匿名块.")
  40.             (vla-auditinfo *Doc :vlax-true)
  41.             (vla-put-name block NewNam)
  42.           )
  43.         )
  44.         (princ "\n块名已经更改成"")
  45.         (princ NewNam)
  46.         (princ """)
  47.       )
  48.     )
  49.     (princ "\n所选物体不是块!")
  50.   )
  51. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-17 14:50 , Processed in 0.188523 second(s), 43 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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