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

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

请各位高手帮忙!现在正在做一个VBA小程序,需要动态获得光标当前座标,在明经论坛中只有一个相关贴子,但是没有看懂。链接为:<a href="http://bbs.mjtd.com/forum.php?mod=viewthread&tid=54166">http://bbs.mjtd.com/forum.php?mod=viewthread&tid=54166</a> 是[侠之大者]回答的。请问VBA中有没有方法可以像LISP中 <table bordercolor="#ffffff" height="81" bordercolordark="#ffffff" width="804" bgcolor="#ffffff" bordercolorlight="#ffffff" border="1"><tbody><tr><td width="64" bgcolor="#e8e8e8" height="29"><font color="#cc3300">设备访问函数</font></td><td width="116" bgcolor="#e8e8e8" height="29"><font color="#000000">(grread ])</font></td><td width="310" bgcolor="#e8e8e8" height="29"><font color="#000000">从 AutoCAD 的任何一种输入设备中读取数值。</font></td></tr></tbody></table><p>能动态地返回光标所在位置的坐标,而不必等待按下回车键、空格键或鼠标按钮才返回光标位置。或者在VBA中能够调用LISP中的此函数?</p><p>盼各位高手指点!跪求</p>

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

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

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

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

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

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

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

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

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

<p>Try to run (vl-load-com) first</p>

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

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