1、CAD崩溃,错误“unhandled access violation reading”=“未将对象引用设置到对象的实例”。

2、

建模操作错误:指向给定边的指针为空。

建模操作错误:访问冲突。

acdbmgdeGeneralModelingFailure

这类错误是CAD直接在其命令行中输出提示的,有时候会引发CAD崩溃,但有时候又不会引发崩溃。

我碰到的这种类错误的情况是:频繁对一些Region进行重复炸碎,出现了这类错误。重复时间间隔越短越容易出问题,有时候中间间隔十几秒半分钟,但还会引发这类错误。

原因可能是炸碎之后对象的释放不及时,CAD内存管理上出了问题;炸碎之后的实体存放在了DBObjectCollection中,虽然这个类的继承了IDisopsable,并且实现了Dispose方法和析构函数,但C#对它的释放时机好像没有把握对,释放的太晚,可能我第一次炸碎之后的得到的对象,在我第二次进行炸碎操作的时候还没有释放掉,或者在炸碎的过程中进行了释放,于是出错误。

而对于释放不及时的原因,我猜想是因为DBObjectCollection内部有些地方用了GC.KeepAlive,而使得C#对它的释放不够及时。

解决的办法是尽量手动释放,发现这个问题之后,我刚开始是在使用完炸碎Region得到的DBObjectCollection之后,进行了统一的释放,但是还会出现这类错误。于是在使用DBObjectCollection的循环内部,每次循环结束后,主动调用每个DBObject的Dispose方法,然后在循环结束之后,再对DBObjectCollection进行统一释放,至此,没有再出现这类错误。

3、不会命中断点,源代码与原始版本不同。

在时候用VS调试代码的时候设的断点无效,断点上会出来一个黄色的三角形,鼠标放上去会提示“不会命中断点,源代码与原始版本不同”,出现这种情况可以把项目中bin文件夹和obj文件夹清空,然后再重新生成解决方案。如果不能解决,可以找到工具->选项->调试->要求源文件与原始版本完成匹配,去掉勾选。

4、eNonCoplanarGeometry

当实体不共面时,即有些实体的Z值不为0,则进行想到计算、判断时(如面域的布尔运算),会有此提示,此时把对应实体或所有实体的Z值全部清零即可,或者是在进行计算、判断前先判断每个参与操作的实体的Z值是否为0,如果不为0则跳过不进行运算。

5、eNotApplicable

情况1:一个面域是复合面域,是一个回字形面域,但它里面的那一块非常非常小,此时将它炸开时会失败(不管是用接口的炸开还是用CAD命令炸开都会失败)。

AutoCAD.NET二次开发错误集锦的更多相关文章

  1. 利用C#进行AUTOCAD的二次开发

    众所周知,对AutoCAD进行二次开发用到的主要工具有:ObjectArx,VBA,VLisp.但它们的优缺点是显而易见的:ObjectArx功能强大,编程效率高,但它的缺点是编程者必须掌握VC++, ...

  2. AutoCAD .NET二次开发(一)

    其他话不多说,直接进入主题,既然是二次开发,当然是用CAD平台已经封装好了很多类,我们需要熟悉和使用它们.常用的AutoCAD .NET API的四个主要DLL文件是: 名称 作用 备注 AcDbMg ...

  3. ArcEngine10.1二次开发错误: 无法嵌入互操作类型,请改用适用的接口

    在之前配置ArcEngine.VS2010二次开发程序的时候,遇见"无法嵌入互操作类型,请改用适用的接口"的错误,在网上查了下,下面引用解决方法. 解决方式为在提示错误的引用上面右 ...

  4. AutoCAD C#二次开发

    https://www.cnblogs.com/gisoracle/archive/2012/02/19/2357925.html using System; using System.Collect ...

  5. AutoCAD.NET二次开发:创建自定义菜单(AcCui)

    从CAD2007之后,Autodesk提供了一个新的程序集AcCui.dll,使用这个程序集,我们可以方便地做一些界面方面的操作,比如创建自定义菜单. 下面介绍一下菜单的创建过程: 1.在项目中添加引 ...

  6. 【Android 应用开发】Android 开发错误集锦

    1. eclipse的Device中不显示手机 在eclipse中连接不上手机,出现adb server didn't ACK  fail to start daemon 错误. 出现这种原因是因为a ...

  7. ArcEngine二次开发错误编码对照表(转)

    阅读数:3323 每当我们在进行AE开发,出现错误时经常会出现错误代码,但是我们并不知道它到底代表什么意思,这里的而错误编码我们可以对照着找到我们需要的时候常详细信息(问题是,经常还是会出现没有错误编 ...

  8. Android 开发错误集锦

    1. eclipse的Device中不显示手机 在eclipse中连接不上手机,出现adb server didn't ACK  fail to start daemon 错误. 出现这种原因是因为a ...

  9. AutoCAD .NET二次开发(四)

    在CAD中,属性信息一般是以注记的形式存在,但当属性数据内容较多时,显示就成了问题.扩展属性(Xdata)可以解决这一问题,比如南方Cass中就利用了这一点.我们经常用Lisp来读取操作扩展属性. 查 ...

随机推荐

  1. UVa 11107 (后缀数组 二分) Life Forms

    利用height值对后缀进行分组的方法很常用,好吧,那就先记下了. 题意: 给出n个字符串,求一个长度最大的字符串使得它在超过一半的字符串中出现. 多解的话,按字典序输出全部解. 分析: 在所有输入的 ...

  2. 每个极客都应该知道的Linux技巧

    每个极客都应该知道的Linux技巧 2014/03/07 | 分类: IT技术 | 0 条评论 | 标签: LINUX 分享到:18 本文由 伯乐在线 - 欣仔 翻译自 TuxRadar Linux. ...

  3. 学会简单使用poi进行excel有关操作

    直接上代码: 官网上的抄的api例子: package com.test; import java.io.File; import java.io.FileInputStream; import ja ...

  4. 20160202.CCPP体系详解(0012天)

    内容概要:C语言控制语句题库.doc 第三章 控制语句 一.选择题 1. 以下语句中无限循环语句是[B]. A)for(;2&5;); B)while(1,2,3); -> while( ...

  5. linux各种查看端口号

    1.  查看端口占用情况的命令:lsof -i    [root@www ~]# lsof -i         COMMAND PID USER FD TYPE DEVICE SIZE NODE N ...

  6. 【转】Github轻松上手5-站在巨人的肩膀上(Fork)

    转自:http://blog.sina.com.cn/s/blog_4b55f6860100zzj3.html 有时候你可能想给别人的项目出把力,或者想以别人的项目作为自己项目的起点,在Github里 ...

  7. Android WebView中那些不得不解决的坑~~

    前面那张hybrid开发心得 有人问 怎么解决不用onJsPrompt 来回调js函数的问题.其实很简单,就是在在你的jscalljava回调函数内 另外开个线程去load js代码即可: wb.po ...

  8. for-in遍历json数据

    1.for遍历json数据 ','fun':'前端开发'} for(var attr in json){ alert(json[attr]) //遍历json属性的数据 alert(json['nam ...

  9. window 7 下一台cp 两个mysql 配置主从

    环境 : 个人 pc windows7 一台 ; 使用 : 官方下载: mysql-noinstall-5.5.11-win32.zip 1. 解压 成2个 (文件夹) mysql_master (主 ...

  10. UIScrollView 不能滚动的问题

    uiscrollview是开发sdk自带的控件, 在使用的时候,发现滚动不了, 最常山见的原因是 contentSize 这个属性,比uiscrollview的frame要小...所以无需滚动,自然就 ...