乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 89|回复: 4

[编程交流] 需要有关检查select的帮助

[复制链接]

1

主题

3

帖子

2

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 08:40:55 | 显示全部楼层 |阅读模式
您好,我需要一些关于如何检查选择集是否包含“擦除”实体的帮助?
如果是(draworder“back”),则继续执行下一个命令字符串。
如果没有,则只需继续发送一些警报消息。
 
请看一下我的简单套路
 
  1. ;this routine will let the user select multiple object
  2. ;& PASTEBLOCK the selection - 112011
  3. ;-
  4. (defun c:pblk (/ bp opt selx)
  5. ;-
  6. (princ "Select basepoint: ")
  7. (setq bp (getpoint))
  8. (setq opt "_b")
  9. ;-
  10. (setq selx (ssget))
  11. ;-
  12. [color="blue"];check the selection set "selx" if there is any "WIPEOUT" entity selected
  13. ;if "wipeout" is/ are PRESENT (command:"_.draworder" "wipeout" opt)
  14. ;(alert "wipeout found -> sent to back")
  15. ;proceed to next
  16. ;if wipeout is/ are NOT found
  17. ;(alert "wipeout NOT found")
  18. ;proceed to next[/color]
  19. ;-
  20. (command "_.copybase" bp selx "")
  21. (command "_.pasteblock" bp)
  22. (command "_.erase" "previous" "")
  23. (princ)
  24. );end defun
  25. ;;;

 
(蓝色是我希望可以输入必要代码的地方)
 
im使用autocad 2009
 
提前感谢
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-6 09:06:21 | 显示全部楼层

 
  1. (defun c:TesT (/ ss i sn)
  2. ;; Tharwat 16. Nov. 2011 ;;
  3. (if (setq ss (ssget '((0 . "WIPEOUT"))))
  4.    (progn
  5.      (repeat (setq i (sslength ss))
  6.        (setq sn (ssname ss (setq i (1- i))))
  7.        (command "_.draworder" sn "" "_b")
  8.      )
  9.      (alert (strcat "wipeout found -> sent to back"
  10.                     "\t"
  11.                     "("
  12.                     (itoa (sslength ss))
  13.                     ")"
  14.             )
  15.      )
  16.    )
  17.    (alert "wipeout NOT found")
  18. )
  19. (princ)
  20. )
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
438
发表于 2022-7-6 09:21:12 | 显示全部楼层
这就是你的目标吗?为什么要将对象放置在匿名块中?
 
  1. (defun c:Test (/ ss pt ss2)
  2. (if (and (setq ss (ssget "_:L")) (setq pt (getpoint "\nSpecify basepoint: ")))
  3.    (progn (if (setq ss2 (ssget "_P" '((0 . "WIPEOUT"))))
  4.             (command "_.draworder" ss2 "" "_back")
  5.           )
  6.           (command "_.copybase" "_non" pt ss "" "_.pasteblock" "_non" pt "_.erase" ss "")
  7.    )
  8. )
  9. (princ)
  10. )
回复

使用道具 举报

1

主题

3

帖子

2

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 09:26:42 | 显示全部楼层
@tharwat->我最初的想法与您使用(setq ss(ssget’((0。“WIPEOUT”))的想法类似,但我不知道如何将其融入到_x的其余部分中。我在上面贴了一个例行公事,你的提示比我的酷多了。。非常感谢。
 
@alanjt->是的,我知道不正确地命名一个块不是一个好的做法,但我现在工作的地方并不太在乎它,速度就是。
至于你做的常规,,,这就是我要找的,非常感谢你,我没有意识到ssget仍然是关键,我最初尝试了car/crd,但我真的无法理解(仍然是一个Lisp程序的新手)。
 
谢谢你们俩
 
哦,艾伦。告诉我我可以在哪里放置提示,通知用户在例程完成其魔术后立即在命令行中找到“擦除”并处理它?
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
438
发表于 2022-7-6 09:47:50 | 显示全部楼层
哇!
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-7 09:01 , Processed in 0.391806 second(s), 62 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表