MJTD_7777 发表于 2005-9-16 11:21:00

精通VB控制CAD的请进

以下是我的做法:
用VB做的CAD的函数库,在VB的程序中调用,然后控制CAd。
在用来控制CAD的VB函数库中,为了使程序始终处理当前Acad的激活文件时(CAD自身的程序也是这样的吧,没太多考察过)。通常会处理Thisdrawing的切换问题,使用这个Set Thisdrawing = Acadapp.ActiveDocument.
我的子程序一般都是这样写的,从未出现过问题。
但是最近的一个程序中使用了一个:
Dim Oucs As AcadUCS
Set Oucs = Thisdrawing.ActiveUCS
每次程序运行到这里就报错,如果监视Thisdrawing.ActiveUCS 他的值是.
如果你监视Thisdrawing,他有值,如果你展开他,也可以看到他的ActiveUCS。这时在监视栏中的Thisdrawing.ActiveUCS也突然有值了。按“F8”程序也可以继续运行。
大家遇到过这样的问题吗?

tongyuwu 发表于 2005-9-16 13:30:00

这好象是VB和CAD不同步造成的。我也遇到过类似的问题。当调试时一步一步就没有问题,直接RUN时就有问题。尤其是用SendCommand命令时严重。

MJTD_7777 发表于 2005-9-16 14:39:00

我的情况和你可能还不太一样。为了调试方便我把这段子程序放在了我的VB程序中结果下面的程序可用:
Thisdrawing.SendCommand "circle" & Chr(13) & "0,0,0" & Chr(13) & "r" & Chr(13) & "34" & Chr(13)
MsgBox Thisdrawing.ModelSpace.Count
MsgBox Thisdrawing.UserCoordinateSystems.Count
下面的程序也可用:
Dim Line As AcadLine
Set Line = Thisdrawing.ModelSpace.AddLine(P1, P2)
可就是这个不行:Set Oucs = Thisdrawing.ActiveUCS


cbse_smy 发表于 2005-9-16 15:12:00

我也常遇到单步执行没有问题,连续执行时即出错的事,尤其是用SetCommmand时

MJTD_7777 发表于 2005-9-16 15:40:00

我怀疑是Thisdrawing.ActiveUCS自身的问题。

MJTD_7777 发表于 2005-9-21 20:16:00

问题已经解决了,我绕过去了。
页: [1]
查看完整版本: 精通VB控制CAD的请进