在用.net进行CAD二次开发的时候,偶尔会出现致命错误,经总结,发现有两点会引起致命错误,在此记下,一来供自己参考,二来与大家分享 : )

致命错误一:

  描述:声明了DBObject对象,但未将对象提交到Database中,会引起致命错误。

  实例:在需要作条辅助线与图面已有多段线求交点的时候,而辅助线不需要绘制到CAD中时,记得要将辅助线Dispose,不然随着CAD的运行,会出现致命错误。

  可以看看这篇文章http://through-the-interface.typepad.com/through_the_interface/2012/08/examples-of-calling-dispose-on-autocad-objects.html

致命错误二:

  描述:获取对象了ObjectId作为全局变量,在往HostApplicationServices.WorkingDatabase里打开事务Transaction对全局的ObjectId进行操作时出现致命错误。

  实例:HostApplicationServices.WorkingDatabase是可以设置和变化的,并不一定是当前MdiActiveDocument的Database,比如CAD的自动保存,当打开多个文件时,文件自动保存时对每个文档进行的,这时候WorkingDatabase就进行了切换,而MdiActiveDocument还是最前面的文档。

  以上是开发过程中发现的问题,欢迎补充!

05-11 15:18