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