了解AutoCAD对象层次结构—— 文档

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

图 4?3

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

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

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

02 public void ListDocs()

03 {

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

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

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

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

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

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

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

11     {

12         doc = enumerator.Current as Document;

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

14     }

15 }

上一小节中所说的文档管理员(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来访问活动文档;每个文档都由数据库、编辑器、事务管理员等对象组成。

时间: 2024-10-10 22:57:57

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

DOM:文档对象模型 --树模型 文档:标签文档,对象:文档中每个元素对象,模型:抽象化的东西

DOM:文档对象模型 --树模型文档:标签文档,对象:文档中每个元素对象,模型:抽象化的东西 一:window: 属性(值或者子对象):opener:打开当前窗口的源窗口,如果当前窗口是首次启动浏览器打开的,则opener是null,可以利用这个属性来关闭源窗口. 方法(函数):事件(事先设置好的程序,被触发): 1.window.open("第一部分","第二部分","第三部分","第四部分"): 特征参数: 第一部分:写要

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

想象这样一个场景:当您开始一天的工作,坐到电脑前面,用鼠标双击桌面上的AutoCAD Civil 3D图标,这时一个AutoCAD Civil 3D应用程序将运行起来.打开Windows任务管理器,我们可以看到类似窗口: 图 4?1 应用程序 本书中所涉及的二次开发程序,都是在这个AutoCAD Civil 3D应用程序基础上运行的,虽然我们可以实现利用自己的程序来控制AutoCAD的加载与运行,但这部分内容并不在本书的所涵盖的内容之中,如果您需要这方面的资料,你需要查阅其他资料,在AutoCA

数组对象元素的添加,String对象,BOM对象以及文档对象的获取

数组对象的删除有三种方法: pop();        //移除最后一个元素并返回该元素值shift();      //移除最前一个元素并返回该元素值,数组中元素自动前移splice(0,2); //删除从指定位置deletePos开始的指定数量deleteCount的元素,数组形式返回所移除的元素通过这三种方法我们可以将数组中的元素按进行删除 var del = ["aa",23,345,56,34,"bb"]; var del_last = del.pop()

Jquery对象的文档处理,CSS和事件

文档处理 append:向每个匹配的元素内部追加内容.这个操作与对指定的元素执行appendchild方法,将它们添加到文档中的情况类似 <p>i would like to say</p> $("p").append("<b>hello</b>"); 结果: [<p>i would liek to say:<b>hello</b></p>] appendTo:把所有匹配

JavaScript中的Document文档对象

Document文档对象是JavaScript中window和frames对象的一个属性,是显示于窗口或框架内的一个文档.描述当前窗口或指定窗口对象的文档.它包含了文档从到的内容. 用法:document (当前窗口) 或 <窗口对象>.document (指定窗口) 属性: document.title //设置文档标题等价于HTML的定义的文字.在 Netscape 里本属性不接受赋值. fgColor 指标记的 text 属性所表示的文本颜色. bgColor 指标记的 bgcolor

xml.dom——文档对象模型API

文档对象模型,或者"DOM",是一个跨语言API的World Wide Web Consortium(W3C)来访问和修改XML文档.DOM的实现提供了一个XML文档树结构,或允许客户机代码从头开始建立这样一个结构.然后给访问结构通过一组对象提供著名的接口. 模块内容 xml.dom包含以下功能: xml.dom.registerDOMImplementation(name,factory) 注册factory函数名称的名称.factory函数应该返回一个对象实现 DOMImpleme

VC操作WORD文档总结

一.写在开头 最近研究word文档的解析技术,我本身是VC的忠实用户,看到C#里面操作WORD这么舒服,同时也看到单位有一些需求,就想尝试一下,结果没想到里面的技术点真不少,同时网络上的共享资料很多,但是很多就是起了一个头没有完整的资料,因此在此记录一下,首先感谢怪兽哥哥(开源了了IOCP一整套开源库的家伙还有很多隐藏技能大家可以关注他).骨头哥(不少好资料).savageII哥(大牛)这些网友他们很有共享精神.废话不说了开始正题. 二.环境搭建 我用的VC2010,其实在VC6.0以上的版本设

文档/视图结构的应用

用Visual C++的MFC AppWizar生成的函数,一般是"文档/视图"结构的. 在这种程序结构中,文档对象和视图对象的分工是十分明确的,文档对象用来存储.管理和维护数据,而视图对象用来显示和操作数据. 所以,在文档/视图结构的应用程序中,一般要在文档类的声明中定义数据对象,在文档类的构造函数中初始化数据对象,而对数据对象的操作和显示则在视图类对象中完成. 为了在视图对象中,对文档对象的成员进行访问,视图类提供了一个成员函数GetDocument,它的原型为: CDocumen

选取文档元素的方法总结

在讲解如何选取文档元素之前,先普及一下什么是文档节点: HTML文档的每个节点都表示一个Node对象,节点树形结构的根部是Document节点,代表整个文档,代表HTML元素的节点是Element节点,代表文本的节点是Text节点:Document.Element.Text类都是Node类的子类:(Comment节点类型代表注释节点,Attr节点类型代表属性) 查询一个或多个文档元素的方法: (文档Document对象和元素Element对象均定义了以下方法,即也可以在一个元素Element上选