乐筑天下

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

[编程交流] 通过R选择圆的例程

[复制链接]

6

主题

122

帖子

118

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-6 06:09:58 | 显示全部楼层 |阅读模式
我们收到了另一个承包商的一些图纸,他们在发送给我们之前分解了整个图纸(谢谢)。
有一堆带有内部同心圆的圆使得测试图对于这些符号来说太暗。
单个图形中有数百个分解符号。起草人希望删除内圈。
我给大家展示了QSELECT,但这对他们来说似乎太难了(对他们来说太多了)。我在谷歌上快速搜索了一下,没有找到任何现有的例程。
有没有人有一个例程可以选择用户特定半径或直径的所有圆?
 
谢谢
~格雷格
071004ldvdnx0sbazu7dbb.jpg
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 06:15:51 | 显示全部楼层
这应该选择直径值为100的圆。
 
  1. (sssetfirst nil (ssget "_X" (list '(0 . "CIRCLE") (cons 40 100.))))
回复

使用道具 举报

0

主题

99

帖子

99

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-6 06:19:28 | 显示全部楼层
过滤掉图层名,以防有其他不想删除的圆。
 
  1. (defun C:delcir (/ l e ss r)
  2. (if
  3. (and
  4.    (setq e (car (entsel))
  5.          l (cdr (assoc 8 (entget e)))
  6.          r  (cdr (assoc 40(entget e)))
  7.    )
  8.    (setq ss (ssget "_X" (list (cons 0  "CIRCLE") (cons 8 l) (cons 40 r))))
  9. )
  10. (command "_.erase" ss "")
  11. )
  12. )
回复

使用道具 举报

6

主题

122

帖子

118

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-6 06:21:22 | 显示全部楼层
谢谢你们的回复。
 
jdiala-这将非常适合他们的需要。
 
非常感谢
~格雷格
回复

使用道具 举报

0

主题

99

帖子

99

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-6 06:24:43 | 显示全部楼层
你的欢迎
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 06:27:00 | 显示全部楼层
 
请注意,如果用户未能选择对象,则会出错
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 06:32:04 | 显示全部楼层
我希望选定的任何一个圆都不会位于锁定层上。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 06:33:37 | 显示全部楼层
还有一个选择:
  1. (defun c:cdel ( / e i s )
  2.    (if
  3.        (and
  4.            (setq e (car (entsel "\nSelect the outermost circle: ")))
  5.            (= "CIRCLE" (cdr (assoc 0 (setq e (entget e)))))
  6.        )
  7.        (if
  8.            (setq s
  9.                (ssget "_X"
  10.                    (list
  11.                       '(00 . "CIRCLE")
  12.                       '(-4 . "<")
  13.                        (assoc 040 e)
  14.                        (assoc 008 e)
  15.                        (assoc 410 e)
  16.                    )
  17.                )
  18.            )
  19.            (repeat (setq i (sslength s))
  20.                (entdel (ssname s (setq i (1- i))))
  21.            )
  22.            (princ "\nNo smaller circles found.")
  23.        )
  24.    )
  25.    (princ)
  26. )
回复

使用道具 举报

0

主题

99

帖子

99

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-6 06:35:53 | 显示全部楼层
 
好主意jdiala
 
以下是另一种可能的写入方法,以避免重复选择集检索:
  1. (defun c:DelCir (/ s ss e i)
  2. (if (and (progn (princ "\n Select outside Circle to delete smaller")
  3.             (setq s (ssget "_+.:S:E" '((0 . "CIRCLE"))))
  4.             )
  5.           (setq ss (ssget "_X" (list '(0 . "CIRCLE") '(-4 . "<") (assoc 40 (setq e (entget (ssname s 0)))) (assoc 410 e))))
  6.           )
  7.    (repeat (setq i (sslength ss))
  8.      (vl-catch-all-apply 'entdel (list (ssname ss (setq i (1- i)))))
  9.      )
  10.    )
  11. (princ)
  12. )
  13. (vl-load-com)
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 06:40:14 | 显示全部楼层
李代码不错。
 
顺便说一句,那是1e-8?
 
  1. ;;; jdiala 09-15-13 ;;;
  2. (defun C:delcir (/ e l ss sss i x s1 s2)
  3. (defun LM:Unique ( l ) ;;;Lee Mac;;;
  4.    (if l (cons (car l) (LM:Unique (vl-remove (car l) (cdr l)))))
  5. )
  6. (if
  7. (and
  8.    (setq e  (car (entsel))
  9.          l  (cdr (assoc 8 (entget e)))
  10.          ss (ssget "_X" (list (cons 0 "CIRCLE") (cons 8 l)))
  11.    )
  12.    (= "CIRCLE" (cdr (assoc 0 (entget e))))
  13. )
  14. (foreach x
  15.    (LM:Unique
  16.      (repeat
  17.        (setq i (sslength ss))
  18.          (setq x (cons (cdr (assoc 10 (entget (ssname ss (setq i (1- i)))))) x))
  19.      )
  20.    )
  21.   (setq sss (ssget "_X" (list (cons 0 "CIRCLE") (cons 8 l) (cons 10 x))))
  22.   (while (> (sslength sss) 1)
  23.     (if
  24.       (<
  25.         (cdr (assoc 40 (entget (setq s1 (ssname sss 0)))))
  26.         (cdr (assoc 40 (entget (setq s2 (ssname sss 1)))))
  27.      )
  28.      (progn (ssdel s1 sss)(entdel s1))
  29.      (progn (ssdel s2 sss)(entdel s2))
  30.     )
  31. )
  32. )
  33. (princ)
  34. )
  35. )
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 18:29 , Processed in 0.462041 second(s), 75 queries .

© 2020-2025 乐筑天下

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