如何使用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 鼠标双击就启动命令呢欢迎大家交流一下
这是以前的一个不成熟的测试代码,仅供参考
(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)
)
)
)
你看这个行不有过有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)
) 研究了俩位的 了解了一下 鼠标左键 中键 键盘得到的值 是可以操作的
但是右键 还是没有 右键我的CAD 没有反应 很有意思 我也会找一些资料学习 弄明白了分享给大家 (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)
学习学习!
页:
[1]