行数 理解 database ntc 无法打开 cati 针对 active
再次想象另外一个场景:启动 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 来访问活动文档;每个文档都由数据库、编辑器、事务管理员等对象组成。
了解 AutoCAD 对象层次结构—— 文档
来源: http://www.bubuko.com/infodetail-2090044.html