zoukankan      html  css  js  c++  java
  • 了解AutoCAD对象层次结构 —— 2 ——文档

    再次想象另外一个场景:启动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("
    文档数量:	{0}", docs.Count);                    //输出文档数量
    
    08     ed.WriteMessage("
    活动文档为:	{0}", doc.Name);         //输出活动文档名称
    
    09     IEnumerator enumerator = docs.GetEnumerator();             //枚举器
    
    10     while (enumerator.MoveNext())                                  //遍历每个文档
    
    11     {
    
    12         doc = enumerator.Current as Document;
    
    13         ed.WriteMessage("
    文档名称:	{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来访问活动文档;每个文档都由数据库、编辑器、事务管理员等对象组成。

  • 相关阅读:
    C++笔记(2018/2/6)
    2017级面向对象程序设计寒假作业1
    谁是你的潜在朋友
    A1095 Cars on Campus (30)(30 分)
    A1083 List Grades (25)(25 分)
    A1075 PAT Judge (25)(25 分)
    A1012 The Best Rank (25)(25 分)
    1009 说反话 (20)(20 分)
    A1055 The World's Richest(25 分)
    A1025 PAT Ranking (25)(25 分)
  • 原文地址:https://www.cnblogs.com/myzw/p/6911355.html
Copyright © 2011-2022 走看看