[求助]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进行修改啊??
在此请教高手!:)
怎么可能?dwg文件一直没打开吗?还是没有激活active? 当在多文档界面模式下运行时,用户必须从 Documents 集合使用 Open 方法。当在单文档界面模式运行时,用户必须从 Document 对象使用 Open 方法。
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 我现在处理的就是单文本
我用的是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]