乐筑天下

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

[编程交流] 删除点

[复制链接]

19

主题

59

帖子

40

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
95
发表于 2022-7-5 21:40:04 | 显示全部楼层 |阅读模式
Lisp需要删除插入块所在的点。
回复

使用道具 举报

7

主题

80

帖子

73

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 21:47:48 | 显示全部楼层
如果你能提供给我的朋友,快照肯定会有帮助。
回复

使用道具 举报

19

主题

59

帖子

40

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
95
发表于 2022-7-5 21:51:39 | 显示全部楼层
必须删除指定点
224009v61mwwep6tm7mpek.jpg
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 21:55:49 | 显示全部楼层
试试这个。
 
  1. Removed ...
回复

使用道具 举报

19

主题

59

帖子

40

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
95
发表于 2022-7-5 22:02:59 | 显示全部楼层
 
 
 
您的lisp不在本例中。点不是块的一部分。点与插入块重合。应删除此点。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 22:08:56 | 显示全部楼层
从你的回复中删除我的代码。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 22:11:40 | 显示全部楼层
请尝试以下代码:
  1. (defun c:delpoints ( / e i l p s x )
  2.    (if (setq s (ssget "_:L" '((0 . "INSERT,POINT"))))
  3.        (progn
  4.            (repeat (setq i (sslength s))
  5.                (setq e (ssname s (setq i (1- i)))
  6.                      x (entget e)
  7.                )
  8.                (if (= "INSERT" (cdr (assoc 0 x)))
  9.                    (setq l (cons (trans (cdr (assoc 10 x)) e 0) l))
  10.                    (setq p (cons (cons  (cdr (assoc 10 x)) e) p))
  11.                )
  12.            )
  13.            (foreach x p
  14.                (if (vl-some '(lambda ( y ) (equal (car x) y 1e-4)) l)
  15.                    (entdel (cdr x))
  16.                )
  17.            )
  18.        )
  19.    )
  20.    (princ)
  21. )
回复

使用道具 举报

19

主题

59

帖子

40

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
95
发表于 2022-7-5 22:16:19 | 显示全部楼层
对就是这样。杰出的可以用lisp在全球范围内工作。能够注册或选择块的名称。那么影响就越大。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 22:21:14 | 显示全部楼层
 
当然-更换:
  1. "_:L"

使用:
  1. "_X"

自动处理图形中的所有块和点。
 
但是,您可能希望向ssget过滤器列表中添加更多过滤器,例如仅处理当前布局中的块/点,或仅处理特定名称的块等。您可以通过将第一行更改为:
  1.     (if (setq s (ssget "_X" (list '(0 . "INSERT,POINT") '(2 . "[color="red"]YourBlockName[/color]") (if (= 1 (getvar 'cvport)) (cons 410 (getvar 'ctab)) '(410 . "Model")))))
回复

使用道具 举报

19

主题

59

帖子

40

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
95
发表于 2022-7-5 22:27:06 | 显示全部楼层
谢谢李。随着代码的变化,lisp可以完美地工作。换了第一行,什么也没发生。附上更改后的代码。
  1. (defun c:delpoints ( / e i l p s x )
  2.    (if (setq s (ssget "_X" (list '(0 . "INSERT,POINT") '(2 . "TK414S3") (if (= 1 (getvar 'cvport)) (cons 410 (getvar 'ctab)) '(410 . "Model")))))
  3.        (progn
  4.            (repeat (setq i (sslength s))
  5.                (setq e (ssname s (setq i (1- i)))
  6.                      x (entget e)
  7.                )
  8.                (if (= "INSERT" (cdr (assoc 0 x)))
  9.                    (setq l (cons (trans (cdr (assoc 10 x)) e 0) l))
  10.                    (setq p (cons (cons  (cdr (assoc 10 x)) e) p))
  11.                )
  12.            )
  13.            (foreach x p
  14.                (if (vl-some '(lambda ( y ) (equal (car x) y 1e-4)) l)
  15.                    (entdel (cdr x))
  16.                )
  17.            )
  18.        )
  19.    )
  20.    (princ)
  21. )
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-8-18 18:36 , Processed in 0.725519 second(s), 75 queries .

© 2020-2025 乐筑天下

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