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

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

我写了一个程序:


Dim acadapp As New AcadApplication                                       '建立Application对象<BR>Dim acaddoc As New AcadDocument                                                               '建立Document对象<BR>On Error Resume Next


Set acadapp = GetObject(, "autocad.application")               '若AutoCad已启动 , 则直接得到<BR>If Err Then<BR>       Err.Clear<BR>       Set acadapp = CreateObject("autocad.application")               '若AutoCad未启动,则运行它<BR>       If Err Then<BR>               MsgBox Err.Description<BR>               Exit Function<BR>       End If<BR>End If<BR>MsgBox "Now running " + acadapp.Name + " version " + acadapp.Version


acadapp.Visible = True<BR>Set acaddoc = acadapp.ActiveDocument                                                                                                                               '设acaddoc为当前图形文件


Dim dwgname As String<BR>dwgname = "F:\ElectroSign\updataDwg\dwg\jxf.dwg"<BR>If Dir(dwgname) &lt;&gt; "" Then<BR>       acaddoc.Open(dwgname) '打开一个CAD文件<BR>       acadapp.Visible = True       '使AutoCad可见<BR>Else<BR>       MsgBox "没有此文件"<BR>End If


jxf.dwg文件找得到,为什么AutoCad可见后,仍然是默认的Drawing1.dwg啊?


这样的话,我无法对jxf.dwg进行修改啊??


在此请教高手!:)<BR>

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

<BR>Dim acadapp As New AcadApplication                                       '建立Application对象<BR>Dim acaddoc As New AcadDocument                                                               '建立Document对象<BR>Dim acaddocs As AcadDocuments


<BR>Private Sub Command1_Click()<BR>                       On Error Resume Next<BR>                       <BR>                       Set acadapp = GetObject(, "autocad.application.16")               '若AutoCad已启动 , 则直接得到<BR>                       If Err Then<BR>                                       Err.Clear<BR>                                       Set acadapp = CreateObject("autocad.application.16")               '若AutoCad未启动,则运行它<BR>                                       If Err Then<BR>                                               MsgBox Err.Description<BR>                                               Exit Sub<BR>                                       End If<BR>                       End If<BR>                       MsgBox "Now running " + acadapp.Name + " version " + acadapp.Version<BR>                       <BR>                       acadapp.Visible = True<BR>                       Set acaddoc = acadapp.ActiveDocument                                                                                                                               '设acaddoc为当前图形文件<BR>                       Set acaddocs = acadapp.Documents<BR>                       <BR>                       Dim dwgname As String<BR>                       dwgname = "d:\a.dwg"<BR>                       If Dir(dwgname) &lt;&gt; "" Then<BR>                                       acaddocs.Open (dwgname) '打开一个CAD文件<BR>                                       acadapp.Visible = True       '使AutoCad可见<BR>                       Else<BR>                                       MsgBox "没有此文件"<BR>                       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文件啊?