明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1117|回复: 5

帮我一下,解决个技术问题!

[复制链接]
发表于 2008-5-7 10:47 | 显示全部楼层 |阅读模式

我有个问题.程序开始要你不断的选择单个物体(这个我会设计个循环),如果选中了物体(就是entsel的结果为T)那么就运行程序的下一步.否则就要再选.这里有个条件,只有当你按下鼠标右键,才会中途停止选择,中断程序(注意:只有是鼠标右键,按其他键都没效果).

请教各位这一段(或是这个条件)用AuToLisp怎么写.就是说如何在entsel的时候,还要跟踪鼠标键的动作.(Lisp可以吗?)

发表于 2008-5-7 10:55 | 显示全部楼层
如果(getvar"errno")=52,则是你按下了右键,在开始时,将“ERRNO”设为0.
发表于 2008-5-7 12:18 | 显示全部楼层
(defun exSel (/ e lst)
  (setq e T)
  (while e
    (initget " ")
    (setq e (entsel))
    (cond ((= e "") (setq e nil))
          ((vl-consp e)
           (setq lst (cons e lst))
           (redraw (car e) 3)
          )
          ((not e) (princ "\n选择为空。") (setq e T))
    )
  )
  (foreach e lst (redraw (car e) 4))
  lst
)
 楼主| 发表于 2008-5-7 13:00 | 显示全部楼层

先谢谢二位.

应该说二位给的方法都可以行的.相比较而言3楼的更符合我所想要的.2楼的话虽简单但如果按的是空格键或Enter键的话也是可以退出的.另外可以的话能不能讲一下errno这个系统变量的含义,我找不到.

2楼的我看懂了,就是 cond的第一个和最后一个case怎么会是不一样的呢?(不是 entsel的时候不管是按左键还是右键都不是回空吗?)因为是事先initget?还想麻烦请您说一下.

都谢谢了!

发表于 2008-5-7 13:11 | 显示全部楼层

(initget " ")(entsel)

这样右键返回"",如果未选择到对象则返回nil

没有(initget " ")右键则会返回nil

加(initget " ")的目的就是判断是右键还是空选择

发表于 2008-5-7 14:55 | 显示全部楼层
按照一般的操作习惯,按空格跟ENTER应与右键是一样的效果的,只是不知道楼主为何要按空格也不能退出呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-9 22:20 , Processed in 0.140308 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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