明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5398|回复: 11

修改块名lisp

  [复制链接]
发表于 2011-6-15 13:20:36 | 显示全部楼层 |阅读模式
刚弄完的修改块名lisp

  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. )

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2011-6-15 14:38:44 | 显示全部楼层
坐沙发!~~支持楼主!~~
发表于 2011-6-16 12:37:38 | 显示全部楼层
!~~支持楼主!~~
发表于 2011-6-16 16:37:00 | 显示全部楼层
支持,学习。
发表于 2011-6-16 18:51:55 | 显示全部楼层
难得一见的楼猪,支持楼猪,顶楼猪!
发表于 2011-6-16 19:24:24 | 显示全部楼层
建议如下:
1, 竟然是多选,那么同一图块就一次性处理,而不是选择几个"X1"块就重复几次的"X1"块的改名或是无谓的回车
2, 或者: 竟然是多选,同一块名将所选到的"X1"块改成新名,未选到的"X1"块仍然保留?
3, "zoom"后再缩小"0.7x"便于观看,另"zoom" "o"的命令对cad2005之前的版本是无效的
4, 选择的块如果都在一起时,不能很直观的看到当前修改的块是哪个图元, "zoom" "o"后增加个效果线来美化下: grvecs  在图形屏幕上绘制多个矢量
5, 未选择时,程序最后加一句("command" "REDRAW")可抑制命令条上多一个空的命令的显示
命令:  RB
选择对象:
命令:
发表于 2011-6-16 21:25:43 | 显示全部楼层
变量“sk_flagrb1”看不出有多大的作用。。。。
 楼主| 发表于 2011-6-16 23:34:38 | 显示全部楼层
回复 啵浪鼓 的帖子

1、对于选择对象的重复处理是我没考虑到。呵呵。
主要我是图库归总重命名,一个块只有一个。
2、如果要实现你说的第二功能,程序完全不一样了,可以考虑。
3、zoom用是是06的自动。不然就只能自己写zoom了。
4、绘制屏幕矢量线,我考虑了,还没完成。
 楼主| 发表于 2011-6-16 23:36:48 | 显示全部楼层
回复 chengx2000 的帖子

这个是我想用来改变出错处理函数部分的命令是否执行。如果zoom没有执行放大处理,在出错还原的时候就不必返回上一个视口了。基本是实现了这个功能。。
发表于 2012-8-16 18:15:55 | 显示全部楼层
请问, 用组码 2 为啥 改不了块名?~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-25 00:35 , Processed in 0.207597 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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