乐筑天下

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

[编程交流] 通过entsel获取点

[复制链接]

23

主题

89

帖子

66

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
115
发表于 2022-7-6 07:53:09 | 显示全部楼层 |阅读模式
大家好,
 
可以将(entsel)用作(getpoint)吗。我的目标是选择一个块并得到它的插入点,如果它为零或我点击一个空白区域,它将只得到我点击并错过的点。非常感谢。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 08:04:37 | 显示全部楼层
使用entsel选择对象,(cdr(assoc 10(entget object));
 
如果您希望在“错过”时提示继续
 
  1. (if (not (while
  2.        (progn (setvar 'errno 0) (setq en (car (entsel)))
  3.            (cond
  4.                (   (= 7 (getvar 'errno))
  5.                    (princ "\nMissed, try again.")
  6.                )
  7.                (   (eq 'ename (type en))
  8.                    (if (not (eq (cdr (assoc 0 (entget en))) "INSERT"))
  9.                        (princ "\nInvalid Object Selected.")
  10.                    )
  11.                )
  12.            )
  13.        )
  14.     )
  15. )
  16. (cdr (assoc 10 (entget en))))

 
Lee Mac等人
回复

使用道具 举报

23

主题

89

帖子

66

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
115
发表于 2022-7-6 08:09:55 | 显示全部楼层
谢谢Pbe,但这不是我的目标。如果我错过了,那么我只需要知道我点击的地方。
 
它要么得到一个块的插入点,要么得到我单击时错过的点。
 
 
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 08:16:34 | 显示全部楼层
为了完整性起见,获取Entsel返回的列表中的第二项是选择点,这与块的插入点不同。可以很容易地评估一个块是否由Entsel返回,如果是,则返回插入点,如果不是,则返回选择点。
回复

使用道具 举报

0

主题

375

帖子

385

银币

限制会员

铜币
-7
发表于 2022-7-6 08:30:20 | 显示全部楼层
也许是这个
  1. (defun sel_block ( / p1 s e)
  2. (if
  3.    (setq p1 (getpoint "\nSelect block: "))
  4.    (if
  5.      (setq s (nentselp p1))
  6.      (if
  7.        (and
  8.          (eq (type (setq e (car (cadddr s)))) 'ENAME)
  9.          (eq (cdr (assoc 0 (entget e))) "INSERT")
  10.          )
  11.        (cdr (assoc 10 (entget e)))
  12.        (progn
  13.          (princ "\nNot a block")
  14.          (sel_block)
  15.          )
  16.        )
  17.      p1
  18.      )
  19.    )
  20. )
  21. (defun C:TEST ()
  22. (sel_block)
  23. )
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 08:32:22 | 显示全部楼层
 
关于entsel,当你“错过”时,你什么也得不到。
但是,您可以使用grread
 
  1. (if (or (setq ent (entsel))
  2.        (setq gr   (grread t 15 0)
  3.              code (car gr)))
  4.      (setq pt (if  ent
  5.                     (cdr (assoc 10 (entget (Car ent))))
  6.                     (cadr gr)))
  7.          )

 
OOPS
回复

使用道具 举报

23

主题

89

帖子

66

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
115
发表于 2022-7-6 08:38:22 | 显示全部楼层
谢谢Stefan和pBe,你的代码正是我想要的。我花了半天的时间来解决这个问题,但毫无结果。再次感谢!
 
pBe,
只是想知道,“code”变量的目的是什么?
 
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 08:52:34 | 显示全部楼层
 
凉豆
 
不要在意。这是我复制片段的例程的剩余部分。
无论如何,仅供参考
(=5代码);;鼠标已被拖动
(=2代码);;键盘已按下
(=3代码);;鼠标左键单击
 
HTH公司
回复

使用道具 举报

23

主题

89

帖子

66

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
115
发表于 2022-7-6 08:55:12 | 显示全部楼层
嗯很好,再次感谢。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-9 21:06 , Processed in 0.497593 second(s), 81 queries .

© 2020-2025 乐筑天下

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