找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1603|回复: 9

[求助] 改匿名块时出错

[复制链接]

已领礼包: 3198个

财富等级: 富可敌国

发表于 2014-4-21 21:00:51 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 lucas3 于 2014-4-21 21:03 编辑

见过好些改块名的程序,基本都支持匿名块,但是要选一个改一个,这个是edata的作品,可以批量改块名,
但是有个问题,当选择的有匿名块时,能显示匿名块的名字(*u2),但是改名时出错,请大师帮忙看看
  1. ;1、对选择的块逐一更名。
  2. ;2、修改块时可以放大图块。
  3. ;3、出错函数处理,不影响其他lisp的出错函数。
  4. ;4、修改时间 2011-6-15
  5. ;5、命令 rb
  6. (defun c:rb (/ en n i een na naa ens1 )
  7.    (setq *error*_sk0 *error*)    ;保存出错处理函数
  8. (setq *error* *error*_sk1)
  9.   (if (= (getvar "cmdecho") 1) (setvar "cmdecho" 0))
  10.   (setq sk_flagrb1 "e")
  11.   (setq en (ssget '((0 . "INSERT")))
  12.    i 0)
  13.   (if (and en (= (type en) 'PICKSET))
  14.     (progn
  15.     (setq n (sslength en))
  16.     (princ (strcat "\n已选择了"(rtos n)"个块!"))
  17.   (repeat n
  18.     (setq een (entget (setq ens1 (ssname en i))) na (cdr (assoc 2 een)) i (+ i 1))
  19.     (command "zoom" "o" ens1 "")
  20.     (setq sk_flagrb1 "be")
  21.     (prompt (strcat "\n原块名为:" na))(terpri)
  22.     (setq naa (getstring "\n请输入新块名[回车就不修改]:"))
  23.     (if (= naa "")()
  24.       (progn
  25.   (command "rename" "b" na naa)
  26.       )
  27.     )
  28.     (command "zoom" "p")
  29.   )
  30.     (setq sk_flagrb1 "e")
  31.     (setvar "cmdecho" 1)
  32.     ))
  33.   (princ)
  34. )
  35. ;出错函数
  36. ;来自明经通道
  37. (defun *error*_sk1 (msg)
  38.   (if (= (getvar "cmdecho") 1) (setvar "cmdecho" 0))
  39.   (if (wcmatch (strcase msg t) "*break,*cancel*,*exit*,*取消*")
  40.     (if  (= (getvar "LOCALE") "CHS")
  41.       (princ "\n用户按了<Esc>强制退出")
  42.       (princ "\nYou cancelled The operation!")
  43.     )
  44.    
  45.     (princ (strcat "\n" msg))
  46.   )
  47.   (terpri)
  48.   (vla-EndUndoMark      ;回退
  49.     (vla-get-ActiveDocument (vlax-get-acad-object))
  50.   )
  51.   
  52.   (if (= sk_flagrb1 "be") (command "zoom" "p"))
  53.   (setvar "cmdecho" 1)
  54.   (setq *error* *error*_sk0)
  55.   (princ)
  56. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-4-21 21:11:18 | 显示全部楼层
本帖最后由 st788796 于 2014-4-21 21:13 编辑

看你用啥版本了,2012以上用 setpropertyvalue 函数就ok , 不用折腾

又想自己使用方便,又想整点啥,就用高版本

点评

如上所说,改块名的程序,论坛很多,高飞鸟大师也曾发过,只是觉得EDATA这个好一点,如果大师能修复这个BUG,就完美了, 附上高飞鸟大师的代码:  详情 回复 发表于 2014-4-22 08:46
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3198个

财富等级: 富可敌国

 楼主| 发表于 2014-4-22 08:46:39 | 显示全部楼层
st788796 发表于 2014-4-21 21:11
看你用啥版本了,2012以上用 setpropertyvalue 函数就ok , 不用折腾

又想自己使用方便,又想整点啥,就用 ...

如上所说,改块名的程序,论坛很多,高飞鸟大师也曾发过,只是觉得EDATA这个好一点,如果大师能修复这个BUG,就完美了,
附上高飞鸟大师的代码:
  1. (prompt "在命令行中输入命令: CCC!")
  2. ;;;测试程序
  3. (defun C:ccc (/ *APP *DOC EntNam NewNam)
  4.   (vl-load-com)
  5.   (setq *APP (vlax-get-acad-object))
  6.   (setq *DOC (vla-get-activeDocument *APP))
  7.   (if (setq EntNam (car (entsel "\n请选择块: ")))
  8.     (if (setq NewNam (getstring "\n请输入新块名<字符规范,不要重名>: "))
  9.       (change-block-name EntNam NewNam)
  10.       (princ "\n你没有输入新块名!")
  11.     )
  12.     (princ "\n你没有选择物体!")
  13.   )  
  14.   (princ)
  15. )
  16. ;;;改块名程序
  17. (defun change-block-name (EntNam NewNam / obj blocks BlkNam block)
  18.   (setq obj (vlax-ename->vla-object EntNam))
  19.   (setq blocks (vla-get-blocks *DOC))
  20.   (if (=(vla-get-objectname obj) "AcDbBlockReference")
  21.     (if (tblsearch "block" NewNam)
  22.       (princ "\n和已有块名重复!")
  23.       (progn
  24.         (setq BlkNam (vla-get-name obj))
  25.         (setq block  (vla-item blocks BlkNam))
  26.         (vla-put-name block NewNam)
  27.         (if (= (substr BlkNam 1 2) "*U")
  28.           (progn
  29.             (princ "\n这是一个匿名块.")
  30.             (vla-auditinfo *Doc :vlax-true)
  31.             (vla-put-name block NewNam)
  32.           )
  33.         )
  34.         (princ "\n块名已经更改成\"")
  35.         (princ NewNam)
  36.         (princ "\"")
  37.       )
  38.     )
  39.     (princ "\n所选物体不是块!")
  40.   )


论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-4-22 08:56:12 | 显示全部楼层
每日插件 板块有去看看
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-4-22 10:30:31 来自手机 | 显示全部楼层
http://bbs.xdcad.net/forum.php?mod=viewthread&tid=670921
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

发表于 2014-4-22 13:24:07 | 显示全部楼层
你没有找到地方,明经有一个版主发过改块名的程序,可以只改指定块的名字,这个很实用。
而且可以改基点,评为精华了,你好好找找。
1.png

点评

谢黄大师,这个之前我下载过  发表于 2014-4-22 16:31
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-5-14 20:45:10 | 显示全部楼层
学习了谢谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-5-14 20:46:40 | 显示全部楼层
学习了谢谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 08:24 , Processed in 0.299430 second(s), 50 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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