bluebetaz 发表于 2007-8-17 10:24:00

[求助]CAD中利用VBA获得当前光标座标

请各位高手帮忙!现在正在做一个VBA小程序,需要动态获得光标当前座标,在乐筑天下论坛中只有一个相关贴子,但是没有看懂。链接为: 是[侠之大者]回答的。请问VBA中有没有方法可以像LISP中 设备访问函数(grread ])从的任何一种输入设备中读取数值。能动态地返回光标所在位置的坐标,而不必等待按下回车键、空格键或鼠标按钮才返回光标位置。或者在VBA中能够调用LISP中的此函数?
盼各位高手指点!跪求

bluebetaz 发表于 2007-8-19 19:17:00

是不是问题没有说清楚?!怎么没有人发表意见呢?!如果不能请问题VBA中当光标在模型空间时能不能触发类似MOUSEMOVE事件之?也看到相关的帖子说用API,可是API也只能获得MOUSE在屏幕座标系下的位置,怎么转换呢?!盼有过类似开发经验的大哥指点!

alin 发表于 2007-8-20 10:20:00

Import VLAX.cls
Sub TEST()
Dim VL As New VLAX
Dim pt As Variant
pt = VL.EvalLispExpression("(VLAX-3D-POINT (CADR (GRREAD t))) ")
MsgBox pt(0) & ", " & pt(1) & ", " & pt(2)
End Sub

bluebetaz 发表于 2007-8-20 11:45:00

我看了VLAX相关的这两个帖子
http://www.mccad.net/bbs/Archive_view.asp?boardID=4&ID=18014
导入了VLAX.CLS类,
Dim VL As New VLAX 
Private Sub Class_Initialize()
    If Left(ThisDrawing.Application.Version, 2) = "15" Then
      Set VL = ThisDrawing.Application.GetInterfaceObject("VL.Application.1")
    ElseIf Left(ThisDrawing.Application.Version, 2) = "16" Then
      Set VL = ThisDrawing.Application.GetInterfaceObject("VL.Application.16")
    End If
    Set VLF = VL.ActiveDocument.Functions
End Sub
运行到此处总是跳转到错误处理语句?!不知道如何解决。我用的是CAD2004中文版,监视时总显示
ThisDrawing.Application.Version="16.0s (LMS Tech)"

bluebetaz 发表于 2007-8-20 11:50:00

Sub TEST()
Dim VL As New VLAX
Dim pt As Variant
pt = VL.EvalLispExpression("(VLAX-3D-POINT (CADR (GRREAD t))) ")
MsgBox pt(0) & ", " & pt(1) & ", " & pt(2)
End Sub
调用些程序总是出错,依然是Dim VL As New VLAX的问题,错误号:-2147220999
不知道如何解决!
谢谢!

alin 发表于 2007-8-20 12:30:00

Try to run (vl-load-com) first

bluebetaz 发表于 2007-8-21 13:41:00

收到!成功了,非常感谢谢!就是错误处理比较多,还容易导致CAD崩溃。看来我对问题的解决办法描述的不好,还要换些别的方法。有问题再向大家请教!
页: [1]
查看完整版本: [求助]CAD中利用VBA获得当前光标座标