了解AutoCAD对象层次结构 —— 2 ——文档
再次想象另外一个场景:启动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 ——文档的更多相关文章
- 运用 Range 对象处理 Word 文档内容
运用 Range 对象处理 Word 文档内容 在所有 Office 应用程序中,Microsoft Word 可能是应用最广泛的应用程序,它还经常在自定义 Office 解决方案中扮演重要的角色 ...
- Java 添加OLE对象到Excel文档
本文介绍通过Java程序添加OLE对象到Excel文档.OLE分为两种形式,一种通过嵌入(Embed),方式,一种通过链接(Link)方式.前者是将对象嵌入到文档中,外部对该对象的更改不影响嵌入操作时 ...
- 一文带你玩转对象存储COS文档预览
随着"互联网+"的发展,各行各业纷纷"去纸化",商务合同.会议纪要.组织公文.商品图片.培训视频.学习课件.随堂讲义等电子文档无处不在.而要查看文档一般需要先下 ...
- 了解AutoCAD对象层次结构 —— 1 ——应用程序
想象这样一个场景:当您开始一天的工作,坐到电脑前面,用鼠标双击桌面上的AutoCAD Civil 3D图标,这时一个AutoCAD Civil 3D应用程序将运行起来.打开Windows任务管理器,我 ...
- JAVA对象和XML文档、原来他们之间还有这一出
最近项目开发中遇到一个问题,访问接口不再通过url地址请求的方式,而是 通过socket发送xml格式的报文到指定服务器来进行信息的统一认证.. 因此组装xml格式的报文字符串以及解析服务器返回的xm ...
- JS获取/设置iframe内对象元素、文档的几种方法
1.IE专用(通过frames索引形象定位): document.frames[i].document.getElementById('元素的ID'); 2.IE专用(通过iframe名称形象定位): ...
- 了解AutoCAD对象层次结构 —— 6 ——块表记录
块表记录是包裹实体对象的最后一层包装了,接下来让我们继续利用MgdDbg工具查看上一小节创建的块定义内的对象有哪些. 操作步骤如下:选择块表记录TestBlock,在右侧列表中找到“Entities ...
- JQuery语法 JQuery对象与原生对象互转 文档就绪函数与window.onload的区别
[JQuery语法] 1.jQuery("选择器").action();通过选择器调用事件函数,但是jquery中,jquery可以用$(“选择器”).action(); ① ...
- 了解AutoCAD对象层次结构 —— 3 ——数据库
数据库的结构是什么样的?对象是如何存储在数据库中的?这些问题我们需要搞明白.在此我们可以借助工具ArxDbg或MgdDbg来查看数据库结构及其内容.下图就是利用MgdDbg工具查看到的内容,我们可以看 ...
随机推荐
- redis底层设计(三)——redis数据类型
今天我们来看一下redis的数据类型.既然redis的键值对可以保存不同类型的值,那么很自然就需要对键值对的类型进行检查以及多态处理.下面我们将对redis所使用的对象系统进行了解,并分别观察字符串. ...
- 在DevExpress程序中使用PopupContainerEdit和PopupContainer实现数据展示
在一些数据的即时查询场景中,我们可能需要对输入信息进行模糊查询并进行选择,例如在一些文本输入场景,如输入某个站点编码或者设备编码,然后获取符合的列表供用户选择的场景,本篇随笔介绍在DevExpress ...
- websockect外网无法访问问题
项目在测试环境可以正常使用websockect,然而把项目发布到公网上却无法使用问题. 有几种解决方案,1.防火墙未加入入站规则,否则没有权限连接到外网. 方法:控制面板--window防火墙---高 ...
- vue及Eelement使用过程中遇到的一些问题
在做项目的过程中,目前主要遇到了以下几个问题: 一.样式问题 1.样式中使用scoped的问题: 主要表现在从一个页面跳到另一个页面时,第二个页面的样式不能正确显示,通过刷新才能恢复页面的预定样式. ...
- Day15 Python基础之logging模块(十三)
参考源:http://www.cnblogs.com/yuanchenqi/articles/5732581.html logging模块 (****重点***) 一 (简单应用) import lo ...
- 项目笔记-SC01
项目启动已有两周,从分析需求到系统设计,文档性工作比较多,只是文档参考比较少,相对的标准就不好界定了. 计划开发时间理论上是按部就班的,没什么变化,可能真正进入开发阶段才会遇到一些问题吧,有些问题就是 ...
- Django 中的 cookie 和 session
一.cookie 由于HTTP协议是无状态的,而服务器端的业务必须是要有状态的.Cookie诞生的最初目的是为了存储web中的状态信息,以方便服务器端使用.比如判断用户是否是第一次访问网站.目前最新的 ...
- 【学习总结】之 3Blue1Brown系列
刷知乎看到的,各种力荐. YouTube: https://www.youtube.com/channel/UCYO_jab_esuFRV4b17AJtAw/featured B站: https:// ...
- 解决selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH. Please see https://sites.google.com/a/chromium.org/chromedriver/home
解决方案: 1.查看浏览器当前版本:chrome://version/. 2.到https://sites.google.com/a/chromium.org/chromedriver/downloa ...
- js创建并下载文件
先上代码: function createAndDownloadFile(fileName, content) { var aTag = document.createElement('a'); va ...