- 积分
- 935
- 明经币
- 个
- 注册时间
- 2003-5-28
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
本帖最后由 sealive 于 2014-8-13 19:04 编辑
代码如下:
<CommandMethod("CLA", CommandFlags.Session)> Public Sub CloseAll()
Dim FileNames() = {"c:\drawing1.dwg", "c:\drawing2.dwg", "c:\drawing3.dwg"}
For Each FileName As String In FileNames
Application.DocumentManager.Open(FileName, False)
Zoom(New Point3d(), New Point3d(), New Point3d(), 1.01075)
Dim db As Database = HostApplicationServices.WorkingDatabase
Using Trans As Transaction = db.TransactionManager.StartTransaction()
db.SaveAs(db.Filename, True, DwgVersion.Current, db.SecurityParameters)
Trans.Commit()
End Using
db.Dispose()
Next
For Each acDoc As Document In Application.DocumentManager
acDoc.CloseAndDiscard()
Next
End Sub
用上面的代码连续打开多张图纸,执行ZOOM操作后保存文件,无论是在保存后的循环里关闭文件,还是单独再开一个循环关闭文档,都会产生致命的错误导致CAD程序崩溃。逐步调试时发现,for each acDoc As Document in Application.DocumentManager取得的acDoc变量值在循环到新打开的图时值会变为“变量未指定到对象的实例”的信息,而在执行CLA命令前已经打开的文档就不存此问题,且可以成功关闭,不知道原因是什么?(关闭当前活动的文档有问题吗?)
也试过acDoc.SendStringToExcute("CLOSE" & vbcr,false,true,true)方法,也不成功,提示为:eNoDocument。 |
|