张大锤 发表于 2018-5-17 10:34:41

如何使用LISP 编辑鼠标左右键

(setq p1 (getpoint))(setq p2 (getpoint p1 "\n請選擇方向: "))(command “line” p1 p2)以上操作 用该是 鼠标(左键点击) = p1 鼠标再次(左键点击) = p2 由命令画p1到p2的线 这次我想请教的问题是如何 在鼠标第二次点击的时候 不点击左键 而是点击 右键提示(alert"鼠标右键成功")我的想法是这么写的 在CAD中 我使用了!p2 检查了下P2是=nil的 但是 不会执行(alert) 我感觉我这是在乱写 所以请问大佬们 对于鼠标的左右键 是怎么编辑的(if (= p2 nil)(alert "鼠标右键成功"))

还有个追加的想法有没有可能 鼠标双击 = (defun c:mm() 命令的启动 不需要按mm 鼠标双击就启动命令呢欢迎大家交流一下

yxp 发表于 2018-5-17 12:13:36

这是以前的一个不成熟的测试代码,仅供参考


(defun c:test()
(while (setq code (grread t 5 0))
        (setq first (car code)
                second (cadr code)
        )
        (cond
                ((= first 2)
                        (princ "\n按下了键盘 mode= ")
                        (princ first)
                        (princ "键盘码 code= ")
                        (princ second))
                ((= first 3)
                        (princ "\n按下鼠标左键 mode= ")
                        (princ first)
                        (princ "xyz= ")
                        (princ second))
                ((= first 4)
                        (princ "\n你点了屏幕菜单 mode= ")
                        (princ first)
                        (princ "second= ")
                        (princ second))
                ((= first 5)
                        (if (equal second old 0.001)
                                (progn
                                        (princ "\n按下鼠标右键 mode= ")
                                        (princ first)
                                        (princ "xyz= ")
                                        (princ second))
                                (progn
                                        (princ "\n鼠标正在移动 mode= ")
                                        (princ first)
                                        (princ "xyz= ")
                                        (princ second)
                                        (setq old second))
                        ))
                (t nil)
        )
)
)

taoyi0727 发表于 2018-5-17 12:45:04

你看这个行不有过有BUG
1. 不能用捕捉
2. 右键坐标可能不标准

水平有限 只能编成这样了

(defun c:tt (/ get get_bak pt1 pt2 xh)
        (setq xh t)
        (while xh
                (setq get (grread 1 7 0));把当前的转入设备的值赋给变量
                (if (= 5 (car get))
                        (setq get_bak get)
                )
                (cond
                        ((= 3 (car get));变量为3开头时为点击左键
                                (if (= pt2 nil)
                                        (setq pt1 (cadr get));
                                        (progn
                                                (setq pt1 (cadr get))
                                                (command "._line" pt1 pt2 "")
                                                (setq xh nil)
                                        )
                                )
                        )
                        ((= 25 (car get));变量为25开头时为点击右键
                                (if (= pt1 nil)
                                        (progn
                                                (princ "第一点未定位")
                                                (setq pt2 (cadr get_bak));
                                        )
                                        (progn
                                                (setq pt2 (cadr get_bak))
                                                (command "._line" pt1 pt2 "")
                                                (setq xh nil)
                                        )
                                )
                        )
                )
        )
        (princ)
)

张大锤 发表于 2018-5-17 14:52:31

研究了俩位的 了解了一下 鼠标左键 中键 键盘得到的值 是可以操作的
但是右键 还是没有 右键我的CAD 没有反应 很有意思 我也会找一些资料学习 弄明白了分享给大家

669423907 发表于 2018-5-17 17:00:01

(defun weizhi() ;(weizhi)
(setvar 'osmode 0)             ;关闭捕捉
(setq gbwz (grread 3))         ;光标位置
(if (member (car gbwz)'(3 5))
(setq o (cadr gbwz)) )         ;鼠标位置
;(setq pmzd(getvar "viewctr")) ;屏幕中点
(setvar 'osmode 6079)          ;打开捕捉
)

(setq p1 (getpoint))
(setq p2 (getpoint p1 "\n請選擇方向: "))
(if (= p2 nil)(progn (weizhi)(setq p2 o)) )
(command “line”"non" p1 "non" p2)

guankuiwu 发表于 2021-4-20 16:49:27

学习学习!
页: [1]
查看完整版本: 如何使用LISP 编辑鼠标左右键