Autocad 2016与Cadworks 2016
我有2张图纸,一张带有cadworks对象,另一张只有autocad对象。以下代码适用于这两个图形,如果您没有安装 cadworks但安装了 Cadworks,则在带有 cadworks 对象的图形上弹出错误。任何人都有任何线索(它仍然保存,但消息框很痛苦) _。公共子测试代码()。
将 sFileName 显示为字符串 = “C:\Autodesk\test\test.dwg”。
。
使用 db 作为新数据库(False, True)。
分贝,ReadDwgFile(sFileName, IO.FileShare.ReadWrite, false, “”)。
Dim workDb As Database = HostApplicationServices.WorkingDatabase。
。
如果 HostApplicationServices.WorkingDatabasedb,则。
HostApplicationServices.WorkingDatabase = db。
如果结束。
。
'-----------------------------------------。
'编写代码以在此处执行某些操作。
'-----------------------------------------。
。
如果 HostApplicationServices.WorkingDatabaseworkDb,则。
HostApplicationServices.WorkingDatabase = workDb。
如果结束。
。
尝试。
'警告:保存期间出错,。
“我们建议您在绘图上运行 RECOVER,。
分贝,SaveAs(sFileName, DwgVersion.Current)。
Catch e As Autodesk.AutoCAD.Runtime.Exception '(无错误可捕获)。
分贝,关闭输入(真)。
Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage(e.Message)。
结束试用。
。
分贝,释放()。
结束使用。
。
结束子。
**** Hidden Message ***** 在设置数据库的过程中,您在做什么?切换数据库时不需要 if 语句。 只需切换它们,因为工作数据库将不是您创建的新数据库。 此外,一旦您将其切换到数据库数据库,您就知道它不是workdb,因此请将其切换回去。HostApplicationServices.WorkingDatabase = db。
。
'-----------------------------------------------。
'编写代码以在此处执行某些操作。
'-----------------------------------------------。
。
HostApplicationServices.WorkingDatabase = workDb如果您确定使用 2016,则可以使用 2015 附带的新审核功能,并在保存图形之前调用它, 这有时对我有用, 如果您使用VB.I过去确实遇到过此问题,请确保您引用Autodesk.Autocad.ApplicationServices.DatabaseExtensions并将尝试查看我是否可以找到实际导致它的原因, 我很确定这与我在侧数据库中工作时的某个时候使用错误的数据库有关。
我还忘了补充一点,您正在两次处置数据库。 一次使用释放语句,再次使用结束使用。 最后,还有一件事。你有没有试着用FileOpenMode.OpenForReadAndWriteNoShare而不是IO.FileShare.ReadWrite?我似乎记得它给我带来了这个问题,我不得不使用FileOpenMode。 关于不需要if语句以及double Dispose,您的回答是正确的。我从来没有遇到过IO.FileShare.ReadWrite的问题。但尽管如此,它对db仍然没有帮助。另存为(sFileName,DwgVersion.Current) 您从未提及是否正在对图形进行任何处理,如果是,您正在做什么
我在AutoCAD 2016中使用CadWorx 2016在一个侧数据库中工作,没有这个问题
我创建和打开侧数据库的代码与您发布的代码相同。 一些观察结果。
1.当我从cadworx模板创建新图形并向其添加外部参照时,代码中没有出现错误。
2.我可以通过打开我的现有图形进行复制。
3.删除数据库切换调用没有任何效果。
4.打开一个只有一小段管道的图形没有问题
可能是某个特定的cadworx实体导致了该问题。在图形关闭时,cadworx可能正在执行某些操作,这会在使用侧数据库时导致错误。 你说得对,这毕竟是一个特定的cadworx实体
谢谢你的帮助。
页:
[1]