乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 123|回复: 7

[求助]vb中怎么打不DWG文件啊?

[复制链接]

7

主题

18

帖子

2

银币

初来乍到

Rank: 1

铜币
46
发表于 2004-12-15 16:22:00 | 显示全部楼层 |阅读模式
我写了一个程序:
Dim acadapp As New AcadApplication                                         '建立Application对象
Dim acaddoc As New AcadDocument                                                                 '建立Document对象
On Error Resume Next
Set acadapp = GetObject(, ".application")                 '若AutoCad已启动 , 则直接得到
If Err Then
         Err.Clear
         Set acadapp = CreateObject("autocad.application")                 '若AutoCad未启动,则运行它
         If Err Then
                 MsgBox Err.Description
                 Exit Function
         End If
End If
MsgBox "Now running " + acadapp.Name + " version " + acadapp.Version
acadapp.Visible = True
Set acaddoc = acadapp.ActiveDocument                                                                                                                                 '设acaddoc为当前图形文件
Dim dwgname As String
dwgname = "F:\ElectroSign\updataDwg\dwg\jxf.dwg"
If Dir(dwgname)  "" Then
         acaddoc.Open(dwgname) '打开一个CAD文件
         acadapp.Visible = True         '使AutoCad可见
Else
         MsgBox "没有此文件"
End If
jxf.dwg文件找得到,为什么AutoCad可见后,仍然是默认的Drawing1.dwg啊?
这样的话,我无法对jxf.dwg进行修改啊??
在此请教高手!:)
回复

使用道具 举报

124

主题

837

帖子

9

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1333
发表于 2004-12-15 18:10:00 | 显示全部楼层
怎么可能?dwg文件一直没打开吗?还是没有激活active?
回复

使用道具 举报

158

主题

2315

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2951
发表于 2004-12-15 18:32:00 | 显示全部楼层
当在多文档界面模式下运行时,用户必须从 Documents 集合使用 Open 方法。当在单文档界面模式运行时,用户必须从 Document 对象使用 Open 方法。
回复

使用道具 举报

124

主题

837

帖子

9

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1333
发表于 2004-12-15 18:39:00 | 显示全部楼层

Dim acadapp As New AcadApplication                                         '建立Application对象
Dim acaddoc As New AcadDocument                                                                 '建立Document对象
Dim acaddocs As AcadDocuments
                         On Error Resume Next
                        
                         Set acadapp = GetObject(, "autocad.application.16")                 '若AutoCad已启动 , 则直接得到
                         If Err Then
                                         Err.Clear
                                         Set acadapp = CreateObject("autocad.application.16")                 '若AutoCad未启动,则运行它
                                         If Err Then
                                                 MsgBox Err.Description
                                                 Exit Sub
                                         End If
                         End If
                         MsgBox "Now running " + acadapp.Name + " version " + acadapp.Version
                        
                         acadapp.Visible = True
                         Set acaddoc = acadapp.ActiveDocument                                                                                                                                 '设acaddoc为当前图形文件
                         Set acaddocs = acadapp.Documents
                        
                         Dim dwgname As String
                         dwgname = "d:\a.dwg"
                         If Dir(dwgname)  "" Then
                                         acaddocs.Open (dwgname) '打开一个CAD文件
                                         acadapp.Visible = True         '使AutoCad可见
                         Else
                                         MsgBox "没有此文件"
                         End If
End Sub
回复

使用道具 举报

7

主题

18

帖子

2

银币

初来乍到

Rank: 1

铜币
46
发表于 2004-12-15 18:39:00 | 显示全部楼层
我现在处理的就是单文本
我用的是ActiveDocument.open 打开的。
但是返回后,acaddoc里的不是"F:\ElectroSign\updataDwg\dwg\jxf.dwg",
而是AutoCAD默认drawing1.dwg。
我没法对"F:\ElectroSign\updataDwg\dwg\jxf.dwg",进行修改啊。
再次请教,谢谢!!:))
回复

使用道具 举报

124

主题

837

帖子

9

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1333
发表于 2004-12-15 18:45:00 | 显示全部楼层
你打开你的AutoCAD, 看看SDI系统变量的当前值是什么? 如果是0把它改成1,再运行你的程序?
回复

使用道具 举报

7

主题

18

帖子

2

银币

初来乍到

Rank: 1

铜币
46
发表于 2004-12-15 18:52:00 | 显示全部楼层
太感谢你了!:)
不过我还是有两个问题不懂:
1. Set acadapp = GetObject(, "autocad.application.16")                 
为什么要用autocad.application.16而不用autocad.application啊??
2.为什么ActiveDocument.open就不能打开而                Documents.open就可以啊?
我处理的就是单文本啊??
呵呵
回复

使用道具 举报

124

主题

837

帖子

9

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1333
发表于 2004-12-15 18:56:00 | 显示全部楼层
1. 16是当前autocad的版本,如果本机上安装了autocad2000,autocad2004,那么要调用哪个呢, "autocad.application.15"就代码前者,"autocad.application.16"代表后者;
2. 如mccad所说, 如果当前的autocad实例设置为单文档的,那么用Document.open就可以,反之,要用Documents.open; 可以取得系统变量SDI的值(GetVariable函数吧),来判断.
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-16 17:32 , Processed in 2.172268 second(s), 68 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表