基于.NET的CAD二次开发学习笔记二:AutoCAD .NET中的对象

1、CAD对象:一个CAD文件(DWG文件)即对应一个数据库,数据库中的所有组成部分,看的见(包括点、多段线、文字、圆等)和看不见(图层、线型、颜色等)的都是对象,数据库本身也是一个对象。

  • 直线、圆弧、文字和标注等图形对象都是对象。
  • 线型与标注样式等样式设置都是对象。
  • 图层、编组和块等组织结构都是对象。
  • 视图与视口等图形显示都是对象。
  • 甚至图形和 AutoCAD 应用程序本身也是对象。

2、CAD中的容器:对于任何一个DWG文件,都会创建下列容器对像:九个固定的符号表(如下)和有名对像字典(包含Group字典和Mline样式字典)。CAD中的所有对象都放在这些容器对象中,符号表及有名对象字典都具有同样的功能,即组织和管理CAD数据库中的对象。即它们含有实体对象,可以通过文字字符串作为关键字对对象实体进行查询,并向这些容器添加记录(记录即对象),修改记录。

3、符号表与字典的不同:符号表如下所示有9种,每种符号表只能存储特定类型的对象(如块表只能存储块表记录,层表只能存储层表记录),而字典则是一种通用容器,可存储任何类型的对象。(一般多是通过符号表操作对象)

9种符号表:

1)块表(BlockTabLe)

2)尺寸标注样式表(DimStyleTable)

3)层表(LayerTable)

4)线型表(LinetypeTable)

5)应用程序注册表(RegAppTable)

6)文字样式表(TextStyleTable)

7)用户坐标系表(UCSTable)

8)视口表(ViewportTable)

9)视图表(ViewTable)

4、AutoCAD .NET API中的对象层次

1)Application对象层次

Application 对象是 AutoCAD .NET API 对象模型的根对象。通过 Application 对象,用户可以访问主窗口以及任何打开的图形。一旦用户获得了图形,就可以访问图形中的对象。

例如,Application 对象具有 DocumentManager 特性,该特性可以返回 DocumentManager 对象。该对象提供对AutoCAD中当前图形的访问并允许用户并允许用户创建、保存和打开图形文件。通过 Application 对象提供的其它特性可以专用数据,例如信息中心(InfoCenter)、主窗口(main window)和状态栏(status bar)。MainWindow 特性允许用户访问应用程序的名称、 大小、位置和可见性。

虽然 Application 对象的特性允许访问 AutoCAD .NET API 的大多数对象,也有一些 AutoCAD ActiveX® Automation 对象的引用。这些特性包括 application 对象的 COM 版本(AcadApplication),菜单栏(MenuBar),加载的菜单组 (MenuGroups)和参数选项 (Preferences)。

2) Document的对象层次

Document 对象实际上就是 AutoCAD 图形,它是 DocumentCollection 对象的一部分,并提供访问与 Document 对象相关的 Database 对象。 Database 对象包括所有的图形和大部分非图形的 AutoCAD 对象。

连同 Database 对象一起, Document 对象提供访问图形状态栏(StatusBar),document 对象被打开的窗口(Window),Editor (Editor) 和事务管理器(TransactionManager)的对象。Editor 提供用户以输入形式获取的点、输入字符串或数字值的功能。

事务管理器对象用于访问将多个 database 对象下的单个操作当作一个 transaction 对象。事务可以被嵌套,当用户完成事务时,可以提交或放弃已做的改变。

3)DataBase对象层次

Database 对象包括所有的图形和大部分非图形的 AutoCAD 对象。 被包含在 Database 中的一些对象有实体,符号表,命名字典。实体在 Database 中表示图纸内部的图形对象。直线、圆、圆弧、文本、填充和多段线都是实体的一个例子。用户可以在屏幕上看到一个实体并可以操作它。

用户通过 Document 对象的 Database 成员属性可以访问当前文档的 Database 对象。

Application.DocumentManager.MdiActiveDocument.Database

符号表和字典

符号表和字典对象提供对非图形对象的访问(块、图层、线型、布局等等)。在AutoCAD中的每一个图形都包含9个固定的符号表,然而图形中的字典的数量是可以根据功能和应用程序的使用类型来改变的。新的符号表不能被添加到 Database 中去。

例如,层表 (LayerTable)就是符号表,它包含层表记录,块表也是符号表,它包含块表记录。所有的图形实体 (直线、圆、圆弧等等) 都是属于一个块表记录。默认情况下,每一个图形都为模型空间和图纸空间预定义了块表记录。每一个图纸空间布局都有它自己的块表记录。

字典是一个可以包含任何 AutoCAD 对象或 Xrecord 对象的容器。

4)图形对象,也称为图元,是组成图形的可见对象(例如直线、圆、光栅图像等)。添加图形对象到图形中是通过正确的块表记录引用,然后使用 AppendEntity 方法将一个新对象添加到图形中来完成的。

要修改或查询这些对象,请从正确的块表记录获得对象引用,然后使用对象本身的方法或特性。每一个图形对象都拥有允许应用程序执行大部分 AutoCAD 编辑命令的方法,例如复制、删除、移动、镜像等。

这些对象还提供了一些方法,用来设置和检索对象的扩展数据(xdata),亮显和更新对象,以及从另外的图元设置属性。大多数图形对象具有诸如 LayerId、LinetypeId、Color 和 Handle 之类的典型特性。每个对象也具有一些特有的特性,例如 Center、StartPoint、Radius 和 FitTolerance。

非图形对象是指属于图形的一部分但不可见的(提示性的)对象,例如 Layers、Linetypes、DimStyles、TableStyle 等。若要创建新的符号表记录,请使用表所有者的 Add 方法或使用 SetAt 方法添加一个字典到命令对象字典中。要修改或查询这些对象,请使用对象本身的方法或特性。每一个非图形对象都有用于特定目的的方法和特性,都有设置和检索扩展数据以及删除自己的方法。

时间: 2024-10-13 10:53:14

基于.NET的CAD二次开发学习笔记二:AutoCAD .NET中的对象的相关文章

spss C# 二次开发 学习笔记(二)——Spss以及统计术语解释(IT人眼中的统计术语)

针对客户需求,需要对一些数据做统计分析.统计分析的第一步,即为数据查询,查找出要统计分析的数据. 查询得出的是一个行列表格的结果集,行.列.表格等这些IT的数据库概念和Spss以及统计中的术语是如何对应的,这点是刚接触统计这方面的我首先要理清楚的. 变量(Variable)——结果集中的列.可以为数据库表字段,当然也可以使使用函数处理后的,即为表达式. 变量的类型分为字符型和数值型,有长度设置,对于数值有精度设置. 数值型,有数值和数值标签一说,例如性别,如果为字符型,则值为男或者女,如果为数值

spss C# 二次开发 学习笔记(六)——Spss统计结果的输出

Spss的二次开发可以很简单,实例化一个对象,然后启用服务,接着提交命令,最后停止服务. 其中重点为提交命令,针对各种统计功能需求,以及被统计分析的数据内容等,命令的内容可以很复杂,但也可以简单的为一个字符串.命令的获取,可以类似于Office录制宏一样,操作的过程中,Spss输出应用程序会记录命令内容,然后可以参考命令语法手册,去完善命令内容. 而获取输出结果,即获取统计的图.表等内容,功能很强大,当然起初操作起来也有些不可思议.它不是常规的进行统计,然后执行输出命令获取输出结果.Spss的输

spss C# 二次开发 学习笔记(四)——Spss授权

Spss的授权方式有两种,单机版和网络版. Spss的激活,在联网的情况下,通过20位的激活码激活,在未联网的情况下,Spss根据机器获取一个类似4-XXXX的锁定码,然后由激活码和锁定码算出一个授权码,来激活程序. 整个激活过程,可以在IBM网站上处理,申请一个单号,然后注册,然后逐步操作,也可以直接打服务电话,由IBM相关人员帮助处理. 网络版的授权模式为,在证书服务器上安装证书授权管理程序,然后客户机通过证书服务器进行授权,允许在任意客户机上安装Spss并授权,但并发数目收到购买的数量的限

spss C# 二次开发 学习笔记(五)——Spss系统集成模式

Spss官方不支持Server2008R2等Server系列,但做Spss的二次开发,调用Spss的Web系统,一般部署在Server系列上,例如Server2008R2. 起初,在Server上安装Spss,总是安装不成功,或者貌似成功了,但是无法激活应用程序,后来咨询后得知,竟然是不支持.从这点来说,Spss的最初定位还是给最终用户操作的,后来增加了程序接口,以便其他系统与其集成. 鉴于此种情况,我需要一台安装有Windows7的机器,然后安装Spss应用程序和Spss.Net插件. 然后,

Guava学习笔记: guava中的对象封装操作

Guava学习笔记: guava中的对象封装操作 转载:http://outofmemory.cn/java/guava/base/Objects 我们在开发中经常会需要比较两个对象是否相等,这时候我们需要考虑比较的两个对象是否为null,然后再调用equals方法来比较是否相等,google guava库的com.google.common.base.Objects类提供了一个静态方法equals可以避免我们自己做是否为空的判断,示例如下:         Object a = null;  

基于.NET的CAD二次开发学习笔记一:CAD开发入门

1.AutoCAD .NET API由不同的DLL文件组成,它们提供用于访问图形文件或AutoCAD应用程序的包含丰富的类.结构.方法和事件.每一个DLL文件都定义不同的使用基于功能的库组织组件的命名空间. 下面是你将频繁地要使用的AutoCAD .NET API 的三个主要的DLL文件: AcDbMgd.dll. 当使用图形文件中的对象时使用这个DLL文件. AcMgd.dll. 当使用AutoCAD应用程序时使用这个DLL文件. AcCui.dll. 当使用自定义文件时使用这个DLL文件.

android开发学习笔记(二)-activity的生命周期

一:activity的生命周期: 二:created->resumed 当一个应用程序的启动图标被用户点击后,应用程序开始从Activity的onCreate()方法开始执行.(当有多个activity文件时,执行Manifest文件中指定的主activity文件). 当执行完onCreate()方法后,迅速调用onStart(),onResume()方法,用户就可以进行相关的操作. 在onCreate()方法中尽量少执行操作,防止程序运行很久都进入不了界面. 三:Resumed->Pause

iOS开发学习笔记二:UITableView

一:TableViewController 1:删掉默认的ViewController 拖动一个TableViewController 2:新建一个Cocoa Touch Class,命名为:TableViewController 3:将1邦定至2 4:拖动一个Label,TAG设为1,将CELL的ID设为cell 相关代码: 1 override func numberOfSectionsInTableView(tableView: UITableView) -> Int { 2 3 retu

前端开发学习笔记二

前几天把之前做的购物网页的js效果写了出来. 如图所示,分别为以下几个效果: 搜索按钮的文字效果 轮播图 模拟下拉菜单 鼠标点击按钮,图片进行左右滚动 在学习过程中,思想很重要.写一个效果之前,现对其进行设计,然后分析,最后再实现. 比如很简单的一个轮播图,让图片淡入淡出的切换.它的原理就是,先让所有的图片淡出,然后让当前要显示的图片淡入就可以了.理解了它的工作原理,写起来就很简单了. 1 shop.app.Banner=function(){ //Banner轮播图效果 2 var ad=do