tm20038175 发表于 2012-4-14 19:32:47

连续画直线,按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)
)




tm20038175 发表于 2012-4-14 19:46:40

好像按0没有反应呀~~~~

ZZXXQQ 发表于 2012-4-14 20:02:17

这样试试
(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)
)

tm20038175 发表于 2012-4-14 20:59:04

ZZXXQQ 发表于 2012-4-14 20:02 static/image/common/back.gif
这样试试
(defun c:dl()
(setvar "cmdecho" 1)


谢谢呵,可是这样的效果和line一样呀,并不能做到另外起一直线起点
我的真正目的是解决循环调用command的问题,例如连续画圆,曲线,这个问题问的其实蛮有代表性的

langjs 发表于 2012-4-14 22:10:51

程序有矛盾啊,
输入0会作为pause点的距离输入使用,而不是grread取得的键盘输入使用,当然无法退出程序啊.

tm20038175 发表于 2012-4-14 22:14:28

langjs 发表于 2012-4-14 22:10 static/image/common/back.gif
程序有矛盾啊,
输入0会作为pause点的距离输入使用,而不是grread取得的键盘输入使用,当然无法退出程序啊.

那有办法解决吗,无解?……

tm20038175 发表于 2012-4-14 22:15:33

我是在画完直线结束后输入0的,这时候还算是pause吗?

langjs 发表于 2012-4-14 22:45:20

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)
)

tm20038175 发表于 2012-4-14 22:59:07

langjs 发表于 2012-4-14 22:45 static/image/common/back.gif
画完直线不算,可是你的判断条件有错我了,(car code)=5执行,即你第一次画完直线后,鼠标稍一移动,就自动第二 ...

行呀,成功了,呵呵,好样的!!
解决了循环调用的大问题,哈哈~~~~

tm20038175 发表于 2012-4-16 12:19:52

langjs 发表于 2012-4-14 22:45
画完直线不算,可是你的判断条件有错我了,(car code)=5执行,即你第一次画完直线后,鼠标稍一移动,就自动第二 ...

可惜不能带捕捉,可以呀…………
页: [1] 2
查看完整版本: 连续画直线,按0退出问题!