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. eclipse中字母大小写转换快捷键

    ctrl+shift+x   转为大写 ctrl+shift+y   转为小写

  2. 51nod1086 背包问题 V2

    我都快不会写二进制优化多重背包了...卡了一下常数从rank100+到20+... #include<cstdio> #include<cstring> #include< ...

  3. Kafka源码中的Producer Record定义

    1.ProducerRecord 含义: 发送给Kafka Broker的key/value 值对 2.内部数据结构: -- Topic (名字) -- PartitionID ( 可选) -- Ke ...

  4. 漫游Kafka实现篇之消息和日志

    消息格式 消息由一个固定长度的头部和可变长度的字节数组组成.头部包含了一个版本号和CRC32校验码. /** * 具有N个字节的消息的格式如下 * * 如果版本号是0 * * 1. 1个字节的 &qu ...

  5. ASP.NET路由系统实现原理:HttpHandler的动态映射

    我们知道一个请求最终通过一个具体的HttpHandler进行处理,而我们熟悉的用于表示一个Web页面的Page对象就是一个HttpHandler,被用于处理基于某个.aspx文件的请求.我们可以通过H ...

  6. Java之网络编程笔记

    网络通讯要素: 1.IP地址 IP地址:用于标记一台计算机的身份证. IP地址由网络地址(确定网络)和主机地址(网络中的主机)组成. IP地址分为A类地址.B类地址.C类地址(常用).D类地址.E类地 ...

  7. java实现的kmp算法

    package DataStructure; import java.util.ArrayList; import java.util.List; //KMP算法的实现 //以下代码由freedom结 ...

  8. 【原创】牛顿法和拟牛顿法 -- BFGS, L-BFGS, OWL-QN

    数据.特征和数值优化算法是机器学习的核心,而牛顿法及其改良(拟牛顿法)是机器最常用的一类数字优化算法,今天就从牛顿法开始,介绍几个拟牛顿法算法.本博文只介绍算法的思想,具体的数学推导过程不做介绍. 1 ...

  9. fcntl()功能 详解

    fcntl()函数可以改变已打开文件的性质 <pre lang="c" escaped="true"> #include <unistd.h& ...

  10. 【转】Android端与Android端利用WIFI进行FTP通信

    原文网址:http://www.cnblogs.com/zhangkai5157/p/4303188.html 一.客户端通信工具类: import java.io.File; import java ...