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()
       (while (not (= (substr (setq aq (print(dd))) 2 1)       "G3"))                       
                       )
       (print)
       )
(defun dd()
       (setq a (grread t))
       (if (OR (= 3 (car a)) (= 5 (car a)))
                       (setq str (strcat "("
                                                       (itoa (car a))
                                                       " ("
                                                       (rtos (caadr a) 2 4)
                                                       " "
                                                       (rtos (cadadr a) 2 4)
                                                       " "
                                                       (rtos (cadr (cdadr a)) 2 4)
                                                       " ))"
                                               )
                       )
       )
       (IF (OR (= 2 (car a)) (= 11 (car a)))
                       (setq str (strcat "("
                                                       (itoa (car a))
                                                       " "
                                                       (itoa (cadr a))
                                                       ")"
                                               )
                       )
       )
                       str
        )
以上lisp程序先加载一下。
Sub dfs()
Dim Vl As New Class
Dim g
g = Vl.EvalLispExpression("(dd)")
Do While Mid(g, 2, 1)"3"
                       g = Vl.EvalLispExpression("(dd)")
                       ThisDrawing.Utility.Prompt g & Chr(10)
Loop
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()
Dim Vl As New Class
Dim g
g = Vl.EvalLispExpression("(dd)")
Do While Mid(g, 2, 1)"3"
                       g = Vl.EvalLispExpression("(dd)")
                       ThisDrawing.Utility.Prompt g & Chr(10)
Loop
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
页: [1]
查看完整版本: vba能不能获得当前鼠标精确位置?新设想,高手请看看.