使用路线软件时AutoCAD崩溃

著作权归作者所有,任何形式的转载都请联系作者。

近段时间,得到反馈,说路线CAD软件使用时经常崩溃。在这里细说一下AutoCAD的崩溃。

一、相关背景及系统设计初衷

本人深受AutoCAD崩溃之苦,最早是从大学期间AutoCAD R12 ADS开发开始。开发过程中,ADS程序出错导致AutoCAD R12崩溃,AutoCAD崩溃导致Windows 95崩溃,一天死机三五十次,是常事,苦不堪言。直到Windows 98出现,其健壮性得到了极大改善,AutoCAD崩溃才很少导致系统崩溃。后来,ADS开发升级为ObjectARX开发,ARX程序与AutoCAD共享内存空间,无论是ARX程序出错还是AutoCAD出错,都会导致AutoCAD崩溃,次数较多,且难以控制。工作中,本人使用路线CAD软件的实际经历来讲,它导致AutoCAD崩溃次数一天有时十多次,尤其是纵断面设计,达到泪崩的地步,费时费力,阴影面积巨大。

正因如此,本人对AutoCAD的崩溃可以说是“深恶痛绝”,一直想方设法降低AutoCAD二次开发程序导致AutoCAD崩溃的可能性。路线CAD软件在开发之初从系统架构上就尽量减少导致系统崩溃的因素。为此,花了不少时间开发了自己独立的几何库和代数库,在核心计算中不再使用AutoCAD提供的各种函数,大多数功能里,AutoCAD仅仅作为路线CAD软件的输入和输出平台,这样大大减少了与AutoCAD内存的信息交换,将AutoCAD崩溃现象大幅度降低,AutoCAD崩溃得到有效改善,当然未完全消除。

二、从软件系统设计看AutoCAD崩溃

从JSL-路线专家系统的系统架构设计分析,主要功能导致AutoCAD崩溃的可能性。

1、平面定线。路线CAD软件的定线流程如下:⑴输入:获取AutoCAD的直线和圆弧/圆实体,将其转换为路线专家自己的实体;⑵定线计算:在路线专家系统内部进行系列定线计算,此时利用独立的代数库和几何库,与AutoCAD完全无关;⑶输出:将定线结果转换为AutoCAD实体绘制显示。整个定线过程与AutoCAD交互少,导致AutoCAD崩溃概率低。而一般需要打开大地形图,占用内存大,定线对地形图文件操作频繁,导致内存异常概率大。因此,平面定线过程中,AutoCAD崩溃由路线CAD软件引起的概率低,估计应该在10%以下。此时崩溃的原因难以追踪。

2、纵断面拉坡。路线CAD软件的纵断面拉坡线是AutoCAD的自定义规则实体(与ObjectARX的自定义实体相同),这部分功能与AutoCAD是深度绑定,且纵断面拉坡文件小,程序不完善导致AutoCAD崩溃的可能性大。如果在拉坡时AutoCAD出现崩溃现象,绝大部分可能是路线CAD软件导致。此时导致崩溃的原因也难以捕捉,牵涉到AutoCAD的内核,遇到崩溃问题只能尽量解决。

3、横断面设计。横断面设计整个过程与AutoCAD完全无关,由于横断面地面线的数据量巨大(一个测点是一笔数据库记录,横断面地面线可能达到几十万笔),设计过程中可能导致AutoCAD崩溃。此时,崩溃点比较容易追踪,通过完善代码,大部分崩溃问题可以得到解决。

4、内存树管理。路线CAD软件采用内存树管理所有的数据。C#并不像C/C++一样直接操作内存,C#有专门的内存管理机制,出现异常导致崩溃的可能性较低。虽然如此,因内存树的数据量大,程序不完善可能导致AutoCAD崩溃。若出现异常,可以重现的崩溃比较容易找到解决方案,否则难以解决。

综上所述,路线CAD软件导致AutoCAD崩溃,主要应该集中在平面定线和纵断面拉坡两个功能。以本人的使用经历,一个半天定线,AutoCAD崩溃一两次是有可能的,其他使用情况下更低,崩溃五次八次明显不正常,需要多方面分析原因。

三、AutoCAD崩溃解决方案

客观地说,AutoCAD崩溃的原因有很多种,其中一部分肯定是操作系统等其他方面的问题;是路线CAD软件的这部分问题,AutoCAD崩溃一般都难以重现,不能跟踪调试,解决还是有一定难度,只能从外在表现去推断出现问题的原因,尽量从原理和机制上避免崩溃出现。但不管是什么问题,只要影响到路线CAD软件使用,开发团队都义不容辞尽力解决。下面介绍一些解决方案。

1、当AutoCAD软件出现崩溃时,重启AutoCAD,如果问题不再重复出现,很可能是偶然错误导致。

2、当同样的崩溃现象重复多次出现时,建议重新启动Windows系统,排除操作系统错误导致的崩溃。

3、若在操作系统重启后,还是反复出现,请将崩溃时的状况、与路线CAD软件相关的提示截图、崩溃提示里的详细信息内容反馈给技术支持,方便开发团队分析原因,完善软件。

4、建议从七个方面操作降低崩溃概率:

⑴建议经常进行操作系统维护,使操作系统保持良好状态,操作系统重装时间最长不超过2年,一般情况下建议1年左右。操作系统长时间使用,各种软件反复安装、卸载,会导致系统出错,出现一些莫名其妙的问题。

⑵如果经常使用大地形图定线,建议内存至少8G以上。本人原来的笔记本4G内存,台式机12G内存,台式机能生成300+MB的平纵面缩图PDF,而同样的文件在笔记本上生成时直接报错。

⑶强烈建议使用AutoCAD 2012 64位。AutoCAD 2012 32位稳定性较差,曾经只打开1个100MB的文件平移、缩放几下,AutoCAD直接崩溃。

⑷地形图检查、清理。当拿到测绘单位提交的地形图时,建议清理检查。将多余的垃圾实体等清除,这里重点说一下三维等高线。CASS生成的地形图(标志是等高线图层为DGX)往往有三维多段线,该线形将地形图大小迅速增大,AutoCAD提供的Convertpoly转换有时无效,可以使用路线CAD软件提供的“辅助→三维多段线转换”,将三维多段线转换为轻多段线,文件大小会迅速降低。本人曾经将最美水上公路不到11公里的地形图由60MB降为10MB,某二级公路80公里地形图由180M降为118MB,某西藏高速公路70km地形图200MB降为140MB,降幅比例较大。这样无疑大大降低了AutoCAD崩溃的概率。当文件超过100MB较多时,建议分为2个文件。

⑸地形图存储版本不建议采用低版本。昨天深圳某高速公路约60km的地形图,地形为微丘区,全线地形图为59.5MB,为AutoCAD 2000文件格式,存为AutoCAD 2010格式后,文件降为40MB以下,再经过清理等工作,最后为36.5MB,降幅达38%,这无疑让地形图加载速度更快,崩溃概率更低。

⑹使用地形图或某个DWG文件崩溃时,使用菜单文件→核查、修复(两个功能),对DWG文件使用过程中产生的各种错误进行修复,降低崩溃概率。

⑺长时间(几个小时以上)打开文件,尤其是地形图,进行操作,容易导致AutoCAD崩溃,那么可以保持项目文件、保持DWG文件,关闭AutoCAD,再重新打开继续操作。

5、总结AutoCAD崩溃出现的原因以及所做的操作,如果有些操作明显导致AutoCAD崩溃,那么尽量绕避这些操作。

6、降低崩溃的损失。既然崩溃难以完全消除,那么要想办法降低AutoCAD崩溃带来的损失。第一,将AutoCAD的自动存盘时间改为3分钟或5分钟,默认值为120分钟,显然太长。当AutoCAD崩溃时,可以在C:\Users\<用户名>\AppData\Local\Temp目录下找到崩溃时打开文件的文件名相关的*.sv$,将后缀改为.dwg即可恢复到崩溃前几分钟的状态。第二,若崩溃导致文件损坏,请参考《Dwg文件损坏了,不再闹心》;第三,有时崩溃后项目文件无法打开,可以恢复项目文件目录下与项目文件同名的.tmp,将后缀改为.sdb即可。

四、已经发现的AutoCAD崩溃现象

1、最小化后恢复崩溃,不是每台计算机都出现,原因不明,估计是操作系统的原因比较大;

2、新装系统,休眠后偶尔出现内存冲突导致崩溃,不是每台计算机出现,原因不明,估计是软件兼容方面的问题,正进一步排查。

不打没有准备的仗,通过前面的处置方法和手段,AutoCAD的崩溃将大为降低,再者即使崩溃,也并不可怕。希望大家能够愉快地使用JSL-路线专家系统,使用中有问题请反馈给我们!

你可能感兴趣的:(使用路线软件时AutoCAD崩溃)