乐筑天下

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

[编程交流] 用点替换块

[复制链接]
pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 10:17:12 | 显示全部楼层
 
我之前对此感到内疚:
 
--->
^
 
回复

使用道具 举报

40

主题

92

帖子

52

银币

后起之秀

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

铜币
200
发表于 2022-7-6 10:17:28 | 显示全部楼层
我很感激;但不是所有的块,我只需要选定的(按层)块。
 
谢谢
回复

使用道具 举报

62

主题

466

帖子

404

银币

后起之秀

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

铜币
310
发表于 2022-7-6 10:21:33 | 显示全部楼层
  1. (defun ss_id ( ss / id lst )
  2. (if (eq 'PICKSET (type ss))
  3.    (repeat (setq id (sslength ss))
  4.      (setq lst
  5.        (cons
  6.          (ssname ss (setq id (1- id)))
  7.          lst
  8.        )
  9.      )
  10.    )
  11. )
  12. lst
  13. )
  14. (defun c:test ( / ss )
  15. (if
  16.    (setq ss
  17.      (ss_id (ssget (list (cons 0 "insert"))))
  18. [color=red];|   (ssget (list (cons 0 "insert") (cons 8 "0") ))
  19.        will only select blocks in "0" layer |;[/color]
  20.    )
  21.    (foreach x ss
  22.      (entmake
  23.        (list
  24.          (cons 0 "point")
  25.          (cons 8 (getvar 'clayer))
  26.          (assoc 10 (entget x))
  27.        )
  28.      )
  29.      (entdel x)
  30.    )
  31. )
  32. (princ)
  33. )
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:23:52 | 显示全部楼层
丹,
 
请注意,您可以通过只迭代一次SelectionSet来提高代码的效率:
 
  1. (defun c:ins2pts ( / ss e i )
  2. (if (setq ss (ssget "_:L" '((0 . "INSERT"))))
  3.    (repeat (setq i (sslength ss)) (setq e (ssname ss (setq i (1- i))))
  4.      (if
  5.        (entmakex
  6.          (list
  7.            (cons 0 "POINT")
  8.            (assoc 8 (entget e))
  9.            (cons 10 (trans (cdr (assoc 10 (entget e))) e 0))
  10.            (assoc 210 (entget e))
  11.          )
  12.        )
  13.        (entdel e)
  14.      )
  15.    )
  16. )
  17. (princ)
  18. )
回复

使用道具 举报

40

主题

92

帖子

52

银币

后起之秀

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

铜币
200
发表于 2022-7-6 10:29:47 | 显示全部楼层
你好
但我需要上面的一层选择,因为我有不同的块名
 
谢谢
amr公司
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 10:30:45 | 显示全部楼层
 
你说的分层是什么意思?
回复

使用道具 举报

62

主题

466

帖子

404

银币

后起之秀

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

铜币
310
发表于 2022-7-6 10:34:41 | 显示全部楼层
 
没错,但是像这样的小任务,你永远不会注意到速度上的差异。我发现这样的设置更容易快速编程
 
@卡德马拉奥
请参阅我在上面代码中的红色评论。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 10:38:36 | 显示全部楼层
小调整。。。
  1. (defun c:ins2pts (/ ss i e d)
  2. (if (setq ss (ssget "_:L" '((0 . "INSERT"))))
  3.    (repeat (setq i (sslength ss))
  4.      (if (entmakex (list '(0 . "POINT")
  5.                          (assoc 8 (setq d (entget (setq e (ssname ss (setq i (1- i)))))))
  6.                          (cons 10 (trans (cdr (assoc 10 d)) e 0))
  7.                          (assoc 210 d)
  8.                    )
  9.          )
  10.        (entdel e)
  11.      )
  12.    )
  13. )
  14. (princ)
  15. )
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:42:29 | 显示全部楼层
有人很无聊。。。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 10:44:24 | 显示全部楼层
不,刚才看到了这个线程,我想我会详细介绍一下您的示例,以删除同一对象上的多个实体转储。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-7 02:56 , Processed in 0.396166 second(s), 70 queries .

© 2020-2025 乐筑天下

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