ddroyce 发表于 2004-12-15 16:22:00

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

我写了一个程序:
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进行修改啊??
在此请教高手!:)

王咣生 发表于 2004-12-15 18:10:00

怎么可能?dwg文件一直没打开吗?还是没有激活active?

mccad 发表于 2004-12-15 18:32:00

当在多文档界面模式下运行时,用户必须从 Documents 集合使用 Open 方法。当在单文档界面模式运行时,用户必须从 Document 对象使用 Open 方法。

王咣生 发表于 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

ddroyce 发表于 2004-12-15 18:39:00

我现在处理的就是单文本
我用的是ActiveDocument.open 打开的。
但是返回后,acaddoc里的不是"F:\ElectroSign\updataDwg\dwg\jxf.dwg",
而是AutoCAD默认drawing1.dwg。
我没法对"F:\ElectroSign\updataDwg\dwg\jxf.dwg",进行修改啊。
再次请教,谢谢!!:))

王咣生 发表于 2004-12-15 18:45:00

你打开你的AutoCAD, 看看SDI系统变量的当前值是什么? 如果是0把它改成1,再运行你的程序?

ddroyce 发表于 2004-12-15 18:52:00

太感谢你了!:)
不过我还是有两个问题不懂:
1. Set acadapp = GetObject(, "autocad.application.16")               
为什么要用autocad.application.16而不用autocad.application啊??
2.为什么ActiveDocument.open就不能打开而                Documents.open就可以啊?
我处理的就是单文本啊??
呵呵

王咣生 发表于 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函数吧),来判断.
页: [1]
查看完整版本: [求助]vb中怎么打不DWG文件啊?