找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 4019|回复: 17

[讨论]:如何实现ENTSEL的左键点选循环,右键取消

[复制链接]
发表于 2003-5-20 11:02:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
如何实现ENTSEL的左键点选循环(点选循环即,如果没点选到物体一直循环到选中为止),右键取消,而不是非要用ESC取消
SSGET就很好,选不中自动循环,右键取消
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2003-5-20 11:27:29 | 显示全部楼层
是不是这样的:
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-5-20 12:04:37 | 显示全部楼层
我的意思是:在用ENTSEL函数选择物体时候,如果你没选中物体则返回NIL后推出,现在想要的是如果无意中没选中物体,则重新返回ENTSEL进行选择,如果突然不想用这个命令了,点右键推出,现在如果用WHILE循环必须用ESC推出,不太方便,想实现右键退出,左键点选循环
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-5-20 14:15:16 | 显示全部楼层
用LISP好像难以实现你的要求,对ENTSEL空选和右键返回的都是NIL,不好判断.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-5-20 14:31:07 | 显示全部楼层
可能的思路:
使用grread代替entsel,获得返回值之后,如是右健返回空
如是左健,再自动执行一次(nentselp (getvar "lastpoint")),如果
选中实体,再判断实体,否则,保持循环

我没有测试,仅作参考
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-5-20 17:09:33 | 显示全部楼层
最初由 snsj 发布
[B]我的意思是:在用ENTSEL函数选择物体时候,如果你没选中物体则返回NIL后推出,现在想要的是如果无意中没选中物体,则重新返回ENTSEL进行选择,如果突然不想用这个命令了,点右键推出,现在如果用WHILE循环必须用ESC?.. [/B]

我曾经在论坛中发过一个叫“全新的ENTSEL”,可以稍作修改达到你的目的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2003-5-20 18:50:11 | 显示全部楼层
最初由 snsj 发布
[B]我的意思是:在用ENTSEL函数选择物体时候,如果你没选中物体则返回NIL后推出,现在想要的是如果无意中没选中物体,则重新返回ENTSEL进行选择,如果突然不想用这个命令了,点右键推出,现在如果用WHILE循环必须用ESC?.. [/B]

是这个吗?


  1. <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="700" id="AutoNumber1" height="498">
  2.   <tr>
  3.     <td width="100%" height="489">
  4.       <iframe name="I1" width="100%" height="100%" src="http://www.mjtd.com/function/alisp/024.htm">
  5. 浏览器不支持嵌入式框架或配置为不显示嵌入式框架
  6.       </iframe>
  7.     </td>
  8.   </tr>
  9. </table>
复制代码
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-5-20 19:15:07 | 显示全部楼层
用entsel看来是没招了,用grread也会有无穷烦恼。
建议你用getpoint,有点再判断是否选中合适的物体,无点(右键)退出,用while循环。
不过既然你觉得ssget好用,何不直接用?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2003-5-20 19:21:24 | 显示全部楼层
最初由 cy956 发布
[B]用entsel看来是没招了,用grread也会有无穷烦恼。
建议你用getpoint,有点再判断是否选中合适的物体,无点(右键)退出,用while循环。
不过既然你觉得ssget好用,何不直接用? [/B]


论坛以前讨论过的.

点右键退出还是点左键空选退出, 查看错误码errno, 如果为7 则是左键空选退出, 如果为52, 则是右键退出.

利用上面原理,写个循环处理程序很容易了吧.

参考下:

  1. <normalfont>
  2. (setq tf t)
  3. (while tf
  4.    (setvar "errno" 0)
  5.    (setq e (entsel "\rPick Object<鼠标右键退出>:"))
  6.     (if (/= (getvar "errno") 7)
  7.       (setq tf nil)
  8.    )
  9. )
  10. (if e  ;;如果选了实体,进行处理
  11.   (progn
  12.    ....
  13.   )
  14. )     
  15. </normalfont>


写成一个通用函数是:
  1. <normalfont>
  2. (defun $XDLSP_Entsel (prompt / tf e ret)
  3.   (setq tf t)
  4.   (while tf
  5.     (setvar "errno" 0)
  6.     (setq e (entsel prompt))
  7.     (if (/= (getvar "errno") 7)
  8.       (setq tf nil)
  9.     )
  10.   )
  11.   e
  12. )
  13. </normalfont>


用法:
  1. <normalfont>

  2. (if (setq e ($XDLSP_Entsel "\r请拾取实体<回车或右键退出>:"))
  3.    (progn
  4.      ....
  5.   )
  6. )
  7. </normalfont>
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2003-5-20 20:15:07 | 显示全部楼层
我是利用关键字空格与自循环实现,这是我在论坛贴的文章“Autolisp编程心得”的一个例子:

  1. (defun ett_ct()
  2.   (initget "C  ")                                         ;关键字“C”及空格
  3.   (setq s0 (entsel "\n设置颜色C / 选取文本:"))
  4.   (cond
  5.     ( (= s0 "C") (ett_col))                               ;转设置颜色子函数
  6.     ( (= s0 "") nil)                                      ;空格退出
  7.     ( (and (= (type s0) 'LIST)                            ;选择实体
  8.            (= (cdr (assoc 0 (entget (car s0)))) "TEXT")   ;判别文本
  9.       )
  10.       ...                                                 ;操作内容
  11.       (ett_ct)                                            ;编辑后返回选择
  12.     )
  13.     (t (ett_ct))                                          ;空选返回选择
  14.   )
  15. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-5-20 20:52:13 | 显示全部楼层
我的是:
(while (= nil (entsel "\n选择:")))
不知合适不.哈哈
大家想想.....
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2003-5-20 21:10:56 | 显示全部楼层
最初由 梦断江南 发布
[B]我的是:
(while (= nil (entsel "\n选择:")))
不知合适不.哈哈
大家想想..... [/B]


右键不能取消。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-5-20 21:50:50 | 显示全部楼层
最初由 XDSoft 发布
[B][QUOTE]最初由 cy956 发布
[B]用entsel看来是没招了,用grread也会有无穷烦恼。
建议你用getpoint,有点再判断是否选中合适的物体,无点(右键)退出,用while循环。
不过既然你觉得ssget好用,何不直接用... [/B]


确实讨论过。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2003-5-20 22:44:29 | 显示全部楼层
最初由 梦断江南 发布
[B]我的是:
(while (= nil (entsel "\n选择:")))
不知合适不.哈哈
大家想想..... [/B]


entsel 左键空选,返回NIL, 右键退出也返回NIL, 这个不可以的实现左键按下,继续执行 entsel 的.

你这个右键退出不了的.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-5-21 08:08:41 | 显示全部楼层
XD的方法最符合题意,我没想到用错误码errno。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-16 10:50 , Processed in 0.223021 second(s), 60 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表