C#语言对AutoCAD二次开发

Posted GIS前沿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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之间的关系如下图所示:


C#语言对AutoCAD二次开发(二)

C#语言对AutoCAD二次开发(二) Application、Document和Database关系图


Database属于ApplicationServices命名空间,在写程序之前先导入ApplicationServices命名空间。

C#语言对AutoCAD二次开发(二)C#语言对AutoCAD二次开发(二)


获取当前打开的活动文档方法C#语言对AutoCAD二次开发(二)

C#语言对AutoCAD二次开发(二)


获取数据库的两种方法

  1. 直接通过HostApplicationServices的WorkingDatabase属性进行获取;

    C#语言对AutoCAD二次开发(二)

  2. C#语言对AutoCAD二次开发(二)先获取当前文档,然后在通过当前文档获取对应的数据库。

    C#语言对AutoCAD二次开发(二)

C#语言对AutoCAD二次开发(二) 

关于AutoCAD数据库的基本知识

表:数据库的组成单位。在CAD图形中包含9个符号表。

记录:是表的组成单位,一个表中可能包含多条记录,也可能不包含任何记录。

C#语言对AutoCAD二次开发(二) 

C#语言对AutoCAD二次开发(二)

CAD图形的组成


向CAD添加图元的基本步骤如图:

C#语言对AutoCAD二次开发(二) 

C#语言对AutoCAD二次开发(二)

添加实体流程图


下面我们向CAD中添加一个实体、以一条线段为例。首先在Visual Studio2013中新建一个名称为AddLine解决方案。完整代码如下:

C#语言对AutoCAD二次开发(二) 

C#语言对AutoCAD二次开发(二)

添加线段代码


【调试】——【启动调试】或者按“F5”(有关调试配置可以参考第一篇文章:),启动AutoCAD应用程序,在命令行输入Netload,加载“AddLine.dll”文件。

C#语言对AutoCAD二次开发(二) 

C#语言对AutoCAD二次开发(二)

加载应用程序


输入ADDLINE命令,程序在模型空间就绘制出一条起点(100, 100, 0),终点(600, 600, 0)的直线。如下图:

C#语言对AutoCAD二次开发(二)

C#语言对AutoCAD二次开发(二)

程序绘制的线段


总结:这篇文章主要讲了CAD文档(Document)的组部分、Document与图形数据库(Database)之间的关系,以及向CAD文档中添加图形过程中要经过的几个步骤;并且用代码向模型空间中添加了一个线段(实体[Entity])、添加图形到数据中必须根据需要以“读”或者“写”的方式进行“打开”块表(BlockTable)和块表记录(BlockTableRecord),不然程序就会产生致命错误等情况。在以后的学习中我们也会详细讲解添加其他类型的实体到文档中,比如多段线,圆、圆弧等,以及事务处理和ObjectId的使用等课程的学习。


- END -








戳原文,更有料!

以上是关于C#语言对AutoCAD二次开发的主要内容,如果未能解决你的问题,请参考以下文章

C#程序对AutoCAD二次开发

基于C#编程语言的CAD二次开发技术---展测量点坐标

怎样用VB对AutoCAD 进行二次开发?急!急!急!

autocad二次开发的为啥要对AutoCAD进行二次开发

用C#做autocad二次开发的时候,autocad图形对象类是不是要自己编写?

AutoCAD二次开发