C#语言对AutoCAD二次开发(二)
在上节课程学习中,我们讲解了AutoCAD的对象模型和配置Visual Studio 2013+ObjectARX开发C#的CAD扩展应用程序、以及如何调试编写的代码并加载到AutoCAD软件中进行使用。下面来开始讲解一下CAD文档和存储图形的一些原理,最后如何用代码绘制一条线段。
在启动AutoCAD应用程序进行画图时,CAD软件会新建一个“Drawing1.dwg”文件;在这个dwg文件中可以绘制线段、多段线、圆、圆弧、样条曲线等增加实体(Entity)图形,也可以修改图形位置,打断、镜像、复制、删除等对实体图形进行编辑。在学习AutoCAD软件使用时,都是从最基本的创建图形开始进行学习;同样,在学习 .Net二次开发时,从创建基本的图形对象开始学习仍然是最有效的选择,使用程序绘制一些图形,当程序运行后,图形窗口出现写出的图形,这样在学习的过程中就会产生浓厚的兴趣。
CAD进行处理图形的过程中,实际上就是操作打开的当前文档(Document),也是数据库(Database)显示给用户看的视图。dwg图形其实也是一个轻量级的数据库文件。一个Document与一个Database一一对应。按照应用程序(Application)的规定把Database中的对象显示给用户,同时用户对Document的操作也会通过Application回写到数据库,在这个过程中也会对文档进行锁定和解锁,以防止后台修改数据库时前台文档也在同时修改。
Application、Document和Database之间的关系如下图所示:
Database属于ApplicationServices命名空间,在写程序之前先导入ApplicationServices命名空间。
获取当前打开的活动文档方法
获取数据库的两种方法
直接通过HostApplicationServices的WorkingDatabase属性进行获取;
先获取当前文档,然后在通过当前文档获取对应的数据库。
关于AutoCAD数据库的基本知识
表:数据库的组成单位。在CAD图形中包含9个符号表。
记录:是表的组成单位,一个表中可能包含多条记录,也可能不包含任何记录。
CAD图形的组成
向CAD添加图元的基本步骤如图:
添加实体流程图
下面我们向CAD中添加一个实体、以一条线段为例。首先在Visual Studio2013中新建一个名称为AddLine解决方案。完整代码如下:
添加线段代码
【调试】——【启动调试】或者按“F5”(有关调试配置可以参考第一篇文章:C#程序对AutoCAD二次开发(一)),启动AutoCAD应用程序,在命令行输入Netload,加载“AddLine.dll”文件。
加载应用程序
输入ADDLINE命令,程序在模型空间就绘制出一条起点(100, 100, 0),终点(600, 600, 0)的直线。如下图:
程序绘制的线段
总结:这篇文章主要讲了CAD文档(Document)的组部分、Document与图形数据库(Database)之间的关系,以及向CAD文档中添加图形过程中要经过的几个步骤;并且用代码向模型空间中添加了一个线段(实体[Entity])、添加图形到数据中必须根据需要以“读”或者“写”的方式进行“打开”块表(BlockTable)和块表记录(BlockTableRecord),不然程序就会产生致命错误等情况。在以后的学习中我们也会详细讲解添加其他类型的实体到文档中,比如多段线,圆、圆弧等,以及事务处理和ObjectId的使用等课程的学习。
- END -