乐筑天下

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

[编程交流] 选择所有打开的对象

[复制链接]

31

主题

170

帖子

139

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
155
发表于 2022-7-6 10:59:18 | 显示全部楼层 |阅读模式
大家好,我需要帮助。
 
我试图做一个简单的操作,将实体选择指定的层上的所有对象添加到当前选择集,这样我就可以根据需要对它们进行操作。
 
到目前为止,我得到的是:
 
  1. (defun c:qs ()
  2. (setq obj (entsel "\nSelect object on desired layer: "))
  3. (while (not obj) (setq obj (entsel "\nNo object selected, try again: ")))
  4. (setq ent (entget (car obj))
  5. lay (cdr (assoc 8 ent)))
  6. (ssget "_X" '((8 . lay)))
  7. (princ (strcat "\nEverything on layer " lay " selected."))
  8. (princ))

 
但无论我多么努力,我总是会出错。
 
任何帮助都将不胜感激。
回复

使用道具 举报

31

主题

170

帖子

139

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
155
发表于 2022-7-6 11:07:53 | 显示全部楼层
因此,我更进一步:
 
  1. (defun c:qs (/ obj ent lay)
  2. (setq obj (entsel "\nSelect object on desired layer: "))
  3. (while (not obj) (setq obj (entsel "\nNo object selected, try again: ")))
  4. (setq ent (entget (car obj))
  5. lay (cdr (assoc 8 ent)))
  6. (ssget "_X" (list (cons 8 lay)))
  7. (princ (strcat "\nEverything on layer " lay " selected."))
  8. (princ))

 
但它不会将所有内容添加到当前选择集,就像夹点出现时一样。
 
有什么想法吗?
回复

使用道具 举报

31

主题

170

帖子

139

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
155
发表于 2022-7-6 11:15:14 | 显示全部楼层
没关系,找到了:
 
http://www.cadtutor.net/forum/showthread.php?t=30154
 
然后提出了这个:
 
  1. (defun c:qs (/ obj ent lay)
  2. (setq obj (entsel "\nSelect object on desired layer: "))
  3. (while (not obj) (setq obj (entsel "\nNo object selected, try again: ")))
  4. (setq lay (cdr (assoc 8 (entget (car obj)))))
  5. (sssetfirst nil (ssget "_X" (list (cons 8 lay))))
  6. (princ (strcat "\nEverything on layer " lay " selected."))
  7. (princ))
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 11:20:25 | 显示全部楼层
不错,如果你想的话,可以把它缩短成这个
 
  1. (defun c:qs ( / e )
  2. (while (not (setq e (car (entsel))))
  3.    (princ "\n** Come on, you gotta do better than that **"))
  4. (sssetfirst nil (ssget "_X" (list (assoc 8 (entget e)))))
  5. (princ))
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 11:32:15 | 显示全部楼层
你可能会发现这个链接很有趣。
回复

使用道具 举报

31

主题

170

帖子

139

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
155
发表于 2022-7-6 11:34:57 | 显示全部楼层
很酷,谢谢。
回复

使用道具 举报

31

主题

170

帖子

139

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
155
发表于 2022-7-6 11:39:47 | 显示全部楼层
你知道我该如何改变这一点吗?如果我已经选择了实体,它会将所选对象图层上的所有内容添加到选择集中吗?这样我可以多次运行它,并在多个层上选择所有内容。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 11:51:20 | 显示全部楼层
为什么不呢?
 
  1. (defun c:SA (/ pf ent ss)
  2. ;; Alan J. Thompson, 06.17.10
  3. (setq pf (ssget "_I"))
  4. (if (and (setq ent (car (entsel "\nSelect on layer: ")))
  5.           (setq ss (ssget "_X"
  6.                           (list (assoc 8 (entget ent))
  7.                                 (if (eq 2 (getvar "cvport"))
  8.                                   (cons 410 "Model")
  9.                                   (cons 410 (getvar "ctab"))
  10.                                 )
  11.                           )
  12.                    )
  13.           )
  14.      )
  15.    ((lambda (i)
  16.       (if (eq (type pf) 'PICKSET)
  17.         (while (setq e (ssname pf (setq i (1+ i))))
  18.           (ssadd e ss)
  19.         )
  20.       )
  21.       (sssetfirst nil ss)
  22.     )
  23.      -1
  24.    )
  25. )
  26. (princ)
  27. )
回复

使用道具 举报

31

主题

170

帖子

139

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
155
发表于 2022-7-6 11:56:06 | 显示全部楼层
很有魅力,非常感谢
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 12:04:48 | 显示全部楼层
不客气。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 11:40 , Processed in 0.371797 second(s), 72 queries .

© 2020-2025 乐筑天下

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