[求助]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) <> "" 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>
回复
怎么可能?dwg文件一直没打开吗?还是没有激活active? 当在多文档界面模式下运行时,用户必须从 Documents 集合使用 Open 方法。当在单文档界面模式运行时,用户必须从 Document 对象使用 Open 方法。 <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) <> "" Then<BR> acaddocs.Open (dwgname) '打开一个CAD文件<BR> acadapp.Visible = True '使AutoCad可见<BR> Else<BR> MsgBox "没有此文件"<BR> End If
End Sub 我现在处理的就是单文本
我用的是ActiveDocument.open 打开的。
但是返回后,acaddoc里的不是"F:\ElectroSign\updataDwg\dwg\jxf.dwg",
而是AutoCAD默认drawing1.dwg。
我没法对"F:\ElectroSign\updataDwg\dwg\jxf.dwg",进行修改啊。
再次请教,谢谢!!:))
回复
你打开你的AutoCAD, 看看SDI系统变量的当前值是什么? 如果是0把它改成1,再运行你的程序? 太感谢你了!:)不过我还是有两个问题不懂:
1. Set acadapp = GetObject(, "autocad.application.16")
为什么要用autocad.application.16而不用autocad.application啊??
2.为什么ActiveDocument.open就不能打开而 Documents.open就可以啊?
我处理的就是单文本啊??
呵呵
回复
1. 16是当前autocad的版本,如果本机上安装了autocad2000,autocad2004,那么要调用哪个呢, "autocad.application.15"就代码前者,"autocad.application.16"代表后者;2. 如mccad所说, 如果当前的autocad实例设置为单文档的,那么用Document.open就可以,反之,要用Documents.open; 可以取得系统变量SDI的值(GetVariable函数吧),来判断.
页:
[1]