连续画直线,按0退出问题!
本帖最后由 tm20038175 于 2012-4-14 19:45 编辑怎么按0无法退出呀,高手能够帮忙修改下,谢谢啦~~~~
(defun c:dl()
(setvar "cmdecho" 1)
(setq loop T)
(whileloop
(setq code (grread T 8))
(cond ((= (car code) 5) (progn(command "line" pause)(yad_comd))) ;;; 鼠标移动
((equal code '(2 48)) ("exit")) ;;; 0键 )
)
(PRINC)
)
(defun yad_comd()
(setvar "cmdecho" 1)
(while (/= 0 (getvar "cmdactive")) (command pause))
(setvar "cmdecho" 0)
)
好像按0没有反应呀~~~~ 这样试试
(defun c:dl()
(setvar "cmdecho" 1)
(setq loop T)
(command ".LINE")
(while loop
(setq code (grread T 8))
(cond
((= (car code) 3) (command (cadr code))) ;;; 鼠标左键
((equal code '(2 48)) (command "") (setq loop nil)) ;;; 0键
)
)
(PRINC)
)
ZZXXQQ 发表于 2012-4-14 20:02 static/image/common/back.gif
这样试试
(defun c:dl()
(setvar "cmdecho" 1)
谢谢呵,可是这样的效果和line一样呀,并不能做到另外起一直线起点
我的真正目的是解决循环调用command的问题,例如连续画圆,曲线,这个问题问的其实蛮有代表性的 程序有矛盾啊,
输入0会作为pause点的距离输入使用,而不是grread取得的键盘输入使用,当然无法退出程序啊. langjs 发表于 2012-4-14 22:10 static/image/common/back.gif
程序有矛盾啊,
输入0会作为pause点的距离输入使用,而不是grread取得的键盘输入使用,当然无法退出程序啊.
那有办法解决吗,无解?…… 我是在画完直线结束后输入0的,这时候还算是pause吗? tm20038175 发表于 2012-4-14 22:15 static/image/common/back.gif
我是在画完直线结束后输入0的,这时候还算是pause吗?
画完直线不算,可是你的判断条件有错我了,(car code)=5执行,即你第一次画完直线后,鼠标稍一移动,就自动第二次画直线,首先采集line第一个pause了,又遇到了,按0无效.
应该这样的:
(defun c:dl (/ code loop)
(setvar "cmdecho" 1)
(setq loop t)
(while loop
(setq code (grread t 15 0))
(cond
((= (car code) 3) ; 鼠标左键
(command "line" (cadr code))
(yad_comd)
)
((equal code '(2 48)) ; 按0
(setq loop nil)
)
)
(princ)
)
)
(defun yad_comd ()
(setvar "cmdecho" 1)
(while (/= 0 (getvar "cmdactive"))
(command pause)
)
(setvar "cmdecho" 0)
)
langjs 发表于 2012-4-14 22:45 static/image/common/back.gif
画完直线不算,可是你的判断条件有错我了,(car code)=5执行,即你第一次画完直线后,鼠标稍一移动,就自动第二 ...
行呀,成功了,呵呵,好样的!!
解决了循环调用的大问题,哈哈~~~~ langjs 发表于 2012-4-14 22:45
画完直线不算,可是你的判断条件有错我了,(car code)=5执行,即你第一次画完直线后,鼠标稍一移动,就自动第二 ...
可惜不能带捕捉,可以呀…………
页:
[1]
2