明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1848|回复: 6

如何用lsp 选择一批名称相似的图块?

[复制链接]
发表于 2011-9-10 11:34:50 | 显示全部楼层 |阅读模式
一批相似名称的图块如何全部选择,图块名为ABC_1,ABC_2,ABC_4,ABC_7......CREW_AR_1,CREW_AR_3,CREW_AR_5,CREW_AR_45...
发表于 2011-9-10 14:29:33 | 显示全部楼层
(ssget "X" '((0 . "INSERT")(2 . "*@_#*")))
发表于 2011-9-10 15:08:29 | 显示全部楼层
本帖最后由 yjr111 于 2011-9-11 14:46 编辑

  1. (defun c:xz()
  2. (setvar "cmdecho" 0)
  3. (setq n 0)
  4. (setq sss(ssadd ))
  5. (SETQ STR (GETSTRING "输入要选择的块名<支持通配符>:"))
  6. (prompt "通配符如:ABC*,则查找所有含ABC的块")
  7. (setq ss (ssget '((0 . "INSERT"))))
  8. (repeat (sslength ss)
  9. (setq bb(SSNAME ss n))
  10. (setq cc(ENTGET bb))
  11. (setq s1(CDR(ASSOC 2 cc)))
  12. (if(WCMATCH S1 STR)
  13. (progn
  14. (setq sss(ssadd bb sss))
  15. ;;;    (command "select" sss "")用此句命令则选择的图元无法看到哪些被选取
  16. ;;;    (command "select" sss )用此句命令虽看到被选取的图元,
  17. ;;;    但无法用其他命令修改图元,右键一回车就没了
  18. ;;;    (redraw bb 3);;;;;;;;;;;;;;水平有限,退而求其次,只能高亮图元了
  19. )
  20. )
  21. (setq n(+ n 1))
  22. )
  23. (princ (strcat "共找到" (rtos (sslength sss) 2 0) "个"))
  24. (princ)
  25. )
已经解决问题:


本帖子中包含更多资源

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

x
 楼主| 发表于 2011-9-10 16:22:42 | 显示全部楼层
本帖最后由 lxy_gy 于 2011-9-10 16:28 编辑

非常谢谢两位高手,对lisp不熟悉,直接用yjr111兄的了,试了下能用,但有两个问题
1.块名不支持中文的(不能输入中文),如门_1、门_2、门_5.......;
2.选集没有保持,不能执行后续操作,如拷贝、移动等操作
发表于 2011-9-10 17:20:15 | 显示全部楼层
本帖最后由 yjr111 于 2011-9-11 16:12 编辑

1、选集的问题你可以在命令行输入"select" "!sss“即可;(可以输入copy或其它修改命令后出现选择对象提示后再输入“!sss")
2、中文我没测试,待会看看

中文名我2006测试没问题,不知道你是什么版本

已经在楼上更新,2006测试完美!
 楼主| 发表于 2011-9-10 18:55:09 | 显示全部楼层
本帖最后由 lxy_gy 于 2011-9-10 18:55 编辑

我的是2011 x64中文版的
发表于 2011-9-14 19:40:55 | 显示全部楼层
本帖最后由 yjr111 于 2011-9-14 19:42 编辑
caoyin 发表于 2011-9-10 14:29
(ssget "X" '((0 . "INSERT")(2 . "*@_#*")))

版主的高见竟一下子没看懂,今看了半天书,自己写了一个简洁的选择相似块的程序,发现原来版主已经给出答案,真是惭愧!
  1. (defun c:sk()  (setvar "cmdecho" 0)  (setq str (getstring "\n 请输入要查询的块名《支持通配符》:"))  (sssetfirst  (setq ss (ssget "x" (LIST (CONS 0  "INSERT")  (cons 2 str))))ss)     (if ss          (princ (strcat "共找到了" (rtos (sslength ss) 2 0) "个" str))     (princ (strcat "没有找到你要找的块:" str ))          )  (princ)  )

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

本版积分规则

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

GMT+8, 2025-7-25 05:33 , Processed in 0.153128 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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