明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 9995|回复: 21

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

  [复制链接]
发表于 2004-3-17 19:00:00 | 显示全部楼层 |阅读模式
以前曾经问过这个问题,回答是vba做不到这一点.那么能不能通过其他方式获得呢?


我注意到acad窗口左下角能实时显示当前鼠标坐标,vba能不能取得这个值呢?请高手们研讨一下.
发表于 2004-3-18 20:06:00 | 显示全部楼层
好象以前有位大虾用VB做了个DLL供VBA调用,也就是说能实现,不过速度太慢,没有什么实用价值吧,acadx.arx还行,不过第一次加载时,速度有些慢了,也感觉不爽,哪位高手能用VBA做个模块供调用就不错了.
发表于 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
 楼主| 发表于 2004-3-21 21:41:00 | 显示全部楼层
不懂lisp,能不能提供一个接口供vb调用?
发表于 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
 楼主| 发表于 2004-3-21 23:48:00 | 显示全部楼层
哦,太谢谢了.回头试试看.


"以上的vba程序需要加载mccad的 VLAX.CLS",能不能在vba中加入这功能?
发表于 2004-3-22 08:48:00 | 显示全部楼层
你可以在vba中,直接将VLAX.CLS导入。
发表于 2004-3-26 08:15:00 | 显示全部楼层
可不可以让Object ARX 也能够调用?
发表于 2004-3-26 22:31:00 | 显示全部楼层
ARX 功能强大有没有更简单的方法?
发表于 2004-3-31 18:42:00 | 显示全部楼层

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

请问一下哪里能找到mccad的 VLAX.CLS
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 20:22 , Processed in 0.161002 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表