基于.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 方法添加一个字典到命令对象字典中。要修改或查询这些对象,请使用对象本身的方法或特性。每一个非图形对象都有用于特定目的的方法和特性,都有设置和检索扩展数据以及删除自己的方法。
基于.NET的CAD二次开发学习笔记二:AutoCAD .NET中的对象的更多相关文章
- 基于.NET的CAD二次开发学习笔记一:CAD开发入门
1.AutoCAD .NET API由不同的DLL文件组成,它们提供用于访问图形文件或AutoCAD应用程序的包含丰富的类.结构.方法和事件.每一个DLL文件都定义不同的使用基于功能的库组织组件的命名 ...
- 软件开发学习笔记 <二>软件开发模型、Up、Rup、敏捷Up
软件开发过程(process) 是一个将用户需求转化为软件系统所需要的活动的集合. 软件生命周期(SDLC,Software Devlopment Life Cycle) 软件从孕育.诞生.成长.成熟 ...
- python-django开发学习笔记二
1.简述 1.1 开发环境 该笔记所基于的开发环境为:windows8.python2.7.5.psycopg2-2.4.2.django1.5.4.pyCharm-2.7.3.以上所描述的软件.插件 ...
- spss C# 二次开发 学习笔记(三)——Spss .Net 开发
Spss .Net 二次开发的学习过程暂停了一段时间,今天开始重启. 之前脑残的不得了,本想从网上下载一个Spss的安装包,然后安装学习.于是百度搜索Spss,在百度搜索框的列表中看到Spss17.S ...
- spss C# 二次开发 学习笔记(一)——配置数据源
由于项目的需要,使用Spss进行数据统计分析. Spss对于数据统计分析的功能有多强主要是客户关注的事情,我所主要关注的是,Spss的二次开发有多复杂. 学习的基本思路是: (1)首先了解统计基本知识 ...
- spss C# 二次开发 学习笔记(六)——Spss统计结果的输出
Spss的二次开发可以很简单,实例化一个对象,然后启用服务,接着提交命令,最后停止服务. 其中重点为提交命令,针对各种统计功能需求,以及被统计分析的数据内容等,命令的内容可以很复杂,但也可以简单的为一 ...
- spss C# 二次开发 学习笔记(五)——Spss系统集成模式
Spss官方不支持Server2008R2等Server系列,但做Spss的二次开发,调用Spss的Web系统,一般部署在Server系列上,例如Server2008R2. 起初,在Server上安装 ...
- spss C# 二次开发 学习笔记(四)——Spss授权
Spss的授权方式有两种,单机版和网络版. Spss的激活,在联网的情况下,通过20位的激活码激活,在未联网的情况下,Spss根据机器获取一个类似4-XXXX的锁定码,然后由激活码和锁定码算出一个授权 ...
- Joomla 二次开发 学习笔记
Joomla目录结构 /administrator 管理后台的路径 /cache 是缓存目录 /components 是组件(component)目录 /includes 是一个重要的目录,里面都是J ...
随机推荐
- Python常用内置函数总结
一.数学相关 1.绝对值:abs(-1)2.最大最小值:max([1,2,3]).min([1,2,3])3.序列长度:len('abc').len([1,2,3]).len((1,2,3))4.取模 ...
- zoj 1788 Quad Trees
zoj 1788 先输入初始化MAP ,然后要根据MAP 建立一个四分树,自下而上建立,先建立完整的一棵树,然后根据四个相邻的格 值相同则进行合并,(这又是递归的伟大),逐次向上递归 四分树建立完后, ...
- js多行省略
$(function (){ // var $introduce = $(".c-introduce").html(); // $new_introduce = $introduc ...
- python二进制相关
https://docs.python.org/3/library/struct.html#module-struct
- 服务器asp.net 3.5 HTTP 错误 500.19 - Internal Server Error 无法访问请求的页面,因为该页的相关配置数据无效。
配置错误:不能在此路径中使用此配置节.如果在父级别上锁定了该节,便会出现这种情况.锁定是默认设置的(overrideModeDefault="Deny"),或者是通过包含 over ...
- iOS 运行时runtime控制私有变量以及私有方法
OC是运行时语言,只有在程序运行时,才会去确定对象的类型,并调用类与对象相应的方法.利用runtime机制让我们可以在程序运行时动态修改类.对象中的所有属性.方法,就算是私有方法以及私有属性都是可以动 ...
- 洛谷 1004 dp或最大费用流
思路: dp方法: 设dp[i][j][k][l]为两条没有交叉的路径分别走到(i,j)和(k,l)处最大价值. 则转移方程为 dp[i][j][k][l]=max(dp[i-1][j][k-1][l ...
- HDFS副本存放策略
在client向DataNode写入block之前,会与NameNode有一次通信,由NameNode来选择指定数目的DataNode来存放副本.具体的副本选择策略在BlockPlacementPol ...
- linux环境下安装oracle数据库 原文在卡卡100http://www.cnblogs.com/kaka100
centos55_oracle11gr2_install 第一个阶段:安装centos55 a:安装centos5.5 用图形界面安装 硬盘 16G 注意:用图形界面安装.. 第二个阶段:配 ...
- android 通过WiFi进行adb调试
第一种方式: 1.把Android SDK的下的 platform-tools 目录 加入到系统的path变量中 打开cmd命令行 输入adb 显示如下图则为设置成功 2.打开手机 下载一个叫WiFi ...