明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4902|回复: 10

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

[复制链接]
发表于 2010-4-30 15:39:00 | 显示全部楼层 |阅读模式

使用GetObject 函数得到当前的 AutoCAD Application 对象后,无法对当前文档缩放。

执行    acadDoc.ZoomExtents时报错,各位指点。

代码如下:

===============================================
    Dim AcadApp As Object 
    Dim acadDoc As Object

    Set AcadApp = GetObject(, "AutoCAD.Application")
    If Err Then '如果没有一个AutoCAD副本在运行
       Err.Clear
       Set AcadApp = CreateObject("AutoCAD.Application")
       AcadApp.Visible = False '启动一个AutoCAD副本并设为不可见 
   End If

  Set acadDoc = AcadApp.ActiveDocument
  acadDoc.Open "C:\000.dwg"

'=============================================================
    ' 按图中实体的最大范围缩放
    acadDoc.ZoomExtents

发表于 2010-5-1 16:59:00 | 显示全部楼层
  Dim App As AcadApplication
  App.Application.ZoomExtents
  App.ZoomExtents
 楼主| 发表于 2010-5-4 08:09:00 | 显示全部楼层

版主辛苦了,五一没有假期呢啊?

你的代码是在vba里面使用的吧?

我是在VB调用CAD的application啊。

那样写不行。

发表于 2010-5-5 22:20:00 | 显示全部楼层

唉.这个好简单啊..稍微看下帮助就明白了...

dim cadApp as AcadApplication或者 DIM cadapp as object

Set cadApp = CreateObject("AutoCAD.Application.16")

cadApp.ZoomExtents

 楼主| 发表于 2010-5-6 14:14:00 | 显示全部楼层

votasee,我最开始的想法和你一样,但是这样写代码也是执行不过去。报错!

发表于 2010-5-6 15:42:00 | 显示全部楼层

晕.这怎么会事..你是VB6开发还是其它什么的..我用的VB6没问题的.库文件当然也是要引用的.最重要的就是连接时的对象管理了.

你要随时测试.用DEBUG.PRINT来了解对象存在于否.

看你上面的代码.不知道为什么要将Visible设为False.按理应该是TRUE的.

另外这二句.会有问题的

Set acadDoc = AcadApp.ActiveDocument
    acadDoc.Open "C:\000.dwg"

你这个acaddoc是一个文档对象.它不能用OPEN方法来打开 DWG文件的.

必需要使用aCADAPP对象.文档对象的.方法才能打开..这是里面规定的.

你应该这个写   
    Set acadDoc = acadApp.Documents.Open("C:\000.dwg")

才能打开DWG文件.至于说

acadApp.ZoomExtents这个肯定是对的.可能是其它地方出错了.照你的代码是错的acaddoc是没有ZoomExtents方法的.

只有ACADAPP对象才有..也就是CAD系统本身的.文档对象没有这个方法.

 楼主| 发表于 2010-5-6 16:16:00 | 显示全部楼层

很奇怪啊,按照你说的改了。我的代码执行到   AcadApp.ZoomExtents 时报错,提示“对象不支持该属性或方法”!

我是vb6 调用的是acad r14,以下为完整代码

Private Sub conntractCAD()

    On Error Resume Next
    Dim ent As Object
    Set AcadApp = GetObject(, "AutoCAD.Application")
    If Err Then '如果没有一个AutoCAD副本在运行
       Err.Clear
       Set AcadApp = CreateObject("AutoCAD.Application")
       AcadApp.Visible = True

    End If
End Sub

Private Sub Form_Load()
    Dim moSpace As Object
    Dim paSpace As Object
    '调用CAD进程
    conntractCAD
    '连接CAD
    Set acadDoc = AcadApp.ActiveDocument
    acadDoc.Open "C:\1\000.dwg"
    
    ' 按图中实体的最大范围缩放
    AcadApp.ZoomExtents

end sub

发表于 2010-5-6 21:54:00 | 显示全部楼层

我晕了.我不知道R14版本,是不是支持这个ZoomEXTENTS

但是.我的16版本.明确告诉你啊..这二句不对.

    Set acadDoc = AcadApp.ActiveDocument
    acadDoc.Open "C:\1\000.dwg"

不能这样用..

R16,你得用下面的语句才正确:

Set acadDoc = acadApp.Documents.Open("C:\1\000.dwg")

如果你还出错..我也不知了.

 楼主| 发表于 2010-5-7 08:17:00 | 显示全部楼层

谢谢votasee 了!

R14里面,打开文档的代码没问题。 

Set acadDoc = AcadApp.ActiveDocument
acadDoc.Open "C:\1\000.dwg"

但是ZoomEXTENTS不知道怎么使用,即使是不支持这个方法。

也应该有其他可以实现这个功能的代码,但是现在没有R14的帮助文件啊,都是明经通道2004版的。

发表于 2012-2-1 21:26:27 | 显示全部楼层
suntenlin 发表于 2010-5-7 08:17
谢谢votasee 了!R14里面,打开文档的代码没问题。  Set acadDoc = AcadApp.ActiveDocumentacadDoc.Op ...

用sendkeys ".zoom" ''" "e"
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 17:18 , Processed in 0.197520 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表