乐筑天下

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

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

[复制链接]

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 06:43:22 | 显示全部楼层
 
干杯jdiala
 
 
对1e-8=1x10^-8=0.00000001
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 06:45:19 | 显示全部楼层
好啊谢谢
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 06:51:01 | 显示全部楼层
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 06:51:19 | 显示全部楼层
Oh , It doesn't throw any error but it only keep circles on locked layers highlighted . nothing's more .
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 06:55:14 | 显示全部楼层
 
The point I was making is that since entdel will never return an exception when the entity argument cannot be erased, the vl-catch-all-apply statement in your code is redundant.
回复

使用道具 举报

0

主题

99

帖子

99

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-6 06:58:23 | 显示全部楼层
How about this. It only delete circle/s inside of a circle as long as they have a common center point.
 
  1. ;;; jdiala 09-15-13 ;;;(defun C:delcir (/ e l ss sss i x s1 s2)(defun LM:Unique ( l ) ;;;Lee Mac;;;   (if l (cons (car l) (LM:Unique (vl-remove (car l) (cdr l))))))(if (and   (setq e  (car (entsel))         l  (cdr (assoc 8 (entget e)))         ss (ssget "_X" (list (cons 0 "CIRCLE") (cons 8 l)))   )   (= "CIRCLE" (cdr (assoc 0 (entget e)))) )  (foreach x   (LM:Unique     (repeat        (setq i (sslength ss))         (setq x (cons (cdr (assoc 10 (entget (ssname ss (setq i (1- i)))))) x))     )   )  (setq sss (ssget "_X" (list (cons 0 "CIRCLE") (cons 8 l) (cons 10 x))))  (while (> (sslength sss) 1)    (if       (<         (cdr (assoc 40 (entget (setq s1 (ssname sss 0)))))        (cdr (assoc 40 (entget (setq s2 (ssname sss 1)))))     )     (progn (ssdel s1 sss)(entdel s1))      (progn (ssdel s2 sss)(entdel s2))    ))) (princ)))
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 07:01:50 | 显示全部楼层
 
Nice idea jdiala
 
Here is another possible way to write it, to avoid repeated selection set retrieval:
  1. ([color=BLUE]defun[/color] c:delcir ( [color=BLUE]/[/color] e i l s )   ([color=BLUE]if[/color]       ([color=BLUE]and[/color]           ([color=BLUE]setq[/color] e ([color=BLUE]car[/color] ([color=BLUE]entsel[/color] [color=MAROON]"\nSelect Circle: "[/color])))           ([color=BLUE]=[/color] [color=MAROON]"CIRCLE"[/color] ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 0 ([color=BLUE]setq[/color] e ([color=BLUE]entget[/color] e)))))       )       ([color=BLUE]foreach[/color] a           (LM:groupbyfunction               ([color=BLUE]repeat[/color]                   ([color=BLUE]setq[/color] i                       ([color=BLUE]sslength[/color]                           ([color=BLUE]setq[/color] s                               ([color=BLUE]ssget[/color] [color=MAROON]"_X"[/color]                                   ([color=BLUE]list[/color] '(0 . [color=MAROON]"CIRCLE"[/color]) ([color=BLUE]assoc[/color] 8 e) ([color=BLUE]assoc[/color] 410 e))                               )                           )                       )                   )                   ([color=BLUE]setq[/color] e ([color=BLUE]entget[/color] ([color=BLUE]ssname[/color] s ([color=BLUE]setq[/color] i ([color=BLUE]1-[/color] i))))                         l ([color=BLUE]cons[/color] ([color=BLUE]list[/color] ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 10 e)) ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 40 e)) ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] -1 e))) l)                   )               )               ([color=BLUE]lambda[/color] ( a b ) ([color=BLUE]equal[/color] ([color=BLUE]car[/color] a) ([color=BLUE]car[/color] b) 1e-)           )           ([color=BLUE]foreach[/color] b ([color=BLUE]cdr[/color] ([color=BLUE]vl-sort[/color] a '([color=BLUE]lambda[/color] ( a b ) ([color=BLUE]>[/color] ([color=BLUE]cadr[/color] a) ([color=BLUE]cadr[/color] b)))))               ([color=BLUE]entdel[/color] ([color=BLUE]last[/color] b))           )       )   )   ([color=BLUE]princ[/color]))[color=GREEN];; Group By Function  -  Lee Mac[/color][color=GREEN];; Groups items considered equal by a given predicate function[/color]([color=BLUE]defun[/color] LM:GroupByFunction ( lst fun [color=BLUE]/[/color] tmp1 tmp2 x1 )   ([color=BLUE]if[/color] ([color=BLUE]setq[/color] x1 ([color=BLUE]car[/color] lst))       ([color=BLUE]progn[/color]           ([color=BLUE]foreach[/color] x2 ([color=BLUE]cdr[/color] lst)               ([color=BLUE]if[/color] (fun x1 x2)                   ([color=BLUE]setq[/color] tmp1 ([color=BLUE]cons[/color] x2 tmp1))                   ([color=BLUE]setq[/color] tmp2 ([color=BLUE]cons[/color] x2 tmp2))               )           )           ([color=BLUE]cons[/color] ([color=BLUE]cons[/color] x1 ([color=BLUE]reverse[/color] tmp1)) (LM:GroupByFunction ([color=BLUE]reverse[/color] tmp2) fun))       )   ))([color=BLUE]princ[/color])
回复

使用道具 举报

0

主题

99

帖子

99

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-6 07:06:27 | 显示全部楼层
Nice code Lee.
 
BTW. That is 1e-8?
 
  1. (lambda ( a b ) (equal (car a) (car b) [color="#ff8c00"]1e-8[/color]))
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 07:08:27 | 显示全部楼层
 
Cheers jdiala
 
 
Yes; 1e-8 = 1x10^-8 = 0.00000001
回复

使用道具 举报

0

主题

99

帖子

99

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-6 07:11:16 | 显示全部楼层
ok. Thanks!
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

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

© 2020-2025 乐筑天下

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