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

  • 相关阅读:
    Vagrant命令
    您必须知道的 Git 分支开发规范
    phpstorm的提速设置
    Flex 布局教程:语法篇
    Bootstrap 3 & 4 的多级下拉菜单示例
    申请快递查询100接口
    vue.js组件与组件之间的通信
    MAMP环境下 cookie无法正常使用
    Git 常用命令
    Linux学习笔记之yum安装mysql5.7
  • 原文地址:https://www.cnblogs.com/myzw/p/6911355.html
Copyright © 2011-2022 走看看