找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 898|回复: 12

[求助] [求助]:[0220]将无名图块,或以命名图块改名程序问题?

[复制链接]
发表于 2006-2-20 12:46:08 | 显示全部楼层 |阅读模式

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

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

×
[求助]:[0220]将无名图块,或以命名图块改名程序问题?
小弟写了各程序
但无法变更名称
不知道哪里出错了
(defun c:tslisp20 ()
(setq ss (car(entsel "\n 选图块:")))
(setq newname (getstring "\n 新名称:"))
(setq endata (entget ss))
(setq oldlist (assoc 2 endata))
(setq newlist (cons 2 newname))
(setq endata (subst newlist oldlist endata))
(entmod endata)
(prin1))

烦请各位高手可以解答一下
谢谢~

另外是否有人写过将 物件 剪下后,
在使用右键贴上图块时,可以随机命名图块呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2006-2-20 13:11:10 | 显示全部楼层
应该用rename命令改图块名称。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-2-20 17:04:38 | 显示全部楼层
我用 rename 还是找不到图块.
请问该怎样处理呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-2-20 17:51:07 | 显示全部楼层
(defun c:tslisp20 ()
    (setq ss (car (entsel "\n 选图块:")))
    (setq newname (getstring "\n 新名称:"))
    (setq endata (entget ss))
    (setq oldlist (assoc 2 endata))
   

    (command "rename" "b" (cdr oldlist) newname)


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

使用道具 举报

 楼主| 发表于 2006-2-20 21:56:48 | 显示全部楼层
命名错误喔 因为
newname 属性为 STR
oldlist 属性为 LIST
不知道是否要转换属性呢
烦请解答一下
谢谢`
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-2-20 23:53:01 | 显示全部楼层
  1. [FONT=courier new](load "xyp_lib.vlx")  ;版本 V.20060211(2064)
  2. ;|下载和加载通用函数(可在签名栏直接下载后放到搜索路径下)
  3. 利用以下任何一种方式(首选第一种)即可加载和运行通用函数内的所有子程序:
  4. ★1·在acad.lsp中增加(load"xyp_lib.vlx")
  5. ■2·在每个程序内增加(load"xyp_lib.vlx")
  6. ■3·在command下,输入(load"xyp_lib.vlx")
  7. ■4·在菜单.mnl中增加(load"xyp_lib.vlx")
  8. ■5·将xyp_lib.vlx文件直接拽到cad屏幕
  9. [COLOR=red] ★通用函数下载地址:[/COLOR]
  10. [url]http://www.xdcad.net/forum/attachment.php?s=&postid=1606661[/url]
  11. |;

  12. ;;;图块改名
  13. (defun c:test ()
  14.   (cmdla0)
  15.   (setq        s1  (car(USEL 0 "INSERT" "图块"))
  16.         new (USTR 7 "\n新名称" new NIL)
  17.         old (cdr (assoc 2 (entget s1)))
  18.   )
  19.   (command "rename" "b" old new)
  20.   (cmdla1)
  21. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-2-21 11:29:08 | 显示全部楼层
XYP1964 版主:
您提供的这程序,
似乎还是不能更改喔!
不知道是不是我用的将图块改无名的问题,
附上来请您研究看看.
麻烦您了.
谢谢~

(defun c:test ()
(cmdla0)
(setq s1 (car (USEL 0 "INSERT" "图块"))
     new (USTR 7 "\n新名称" new NIL)
     old (cdr (assoc 2 (entget s1)))
)
(command "rename" "b" old new)
(cmdla1)
)

将图块改无名:
(defun c:LOK (/ BLK BLKDEF BLKREF)
(vl-load-com)
(while
(or (not (setq BLK (car (entsel "\n 选择要改为匿名块的图块 :"))))
(progn
(setq BLKREF (vlax-ename->vla-object BLK))
(not (= (vla-get-objectname BLKREF) "AcDbBlockReference"))
) ;_(progn
) ;_(or (not
) ;_(while
(setq BLKDEF (vla-item
(vla-get-blocks (vla-get-activedocument (vlax-get-acad-object)))
(vla-get-name BLKREF)))
(vla-put-name BLKDEF "*U")
(vlax-release-object BLKREF)
(vlax-release-object BLKDEF)
(prin1))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-2-21 16:40:16 | 显示全部楼层
答5楼,
newname 属性为 STR—〉“新名称”
oldlist 属性为 LIST—〉(2  . “块的原名称”)
(command "rename" "b" (cdr oldlist) newname)—〉(command "rename" "b" (cdr (2  . “块的原名称”) newname)

另外,我又运行了一遍,可以正常改变图块名称.请问你运行过没有?还是只是用眼睛判断了一下"命名错误喔"
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-2-21 22:56:26 | 显示全部楼层
lazybug  请您也试试看用以下这程序
再用改名的程序看看
就知道是怎样了~

将图块改无名程序:
(defun c:LOK (/ BLK BLKDEF BLKREF)
(vl-load-com)
(while
(or (not (setq BLK (car (entsel "\n 选择要改为匿名块的图块 :"))))
(progn
(setq BLKREF (vlax-ename->vla-object BLK))
(not (= (vla-get-objectname BLKREF) "AcDbBlockReference"))
) ;_(progn
) ;_(or (not
) ;_(while
(setq BLKDEF (vla-item
(vla-get-blocks (vla-get-activedocument (vlax-get-acad-object)))
(vla-get-name BLKREF)))
(vla-put-name BLKDEF "*U")
(vlax-release-object BLKREF)
(vlax-release-object BLKDEF)
(prin1))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-2-21 23:12:57 | 显示全部楼层
有啥问题:
  1. [FONT=courier new](defun c:test (/ BLK BLKDEF BLKREF)
  2.   (vl-load-com)
  3.   (while
  4.     (or        (not (setq BLK (car (entsel "\n 选择要改为匿名块的图块 :"))))
  5.         (progn
  6.           (setq BLKREF (vlax-ename->vla-object BLK))
  7.           (not (= (vla-get-objectname BLKREF) "AcDbBlockReference"))
  8.         )
  9.     )
  10.   )
  11.   (setq        BLKDEF (vla-item
  12.                  (vla-get-blocks
  13.                    (vla-get-activedocument (vlax-get-acad-object))
  14.                  )
  15.                  (vla-get-name BLKREF)
  16.                )
  17.   )
  18.   (vla-put-name BLKDEF "*U")
  19.   (vlax-release-object BLKREF)
  20.   (vlax-release-object BLKDEF)
  21.   (prin1)
  22. )[/FONT]

测试结果:
Command: lcs
选择实体 :
((-1 . <Entity name: 7ef6ca28>) (0 . INSERT) (330 . <Entity name: 7ef74cf8>) (5
. 78AD) (100 . AcDbEntity) (67 . 0) (410 . Model) (8 . 0) (100 .
AcDbBlockReference) (2 . di) (10 103716.0 23671.1 0.0) (41 . 1.0) (42 . 1.0)
(43 . 1.0) (50 . 0.0) (70 . 0) (71 . 0) (44 . 0.0) (45 . 0.0) (210 0.0 0.0 1.0))
Command:
Command: test
选择要改为匿名块的图块 :
Command:
Command: lcs
选择实体 :
((-1 . <Entity name: 7ef6ca28>) (0 . INSERT) (330 . <Entity name: 7ef74cf8>) (5
. 78AD) (100 . AcDbEntity) (67 . 0) (410 . Model) (8 . 0) (100 .
AcDbBlockReference) (2 . *U7) (10 103716.0 23671.1 0.0) (41 . 1.0) (42 . 1.0)
(43 . 1.0) (50 . 0.0) (70 . 0) (71 . 0) (44 . 0.0) (45 . 0.0) (210 0.0 0.0 1.0))

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

使用道具 举报

 楼主| 发表于 2006-2-22 06:55:11 | 显示全部楼层
最初由 xyp1964 发布
[B]有啥问题:
[CODE](defun c:test (/ BLK BLKDEF BLKREF)
  (vl-load-com)
  (while
    (or        (not (setq BLK (car (entsel "\n 选择要改为匿名块的图块 :"))))
        (progn
          (setq BLKREF (vla... [/B]


之后再使用重新命名的程序
(defun c:tslisp20 ()
(setq ss (car (entsel "\n 选图块:")))
(setq newname (getstring "\n 新名称:"))
(setq endata (entget ss))
(setq oldlist (assoc 2 endata))
(command "rename" "b" (cdr oldlist) newname)
(prin1))
就会发现似乎不能更改其名称了
不知道您是否也会发生此问题呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-2-22 16:53:25 | 显示全部楼层
rename无法操作匿名块
同样,也无法将普通块改为匿名块
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-29 04:03 , Processed in 0.215619 second(s), 56 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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