精通VB控制CAD的请进
<P>以下是我的做法:</P><P>用VB做的CAD的函数库,在VB的程序中调用,然后控制CAd。</P>
<P>在用来控制CAD的VB函数库中,为了使程序始终处理当前Acad的激活文件时(CAD自身的程序也是这样的吧,没太多考察过)。通常会处理Thisdrawing的切换问题,使用这个Set Thisdrawing = Acadapp.ActiveDocument.</P>
<P>我的子程序一般都是这样写的,从未出现过问题。</P>
<P>但是最近的一个程序中使用了一个:</P>
<P>Dim Oucs As AcadUCS<BR>Set Oucs = Thisdrawing.ActiveUCS</P>
<P>每次程序运行到这里就报错,如果监视Thisdrawing.ActiveUCS 他的值是<>.</P>
<P>如果你监视Thisdrawing,他有值,如果你展开他,也可以看到他的ActiveUCS。这时在监视栏中的Thisdrawing.ActiveUCS也突然有值了。按“F8”程序也可以继续运行。</P>
<P>大家遇到过这样的问题吗?</P> 这好象是VB和CAD不同步造成的。我也遇到过类似的问题。当调试时一步一步就没有问题,直接RUN时就有问题。尤其是用SendCommand命令时严重。 <P>我的情况和你可能还不太一样。为了调试方便我把这段子程序放在了我的VB程序中结果下面的程序可用:</P>
<P>Thisdrawing.SendCommand "circle" & Chr(13) & "0,0,0" & Chr(13) & "r" & Chr(13) & "34" & Chr(13)<BR>MsgBox Thisdrawing.ModelSpace.Count<BR>MsgBox Thisdrawing.UserCoordinateSystems.Count</P>
<P>下面的程序也可用:</P>
<P>Dim Line As AcadLine<BR>Set Line = Thisdrawing.ModelSpace.AddLine(P1, P2)</P>
<P>可就是这个不行:Set Oucs = Thisdrawing.ActiveUCS</P>
<P> </P>
<P> </P> 我也常遇到单步执行没有问题,连续执行时即出错的事,尤其是用SetCommmand时 我怀疑是Thisdrawing.ActiveUCS自身的问题。 问题已经解决了,我绕过去了。
页:
[1]