vba能不能获得当前鼠标精确位置?新设想,高手请看看.
以前曾经问过这个问题,回答是vba做不到这一点.那么能不能通过其他方式获得呢?我注意到acad窗口左下角能实时显示当前鼠标坐标,vba能不能取得这个值呢?请高手们研讨一下. 好象以前有位大虾用VB做了个DLL供VBA调用,也就是说能实现,不过速度太慢,没有什么实用价值吧,acadx.arx还行,不过第一次加载时,速度有些慢了,也感觉不爽,哪位高手能用VBA做个模块供调用就不错了. 我使用了一个方法,现将代码拿来大家研究一下。
一下程如果使用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 不懂lisp,能不能提供一个接口供vb调用? 底下我已经写了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 哦,太谢谢了.回头试试看.
"以上的vba程序需要加载mccad的 VLAX.CLS",能不能在vba中加入这功能? 你可以在vba中,直接将VLAX.CLS导入。 可不可以让Object ARX 也能够调用? ARX 功能强大有没有更简单的方法? 请问一下哪里能找到mccad的 VLAX.CLS
页:
[1]