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中的对象的更多相关文章

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

    1.AutoCAD .NET API由不同的DLL文件组成,它们提供用于访问图形文件或AutoCAD应用程序的包含丰富的类.结构.方法和事件.每一个DLL文件都定义不同的使用基于功能的库组织组件的命名 ...

  2. 软件开发学习笔记 <二>软件开发模型、Up、Rup、敏捷Up

    软件开发过程(process) 是一个将用户需求转化为软件系统所需要的活动的集合. 软件生命周期(SDLC,Software Devlopment Life Cycle) 软件从孕育.诞生.成长.成熟 ...

  3. python-django开发学习笔记二

    1.简述 1.1 开发环境 该笔记所基于的开发环境为:windows8.python2.7.5.psycopg2-2.4.2.django1.5.4.pyCharm-2.7.3.以上所描述的软件.插件 ...

  4. spss C# 二次开发 学习笔记(三)——Spss .Net 开发

    Spss .Net 二次开发的学习过程暂停了一段时间,今天开始重启. 之前脑残的不得了,本想从网上下载一个Spss的安装包,然后安装学习.于是百度搜索Spss,在百度搜索框的列表中看到Spss17.S ...

  5. spss C# 二次开发 学习笔记(一)——配置数据源

    由于项目的需要,使用Spss进行数据统计分析. Spss对于数据统计分析的功能有多强主要是客户关注的事情,我所主要关注的是,Spss的二次开发有多复杂. 学习的基本思路是: (1)首先了解统计基本知识 ...

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

    Spss的二次开发可以很简单,实例化一个对象,然后启用服务,接着提交命令,最后停止服务. 其中重点为提交命令,针对各种统计功能需求,以及被统计分析的数据内容等,命令的内容可以很复杂,但也可以简单的为一 ...

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

    Spss官方不支持Server2008R2等Server系列,但做Spss的二次开发,调用Spss的Web系统,一般部署在Server系列上,例如Server2008R2. 起初,在Server上安装 ...

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

    Spss的授权方式有两种,单机版和网络版. Spss的激活,在联网的情况下,通过20位的激活码激活,在未联网的情况下,Spss根据机器获取一个类似4-XXXX的锁定码,然后由激活码和锁定码算出一个授权 ...

  9. Joomla 二次开发 学习笔记

    Joomla目录结构 /administrator 管理后台的路径 /cache 是缓存目录 /components 是组件(component)目录 /includes 是一个重要的目录,里面都是J ...

随机推荐

  1. 初探Backbone

    Backbone简介 中文API:http://www.csser.com/tools/backbone/backbone.js.html 英文API:http://backbonejs.org/ B ...

  2. 关于DYNPRO程序的系统迁移与版本不匹配问题之一

    前段时间公司做的一个项目,这两天在将项目程序导入公司,出问题了,搞了半天才发现是系统版本问题,但是还是不知道怎么解决,纠结ING... DYNRPO程序在创建(或是首次运行)的时候会自动生成一个DYN ...

  3. java 中Session 持久化问题

    首先: 今天发现了个session 持久化的问题 在Tomcat 停止运行后再启动  session  中保存的东西还会存在 ,百度了一下 原理 1.Session Create 时 2.Sessio ...

  4. Visual Studio Code中文文档(一)-快速入门

    Visual Studio Code是一个轻量级但是十分强大的源代码编辑器,重要的是它在Windows, OS X 和Linux操作系统的桌面上均可运行.Visual Studio Code内置了对J ...

  5. !important使用

    IE 6.0一直都不支持这个语法,而其他的浏览器都支持.因此我们就可以利用这一点来分别 给IE和其他浏览器不同的样式定义,例如,我们定义这样一个样式: colortest {border:20px s ...

  6. STC12C5A60S2 @ 22.0184Mhz 精确延时

    #include "STC12.h" // STC12C5A60S2 @ 22.0184Mhz 精确延时 void delay_10us(unsigned char n) { un ...

  7. lock

    #ifndef lock_h #define lock_h #include <stdint.h> #include <string.h> #include "myd ...

  8. mybatis-generator-config工具的使用

    generator.xml <?xml version="1.0" encoding="UTF-8" ?>   <!DOCTYPE gener ...

  9. [深度优先搜索] POJ 3620 Avoid The Lakes

    Avoid The Lakes Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8173   Accepted: 4270 D ...

  10. 误设PATH导致命令失效的处理

    今天配置Linux下的Java环境时,把PATH设为了export PATH=${JAVA_HOME}/bin,然后执行了source ~/.bash_profile命令,导致了几乎所有的Linux命 ...