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

精通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 他的值是&lt;&gt;.</P>
<P>如果你监视Thisdrawing,他有值,如果你展开他,也可以看到他的ActiveUCS。这时在监视栏中的Thisdrawing.ActiveUCS也突然有值了。按“F8”程序也可以继续运行。</P>
<P>大家遇到过这样的问题吗?</P>

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

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

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

<P>我的情况和你可能还不太一样。为了调试方便我把这段子程序放在了我的VB程序中结果下面的程序可用:</P>
<P>Thisdrawing.SendCommand "circle" &amp; Chr(13) &amp; "0,0,0" &amp; Chr(13) &amp; "r" &amp; Chr(13) &amp; "34" &amp; 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>&nbsp;</P>
<P>&nbsp;</P>

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的请进