C#之CAD二次开发

# 0. 引言

前面记录了一堆东西,涉及到AutoCAD .NET中的各种对象,感觉如果不整理一些还是挺乱的,善于总结是好习惯!

在CAD中其实里面的所有的内容都可以看成是对象,不然C#这种面向对象的语言也不会在这里如鱼得水。

其实每一个CAD文件(DWG或者是DXF)都对应了一个数据库(Database),之前也了解了,如果需要对CAD文件进行操作,先得声明一个数据库对象,也就是是数据库本身也就是一个对象

Database db = HostApplicationServices.WorkingDatabase;

这样才能拿到这个数据库中的的各种组成部分,包括点、多段线、文字、图层、颜色、线型,这些都是对象,总结下来一句话:“一切皆对象”,即使是CAD图形本身和AutoCAD引用程序本身都是一个对象。

对象真多!能不能给自己也new一个~~

# 1. AutoCAD .NET 中的对象层级结构

这个东东其实前面已经提过好几遍了,就是没有单独整理一下,这些底层的东西最好是搞清楚,不然后面脑袋里会乱成浆糊

总结而言,这个Application对象就是AutoCAD .NET API的根对象,我们通过这个根对象来访问CAD主窗口和打开图形文件,并访问图形文件中的各个对象。当然,上面只列出了AutoCAD .NET API中的部分对象。

# 2. Application对象层级结构

Application对象下面的属性就是上图所示,图稍微有点长,看不懂没关系,了解大致框架

DocumentManger属性用于返回DocumentCollection对象,以便提供访问当前打开AutoCAD图形的功能,并允许你打开、保存、创建图形文件。MainWindow属性则允许访问引用程序的名称、主窗口大小、位置以及可见性等。其它的属性提供了访问应用程序特有的数据功能,如信息中心InfoCenter、主窗口、状态栏等。

# 3. Document对象层级结构

Document对象是DocumentCollection对象的一部分,本质上就是一个CAD图形,提供了访问与Document对象想相关联的Database对象的功能。

Doucument对象和Database对象一同提供了对编辑器(Editor)、事务管理器(TransactionManger)对象、图形窗口以及图形状态栏的访问。

Editor对象也就是之前我们用来和CAD窗口交互的那个东东,它提供了获取拥护输入的功能,你的输入形式可以是一个点或者说键入的一个字串和数值。

而事务管理器对象(TransactionManger)则用来管理多个数据库对象,事务可以嵌套。这就是我们之前要在数据库操作的时候,每次都要打开事务处理,最后提交事务处理的缘故。

# 4.Database 对象层级结构

Database对象包含AutoCAD所有的图形对象和大部分的非图形对象,其中就包含实体对象、符号表、命名字典等

这里的实体对象就是之前我们涉及的那些:直线、圆、文字、填充、多段线等

符号表和字典对象则提供对非图形对象的访问,例如:块、图层、线型、布局等。

在CAD中每一个图形都包含九个固定的符号表,不能往数据库中添加新的符号表。

每种符号表智能存储特定类型的对象,如块表存储块表记录。

而字典则是一种通用的容器,可存储任何类型的对象。

 

# 5.图形对象和非图形对象

这个我们之前文章一直涉及,这里也在此提及,毕竟CAD里面图形就是很基本也很重要的一个东东。

图形对象也就是图元,之前列举的那一堆,多段线、文字、各种图形。

非图形对象则是属于图形中的一部分不可见的对象,如图层(Layers)、线型(Linetypes)、标注样式(DimStyles)、表样式(TableStyle)。

 

 

就总结到这,有时候其实我们其实不是很关注这些基本内容,一上来就是代码,就是实现目的,怎么来的可能不是很清楚,未免有点本末倒置。

代码的最终目的是效率提升没错,但也别忽略基本的东西。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值