摘要: 何谓代理对象?当主应用程序没有加载时,打开了存在该应用程序中定义的对象的DXF或DWG文件,ACAD就必须为其创建一个代理对象,并支持对其很简单、基本的操作既然没有加载主应该程序,那么代理对象怎么知道,该对象对应的图形应该怎么显示?需要说明的是,DWG文件中,通常都保存了,最后一次WORLDDRAW或SAVEAS接口用来显示的图元信息,所以,代理对象不需要知道实体的图形如何显示,只需要把其对应的图园信息当一个块包来显示就得了。打开了拥有代理对象DWG文件怎么保存?保存分为两种了1. 当保存的时候,不存在文件转换时(也就是DWG文件打开,还是存回DWG文件,同理也可以用于DXF),代理对象按二进 阅读全文
posted @ 2013-04-14 13:02 编号一百零二 阅读(660) 评论(0) 推荐(0) 编辑
摘要: 作者:阿门首先,介绍一个WINDOWS的字符集,WINDOWS所支持的字符集包括两种,多字节和宽字符(UNICODE),而在WIN2K及其以上内核中,都是使用宽字符来实现的,但也保留了多字节支持的API接口,这个实现的原理,其实是收到多字节后,把其转换为宽字符,再传下内核对象处理的。还有一点需要说明,Mircosoft将COM从16位转换成32位时,规定了将需要字符串的方法只接受UNICODE字符串。下面先介绍一下两个宏运行时库头文件定义UNICODE环境的宏 UNICODEWindows头文件定义UNICODE环境的宏 _UNICODEMicrosoft公司提供的C运行时库与ANSI标准C运 阅读全文
posted @ 2013-04-14 13:00 编号一百零二 阅读(812) 评论(0) 推荐(0) 编辑
摘要: CGAL使用心得作者:李浩首先我说说我研究CGAL的背景,由于,早一阵子,有一个需求,需要求出在一堆二维线中(包括直线和弧线),找出所有的最小区域和最大外包。如下图所示。在这两个图形中,要快速的找到每一个最小的封闭区域和一个由这些最小封闭区域组成的一个最大封装区域。这样的算法,有,像最常见的建构多边形TOPO,然后用雷达扫描法,可以求出来。但是,这么多的算法开源库,让我下了使用开源库来解决这个问题的决心,很快我就锁定了CGAL这个强大的图形算法库。很快的我发现,CGAL里的ARRANGEMENT能够实现类似需求的功能,就这样,我开始慢慢的对ARRANGEMENT进行研究。但研究CGAL的应用, 阅读全文
posted @ 2013-04-14 12:59 编号一百零二 阅读(5714) 评论(0) 推荐(3) 编辑
摘要: 近期,由于项目的需要做一套撤销恢复机制,特地研究了一下AutoCAD(下文称为ACAD)的撤销恢复机制,ACAD的撤销和恢复是无限次的,也是就说,只要是同在一个会话(打开到关闭的一个过程)中的操作你都可以撤销到原来的状态或者是重做刚才被撤销的状态。而要实现整个一套机制的基础就包涵了所要说的三个主人公了。这篇文件就用来说明这三者之间的关系。从ACAD R13 Release版本起,为了处理数据库对象在内存生存周期而设计了一套方案。这个方案为每一个对象都引用了两个部分的内容。第一部分,就是数据库对象本身,它是能够常驻内存并且,如果内存需要释放的话它也能被换页到磁盘上,第二部分是一个叫做桩(stub 阅读全文
posted @ 2013-04-14 12:57 编号一百零二 阅读(1044) 评论(0) 推荐(0) 编辑
摘要: 作者:阿门很早以前就想整理一份这样的资料,趁着这次公司要召开研发大会 需要交一篇论文,就写下来了。截了一部分,贴上来让大家指正指正,呵呵。为公司软件实现的撤销恢复机制就不贴出来了,呵呵。。顺便贺下 公司的第一届研发大会。期待。。。转载请注明。。ACAD平台的撤销恢复机制主要就是以ACAD中执行的命令为单位的,下面将从使用这一套机制入手,来试着来分析这一套机制。如果想使用和了解ACAD的撤销恢复机制,必然要从自定义实体入手,因为,ACAD中所有的操作其实就是对DWG中数据对象的一些操作,只不过是以命令为单位来组织一个操作中的操作对象,所以ACAD的撤销恢复机制的针对对象都是ACAD的数据库对象, 阅读全文
posted @ 2013-04-14 12:56 编号一百零二 阅读(1151) 评论(0) 推荐(0) 编辑
摘要: 最近,有一个这样的需求,所以把解决方法给贴出来一下。首先,cad判断图纸是否被修改过,是根据一个变量的值来判断的,这个变量就是 DBMOD,很多人肯定会想到,那我把这个变量的值给修改成0或者是-1不就行了吗? 很不幸告诉你,这个变量是只读的。那么怎么办呢? 幸好桌子公司还挺厚道的,导出了一个接口给我们来修改database的这个flag,只不过是在官方的sdk文档里没有给出来而已,这个接口的原型如下://声明设置数据库模式的函数extern long acdbSetDbmod(AcDbDatabase * pDb, long newVal);这个函数在我以前的blog文章中也提到过,按照我上面 阅读全文
posted @ 2013-04-14 12:51 编号一百零二 阅读(1878) 评论(1) 推荐(0) 编辑