suntenlin 发表于 2010-4-30 15:39:00

VB程序中如何调用用ZoomExtents 事件?

<p>使用GetObject 函数得到当前的 AutoCAD Application 对象后,无法对当前文档缩放。</p><p>执行&nbsp;&nbsp;&nbsp; acadDoc.ZoomExtents时报错,各位指点。</p><p>代码如下:</p><p>===============================================<br/>&nbsp;&nbsp;&nbsp; Dim AcadApp As Object&nbsp;<br/>&nbsp;&nbsp;&nbsp; Dim acadDoc As Object</p><p>&nbsp;&nbsp;&nbsp; Set AcadApp = GetObject(, "AutoCAD.Application")<br/>&nbsp;&nbsp;&nbsp; If Err Then '如果没有一个AutoCAD副本在运行<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Err.Clear<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set AcadApp = CreateObject("AutoCAD.Application")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AcadApp.Visible = False '启动一个AutoCAD副本并设为不可见&nbsp;<br/>&nbsp;&nbsp; End If</p><p>&nbsp;&nbsp;Set acadDoc = AcadApp.ActiveDocument<br/>&nbsp;&nbsp;acadDoc.Open "C:\000.dwg"</p><p>'=============================================================<br/>&nbsp;&nbsp;&nbsp; ' 按图中实体的最大范围缩放<br/>&nbsp;&nbsp;&nbsp; acadDoc.ZoomExtents</p>

兰州人 发表于 2010-5-1 16:59:00

&nbsp; Dim App As AcadApplication<br/>&nbsp; App.Application.ZoomExtents<br/>&nbsp; App.ZoomExtents<br/>

suntenlin 发表于 2010-5-4 08:09:00

<p>版主辛苦了,五一没有假期呢啊?</p><p>你的代码是在vba里面使用的吧?</p><p>我是在VB调用CAD的application啊。</p><p>那样写不行。</p>

votasee 发表于 2010-5-5 22:20:00

<p>唉.这个好简单啊..稍微看下帮助就明白了...</p><p>dim&nbsp;cadApp as AcadApplication或者 DIM cadapp as object</p><p>Set cadApp = CreateObject("AutoCAD.Application.16")</p><p>cadApp.ZoomExtents</p>

suntenlin 发表于 2010-5-6 14:14:00

<p><strong><font face="Verdana" color="#61b713">votasee,我最开始的想法和你一样,但是这样写代码也是执行不过去。报错!</font></strong></p><p></p>

votasee 发表于 2010-5-6 15:42:00

<p>晕.这怎么会事..你是VB6开发还是其它什么的..我用的VB6没问题的.库文件当然也是要引用的.最重要的就是连接时的对象管理了.</p><p>你要随时测试.用DEBUG.PRINT来了解对象存在于否.</p><p>看你上面的代码.不知道为什么要将Visible设为False.按理应该是TRUE的.</p><p><strong>另外这二句.会有问题的</strong></p><p><strong>Set acadDoc = AcadApp.ActiveDocument<br/>&nbsp; &nbsp;&nbsp;acadDoc.Open "C:\000.dwg"</strong></p><p>你这个acaddoc是一个文档对象.它不能用OPEN方法来打开 DWG文件的.</p><p>必需要使用<strong>aCADAPP对象.文档对象的.方法</strong>才能打开..这是里面规定的.</p><p>你应该这个写&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp; <font color="#ff0000">Set acadDoc = <strong>acadApp.Documents</strong>.Open("C:\000.dwg")</font></p><p>才能打开DWG文件.至于说</p><p>acadApp.ZoomExtents这个肯定是对的.可能是其它地方出错了.照你的代码是错的acaddoc是没有ZoomExtents方法的.</p><p>只有ACADAPP对象才有..也就是CAD系统本身的.文档对象没有这个方法.</p>

suntenlin 发表于 2010-5-6 16:16:00

<p>很奇怪啊,按照你说的改了。我的代码执行到&nbsp;&nbsp; AcadApp.ZoomExtents 时报错,提示“对象不支持该属性或方法”!</p><p>我是vb6 调用的是acad r14,以下为完整代码</p><p>Private Sub conntractCAD()</p><p>&nbsp;&nbsp;&nbsp; On Error Resume Next<br/>&nbsp;&nbsp;&nbsp; Dim ent As Object<br/>&nbsp;&nbsp;&nbsp; Set AcadApp = GetObject(, "AutoCAD.Application")<br/>&nbsp;&nbsp;&nbsp; If Err Then '如果没有一个AutoCAD副本在运行<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Err.Clear<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set AcadApp = CreateObject("AutoCAD.Application")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AcadApp.Visible = True</p><p>&nbsp;&nbsp;&nbsp; End If<br/>End Sub</p><p>Private Sub Form_Load()<br/>&nbsp;&nbsp;&nbsp; Dim moSpace As Object<br/>&nbsp;&nbsp;&nbsp; Dim paSpace As Object<br/>&nbsp;&nbsp;&nbsp; '调用CAD进程<br/>&nbsp;&nbsp;&nbsp; conntractCAD<br/>&nbsp;&nbsp;&nbsp; '连接CAD<br/>&nbsp;&nbsp;&nbsp; Set acadDoc = AcadApp.ActiveDocument<br/>&nbsp;&nbsp;&nbsp; acadDoc.Open "C:\1\000.dwg"<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp; ' 按图中实体的最大范围缩放<br/>&nbsp;&nbsp;&nbsp; AcadApp.ZoomExtents</p><p>end sub</p>

votasee 发表于 2010-5-6 21:54:00

<p>我晕了.我不知道R14版本,是不是支持这个ZoomEXTENTS</p><p>但是.<strong>我的16版本.</strong>明确告诉你啊..这二句不对.</p><p>&nbsp;&nbsp;&nbsp; Set acadDoc = AcadApp.ActiveDocument<br/>&nbsp;&nbsp;&nbsp; acadDoc.Open "C:\1\000.dwg"</p><p>不能这样用..</p><p>R16,你得用下面的语句才正确:</p><p>Set acadDoc = acadApp.Documents.Open("C:\1\000.dwg")</p><p>如果你还出错..我也不知了.</p>

suntenlin 发表于 2010-5-7 08:17:00

<p>谢谢<strong><font face="Verdana" color="#61b713">votasee 了!</font></strong></p><p><font face="Verdana" color="#61b713"><strong>R14里面,打开文档的代码没问题。</strong><font color="#000000">&nbsp; </font></font></p><p><font face="Verdana" color="#61b713"><font color="#000000">Set acadDoc = AcadApp.ActiveDocument<br/>acadDoc.Open "C:\1\000.dwg"</font></font></p><p><font face="Verdana">但是ZoomEXTENTS不知道怎么使用,即使是不支持这个方法。</font></p><p><font face="Verdana">也应该有其他可以实现这个功能的代码,但是现在没有R14的帮助文件啊,都是明经通道2004版的。</font></p><p><font face="Verdana"></font></p><p><font face="Verdana"></font></p>

xdto 发表于 2012-2-1 21:26:27

suntenlin 发表于 2010-5-7 08:17 static/image/common/back.gif
谢谢votasee 了!R14里面,打开文档的代码没问题。&nbsp; Set acadDoc = AcadApp.ActiveDocumentacadDoc.Op ...

用sendkeys ".zoom" ''" "e"
页: [1] 2
查看完整版本: VB程序中如何调用用ZoomExtents 事件?