再次想象另外一个场景:启动AutoCAD程序后,您新建了两个.dwg文件,也就是说创建了两个文档(Document)对象。将窗口进行层叠,您看到的窗口应该与下图类似:

图 4‑3

如何访问这些文档呢?还是让我们通过简单的代码来了解一下吧:

利用向导创建项目,在MyCommands类中添加以下代码,之后编译、加载并运行命令。

 [CommandMethod("MyGroup", "ListDocs", CommandFlags.Modal)]

 public void ListDocs()

 {

     DocumentCollection docs = Application.DocumentManager;               //获取文档集合

     Document doc = docs.MdiActiveDocument;                   //获取活动文档

     Editor ed = doc.Editor;                                              //获取编辑器

     ed.WriteMessage("\n文档数量:\t{0}", docs.Count);                    //输出文档数量

     ed.WriteMessage("\n活动文档为:\t{0}", doc.Name);         //输出活动文档名称

     IEnumerator enumerator = docs.GetEnumerator();             //枚举器

     while (enumerator.MoveNext())                                  //遍历每个文档

     {

         doc = enumerator.Current as Document;

         ed.WriteMessage("\n文档名称:\t{0}", doc.Name);    //输出每个文档名称

     }

 }

上一小节中所说的文档管理员(DocumentManager)类型为DocumentCollection,也就是一个Document集合。代码第4行首先获取这个文档集合。接下来获取活动文档,我们要通过活动文档的编辑器(或者说命令行)中输出一些信息。代码第9-14行,遍历每个文档,并将其名称输出。

本书中各种操作基本都是针对活动文档的,因此经常使用MdiActiveDocument属性(代码第5行)来获取活动文档,这种用法在本书中出现的概率极高。

如果您对如何遍历集合尚不清楚,可以再次查看3.6 节中相关内容。

当我们运行上述代码后,按F2键,打开文本窗口,应该可以看到类似下图结果。如果您创建更多文档,显示的信息行数应该有所不同。注意下图文本窗口标题中的Drawing.dwg,如果您切换活动文档,该名称是会随着改变的,注意这个问题,有助于理解本节后续的内容。

图 4‑4

在获取指定的文档后,我们就可以访问文档中的各种对象,问题又来了,文档中又包含哪些对象呢?我们可以通过下图来进行了解。

图 4‑5

上图中列出来文档所包含的7中对象,其中的Database(数据库)、Editor(编辑器)已经出现在前面的代码中,另外一个对象Transaction Manager(事务管理员),这3种对象在本书中出现次数是最多的,其余4种对象很少涉及。

Database:存储数据的仓库,我们画的每一条线、圆弧、文本等组成图纸的各种元素,以及其他看不到的元素(例如图层)都存储在这里,具体内容将在下一小节详述。

Editor:人机交互的场所,数据的输入、信息的输出都可以在这里进行。编辑器是文档的一个组成部分,而不是直接隶属于应用程序。现在您可以启动应用程序,打开一个文档,我们可以看到编辑器(命令行);如果关闭文档,只有开始页面的状态,我们将无法看到编辑器,按下F2也无法打开文本窗口。

Transaction Manager:事务管理员当然是来管理各项事务的。问题出在什么是事务?事务是个比较抽象的概念,对于初学者来说是个难点,将在后续的小节中详述。

我们再来回顾一下本小节的内容。一个AutoCAD应用程序可以打开多个.dwg文件,每个.dwg文件也就是一个文档,这些文档由DocumentManager来统一管理;可以通过MdiActiveDocument来访问活动文档;每个文档都由数据库、编辑器、事务管理员等对象组成。

了解AutoCAD对象层次结构 —— 2 ——文档的更多相关文章

  1. 运用 Range 对象处理 Word 文档内容

    运用 Range 对象处理 Word 文档内容   在所有 Office 应用程序中,Microsoft Word 可能是应用最广泛的应用程序,它还经常在自定义 Office 解决方案中扮演重要的角色 ...

  2. Java 添加OLE对象到Excel文档

    本文介绍通过Java程序添加OLE对象到Excel文档.OLE分为两种形式,一种通过嵌入(Embed),方式,一种通过链接(Link)方式.前者是将对象嵌入到文档中,外部对该对象的更改不影响嵌入操作时 ...

  3. 一文带你玩转对象存储COS文档预览

    随着"互联网+"的发展,各行各业纷纷"去纸化",商务合同.会议纪要.组织公文.商品图片.培训视频.学习课件.随堂讲义等电子文档无处不在.而要查看文档一般需要先下 ...

  4. 了解AutoCAD对象层次结构 —— 1 ——应用程序

    想象这样一个场景:当您开始一天的工作,坐到电脑前面,用鼠标双击桌面上的AutoCAD Civil 3D图标,这时一个AutoCAD Civil 3D应用程序将运行起来.打开Windows任务管理器,我 ...

  5. JAVA对象和XML文档、原来他们之间还有这一出

    最近项目开发中遇到一个问题,访问接口不再通过url地址请求的方式,而是 通过socket发送xml格式的报文到指定服务器来进行信息的统一认证.. 因此组装xml格式的报文字符串以及解析服务器返回的xm ...

  6. JS获取/设置iframe内对象元素、文档的几种方法

    1.IE专用(通过frames索引形象定位): document.frames[i].document.getElementById('元素的ID'); 2.IE专用(通过iframe名称形象定位): ...

  7. 了解AutoCAD对象层次结构 —— 6 ——块表记录

    块表记录是包裹实体对象的最后一层包装了,接下来让我们继续利用MgdDbg工具查看上一小节创建的块定义内的对象有哪些. 操作步骤如下:选择块表记录TestBlock,在右侧列表中找到“Entities ...

  8. JQuery语法 JQuery对象与原生对象互转 文档就绪函数与window.onload的区别

    [JQuery语法] 1.jQuery("选择器").action();通过选择器调用事件函数,但是jquery中,jquery可以用$(“选择器”).action();   ① ...

  9. 了解AutoCAD对象层次结构 —— 3 ——数据库

    数据库的结构是什么样的?对象是如何存储在数据库中的?这些问题我们需要搞明白.在此我们可以借助工具ArxDbg或MgdDbg来查看数据库结构及其内容.下图就是利用MgdDbg工具查看到的内容,我们可以看 ...

随机推荐

  1. SVM(支持向量机)之Hinge Loss解释

    Hinge Loss 解释 SVM 求解使通过建立二次规划原始问题,引入拉格朗日乘子法,然后转换成对偶的形式去求解,这是一种理论非常充实的解法.这里换一种角度来思考,在机器学习领域,一般的做法是经验风 ...

  2. RabbitMQ总结

    消息队列 三个业务场景:解耦.异步.削峰 带来问题 系统可用性降低:外部依赖越多,越容易挂掉. 系统复杂性提高:重复消费,消息丢失,消息传递的顺序性 一致性问题: 一.如何保证消息的可靠性传输(如何处 ...

  3. VUE工程上线首页加载慢问题优化

    使用webpack-bundle-analyzer工具 下面介绍几种压缩文件的方式. 1.vue-router懒加载 2.工程文件打包的时候不生成.map文件 3.gzip压缩 4.CDN 5.VUE ...

  4. poj2449 第k短路

    题目链接 学习博客:https://blog.csdn.net/Z_Mendez/article/details/47057461 k短路没有我想象的那么难,还是很容易理解的 求s点到t点的第k短路径 ...

  5. ElasticSearch(简称ES)

    Windows下安装ElasticSearch   ElasticSearch(简称ES)是一个基于Lucene的分布式全文搜索服务器,和SQL Server的全文索引(Fulltext Index) ...

  6. python--logging日志

    一个非常详细的日志使用请看这里:http://www.cnblogs.com/dkblog/archive/2011/08/26/2155018.html # 导入日志模块 import loggin ...

  7. [转帖]KMS 是什么 以及 优缺点

    产品激活 比如Windows激活 , office激活 等激活的原理是什么? KMS等激活工具安全吗? http://www.cnblogs.com/flowerslip/p/8370832.html ...

  8. js 判断一个字符在字符串中出现的次数

    <script type="text/javascript"> var s='djh.doiwe.esd.d.ddd0sdd.d.'; var n=(s.split(' ...

  9. 用Canvas实现一些简单的图片滤镜

    1.灰度滤镜 对于灰度滤镜的实现一般有三种算法 1) 最大值法:即新的颜色值R=G=B=Max(R,G,B),通过这种方法处理后的图片看起来亮度值偏高. 2) 平均值法:即新的颜色值R=G=B=(R+ ...

  10. 虚拟机的ip地址为什么会发生变化

    因为虚拟机在NAT模式下由Vmware8虚拟网卡提供虚拟机的IP分配,网桥模式下由Vmware1来提供IP分配.它们都相当于 一个小型的DHCP服务器,除非改动虚拟机的网络连接方式,或动了虚拟网卡服务 ...