明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 8980|回复: 29

重命名图块

  [复制链接]
发表于 2010-12-28 12:09:48 | 显示全部楼层 |阅读模式

系统自带的不好用,有点繁琐,自己写了简单点的。

本帖子中包含更多资源

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

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2012-6-16 18:46:57 | 显示全部楼层
本帖最后由 步行黔南 于 2012-6-16 18:47 编辑

很是感谢!提供了非常有用的lisp程序!!2D画图熟练者基本都是在编辑块,这个非常便捷!
回复 支持 1 反对 0

使用道具 举报

发表于 2018-12-8 05:49:28 | 显示全部楼层
duotu007 发表于 2011-9-6 16:29
;;;修改块名
(vl-load-com)
(defun c:rb (/ ent name name1 dclname tempname filen stream dcl_re dlg n ...

求大大写个 一键获取图块名 并写到系统剪切版上!!!
先谢谢了!!!!
发表于 2018-12-7 21:09:26 | 显示全部楼层
土木燃 发表于 2018-9-12 10:37
超级好用,谢谢楼主了

动态块重命名不了
发表于 2011-1-6 15:50:33 | 显示全部楼层
下载了,谢谢
发表于 2011-1-6 15:52:48 | 显示全部楼层
改匿名不行。
发表于 2011-9-4 07:24:31 | 显示全部楼层
06环境调用不成功呢?

tkgm命令未知
发表于 2011-9-4 10:54:41 | 显示全部楼层
一直想做个像rename那样的列出所有图块并修改的插件。好像又没有太大难度。
发表于 2011-9-5 21:59:20 | 显示全部楼层
(vla-put-name blkobj "XX")
 楼主| 发表于 2011-9-6 16:29:13 | 显示全部楼层
;;;修改块名
(vl-load-com)
(defun c:rb (/ ent name name1 dclname tempname filen stream dcl_re dlg new obj blocks BlkNam block DOC )
  (if (and (setq ent (car (entsel "\n选择需要改名的块: ")))
           (or (eq "INSERT" (cdr (assoc 0 (entget ent)))) (alert "没有选择块!"))
      )
    (progn
      (setq name (cdr (assoc 2 (entget ent))))
      (setq dclname
        (cond  
          (
            (setq tempname (vl-filename-mktemp "re-dcl-tmp.dcl") filen (open tempname "w"))
            (foreach stream '(  
"\n"
"RENAME:dialog {\n"
"    label = \"修改块名\" ;\n"
"    :row {\n"
"        :edit_box {\n"
"            key = \"dcl_edit_name\" ;\n"
"            width = 30 ;\n"
"        }\n"
"    }\n"
"    :row {\n"
"        :button {\n"
"            key = \"btn_ok\" ;\n"
"            label = \"确认\" ;\n"
"        }\n"
"        :button {\n"
"            is_cancel = true ;\n"
"            key = \"btn_cancle\" ;\n"
"            label = \"取消\" ;\n"
"        }\n"
"    }\n"
"}\n"
              )
              (princ stream filen)
            )
            (close filen)
            tempname
          )
        )
      )
      (setq DOC (vla-get-ActiveDocument (vlax-get-acad-object)))
      (setq obj (vlax-ename->vla-object ent))
      (setq blocks (vla-get-blocks DOC))
      (setq dcl_re (load_dialog dclname))
      (if (not (new_dialog "RENAME" dcl_re)) (exit))
      (set_tile "dcl_edit_name" name)
      (mode_tile "dcl_edit_name" 2)
      (action_tile "dcl_edit_name" "(setq name1 $value)")
      (action_tile "btn_ok" "(if (=(vla-get-objectname obj) \"AcDbBlockReference\")
                               (if (tblsearch \"block\" name1)
                                 (alert (strcat \"块名: \" name1 \" 已经存在.\"))
                                 (if (not (snvalid name1))
                                   (alert (strcat \"错误的块名: \" name1))
                                   (done_dialog 1)
                                 )
                               )
                             )"
      )
      (setq dlg (start_dialog))
      (if (= dlg 1)
        (progn
          (setq BlkNam (vla-get-name obj))
          (setq block  (vla-item blocks BlkNam))
          (vla-put-name block name1)
          (if (= (substr BlkNam 1 2) "*U")
            (progn
              (princ "\n这是一个匿名块.")
              (vla-auditinfo DOC :vlax-true)
              (vla-put-name block name1)
            )
          )
          (princ (strcat "\n图块 \"" name "\" 重命名为 \"" name1 "\""))
        )
      )
      (unload_dialog dcl_re)
      (vl-file-delete dclname)
    )
  )
  (princ)
)
发表于 2011-9-11 21:52:08 | 显示全部楼层
楼上这个命令不错.直接跳出来,感谢
发表于 2011-9-12 18:47:26 | 显示全部楼层
最好的源码,祝节日快乐!
发表于 2012-3-19 17:38:00 | 显示全部楼层
cad2010不知能用吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 21:24 , Processed in 0.202344 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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