mikewolf2k 发表于 2004-3-17 19:00:00

vba能不能获得当前鼠标精确位置?新设想,高手请看看.

以前曾经问过这个问题,回答是vba做不到这一点.那么能不能通过其他方式获得呢?


我注意到acad窗口左下角能实时显示当前鼠标坐标,vba能不能取得这个值呢?请高手们研讨一下.

cag 发表于 2004-3-18 20:06:00

好象以前有位大虾用VB做了个DLL供VBA调用,也就是说能实现,不过速度太慢,没有什么实用价值吧,acadx.arx还行,不过第一次加载时,速度有些慢了,也感觉不爽,哪位高手能用VBA做个模块供调用就不错了.

my_computer 发表于 2004-3-21 18:50:00

我使用了一个方法,现将代码拿来大家研究一下。


一下程如果使用lisp来调用,没有问题,可是使用vba来调用速度快了就会报错,还请大家多指点。


(defun c:drd()<BR>       (while (not (= (substr (setq aq (print(dd))) 2 1)       "G3"))                       <BR>                       )<BR>       (print)<BR>       )<BR>(defun dd()<BR>       (setq a (grread t))<BR>       (if (OR (= 3 (car a)) (= 5 (car a)))<BR>                       (setq str (strcat "("<BR>                                                       (itoa (car a))<BR>                                                       " ("<BR>                                                       (rtos (caadr a) 2 4)<BR>                                                       " "<BR>                                                       (rtos (cadadr a) 2 4)<BR>                                                       " "<BR>                                                       (rtos (cadr (cdadr a)) 2 4)<BR>                                                       " ))"<BR>                                               )<BR>                       )<BR>       )<BR>       (IF (OR (= 2 (car a)) (= 11 (car a)))<BR>                       (setq str (strcat "("<BR>                                                       (itoa (car a))<BR>                                                       " "<BR>                                                       (itoa (cadr a))<BR>                                                       ")"<BR>                                               )<BR>                       )<BR>       )<BR>                       str<BR>        )


以上lisp程序先加载一下。


Sub dfs()<BR>Dim Vl As New Class<BR>Dim g<BR>g = Vl.EvalLispExpression("(dd)")<BR>Do While Mid(g, 2, 1) &lt;&gt; "3"<BR>                       g = Vl.EvalLispExpression("(dd)")<BR>                       ThisDrawing.Utility.Prompt g &amp; Chr(10)<BR>Loop<BR>End Sub


以上的vba程序需要加载mccad的 VLAX.CLS

mikewolf2k 发表于 2004-3-21 21:41:00

不懂lisp,能不能提供一个接口供vb调用?

my_computer 发表于 2004-3-21 22:09:00

底下我已经写了vba程序呀?


Sub dfs()<BR>Dim Vl As New Class<BR>Dim g<BR>g = Vl.EvalLispExpression("(dd)")<BR>Do While Mid(g, 2, 1) &lt;&gt; "3"<BR>                       g = Vl.EvalLispExpression("(dd)")<BR>                       ThisDrawing.Utility.Prompt g &amp; Chr(10)<BR>Loop<BR>End Sub

mikewolf2k 发表于 2004-3-21 23:48:00

哦,太谢谢了.回头试试看.


"以上的vba程序需要加载mccad的 VLAX.CLS",能不能在vba中加入这功能?

my_computer 发表于 2004-3-22 08:48:00

你可以在vba中,直接将VLAX.CLS导入。

zhouhuaiku 发表于 2004-3-26 08:15:00

可不可以让Object ARX 也能够调用?

my_computer 发表于 2004-3-26 22:31:00

ARX 功能强大有没有更简单的方法?

sujianyong 发表于 2004-3-31 18:42:00

请问一下哪里能找到mccad的 VLAX.CLS

请问一下哪里能找到mccad的 VLAX.CLS
页: [1] 2 3
查看完整版本: vba能不能获得当前鼠标精确位置?新设想,高手请看看.