AcApDocument类
每个打开的图形都有关联的AcApDocument对象。AcApDocument对象含有诸如文件名、MFC CDocument对象、当前数据库和当前图形的保存格式等信息。
另外还有文件锁定状态的查询函数。提供了以下两个函数:
AcApDocument::lockMode()函数,其返回最大限度限定的锁定模式,这个锁定模式当前从执行环境而不是从调用者作用于文件,并将决定锁定模式,决定后就可以添加到文件中;
AcApDocument::myLockMode()函数,返回文件当前执行环境下的当前锁定模式,且可以比lockmode()返回值更强或更弱。
继承自
包含文件
Acdocman.h
参见
成员
AcApDocument cDoc函数
virtual CDocument *
cDoc() const = 0;
返回与MFC CDocument对象关联并指向这个AcApDocument的指针。
AcApDocument contextPtr函数
virtual void *
contextPtr() const = 0;
这个方法将返回AcApDocument对象的环境指针。
AcApDocument database函数
virtual AcDbDatabase *
database() const = 0;
返回这个AcApDocument使用的数据库对象(AcDbDatabase)。
AcApDocument docTitle函数
virtual const char *
docTitle() const = 0;
返回文件窗口的标题。
AcApDocument filename函数
virtual const char *
fileName() const = 0;
返回这个AcApDocument使用的数据库的完整路径和名称。
AcApDocument formatForSave函数
virtual SaveFormat
formatForSave() const = 0;
这个方法返回用SAVEAS(另存为)、SAVE(保存)和QSAVE(快速保存)命令保存的当前的保存格式。这个返回值可以是工作任务范围默认的设置,也可以是用户为这个文件选择的不同的设置。如果这个文件是默认值以外设置,则不能在工作任务之间作用。
可能的AcApDocument枚举SaveFormat(保存格式)如下:
名称 |
值 |
用途 (文件扩展名) |
kR12_dxf |
1 |
AutoCAD R12/LT2 DXF (*.dxf) |
kR13_dwg |
4 |
AutoCAD R13/LT95 Drawing (*.dwg) |
kR13_dxf |
5 |
AutoCAD R13/LT95 DXF (*.dxf) |
kR14_dwg |
8 |
AutoCAD R14/LT97 Drawing (*.dwg) |
kR14_dxf |
9 |
AutoCAD R14/LT97 DXF (*.dxf) |
kR15_dwg |
12 |
AutoCAD R15 Drawing (*.dwg) |
kR15_dxf |
13 |
AutoCAD R15 DXF (*.dxf) |
kR15_Template |
14 |
AutoCAD 2000 Drawing Template File (*.dwt) |
kNative |
kR15_dwg |
当前DWG版本是AutoCAD 2000 |
这个方法直接返回由用户输入的交互式命令设置文件的格式。如果在每次保存数据库时,希望应用程序使用当前的保存格式保存,则首先需要调AcApDocument::formatForSave(),再用返回的SaveFormat值决定调用哪个函数。例如:formatForSave()返回kR14_dxf,则要调用acdbDxfOutAsR14()去读出数据库当作14 DXF文件。
小结:
● 您和您的用户都可以设置一个永久的工作区间范围的保存默认值,这个默认值将用于所有保存命令,除了AUTOSAVE(自动保存)。
● 只有用户可以临时(在工作区间中并不持久)为特定的文件选择这项设置。
● formatForSave()方法返回用户需要的一个文件保存的格式,它可以是永久的工作任务范围的默认值或临时选择的值。
AcApDocument GetCountOfLispList函数
virtual int
GetCountOfLispList() const = 0;
返回加载LISP应用程序的数目。
AcApDocument GetItemOfLispList函数
virtual AcLispAppInfo *
GetItemOfLispList(
int nIndex) const = 0;
nIndex |
输入的加载的Lisp应用程序列表的索引 |
进入加载的Lisp应用程序列表并返回和指定索引相应的信息。
AcApDocument inputPointManager函数
virtual AcEdInputPointManager
*
inputPointManager() = 0;
这个函数将返回这个AcApDocument对象的指向管理器的对象。
AcApDocument isQuiescent函数
virtual bool
isQuiescent() const = 0;
这个函数判断是否含有激活的命令、Lisp脚本或ARX命令。
如果没有激活的命令、Lisp脚本或ARX命令返回true,否则返回false。
AcApDocument isReadOnly函数
virtual bool
isReadOnly() const = 0;
如果文件为只读返回true,否则返回false。
AcApDocument lockMode函数
virtual AcAp::DocLockMode
lockMode(
bool bIncludeMyLocks =
false) const = 0;
bIncludeMyLocks |
输入的布尔值,表示是否考虑这个应用程序的锁定模式或只看其它环境的锁定模式。 |
这个函数提供了一种方法,用于应用程序判断是否允许在文件中设置一个锁定。锁定的规则之一是执行环境可以代替它自身拥有的任一锁定。如果这个应用程序的环境含有一个专用的写(Exclusive Write)锁定,则它可以对文件应用另一个锁定模式。
如果bIncludeMyLocks = false,则返回由其它执行环境设置的最高级锁定模式;如果bIncludeMyLocks = true,则这个函数将返回由包含这个应用程序的任何执行环境设置的最高级锁定模式。
AcApDocument myLockMode函数
virtual AcAp::DocLockMode
myLockMode() const = 0;
这个函数返回文件当前执行环境下的当前锁定状态,且可以比AcApDocument::lockMode()的返回值强或弱。
AcApDocument popDbmod函数
Acad::ErrorStatus
popDbmod();
这个方法取出DBMOD系统变量堆栈最高层的值并把这个值复制到文件的DBMOD系统变量中。如果成功,popDbmod()返回eOK;如果堆栈为空,popDbmod()返回eIllegalReplacement;如果文件没有完成操作,popDbmod()返回eInvalidContext。eInvalidContext只能在早期编辑工作任务初始化期间,在DBMOD值被初始化之前出现。
注意:这个方法必须在与一个相匹配的pushDbmod()函数调用后调用。
AcApDocument pushDbmod函数
void
pushDbmod();
这个方法把当前的DBMOD系统变量值复制到一个堆栈里。这样允许储存DBMOD只读系统变量的当前值,用于随后通过popDbmod()方法来恢复。
pushDbmod()及其副本popDbmod()允许应用程序修改数据库而不将其标记为被修改,正如在工作任务初始化期间应用程序所执行的。这包含数据库头变量的修改或在正在编辑的数据库中添加和修改对象,所有这些都将导致对文件系统变量DBMOD设置标记。当DBMOD值不为零时,在用户想退出图形时将提示“要储存你的图形文件?(Save your drawing?)”。若不想在您的应用程序中出现这个提示,可在使用不会导致这个查询的方法开始修改数据库之前使用pushDbmod()将当前的DBMOD值压入堆栈,而在修改完成后使用popDbmod()将DBMOD值恢复。
注意:调用pushDbmod()必须与调用popDbmod()相匹配。
注意:为了不覆盖其它应用程序设置的DBMOD标记,则需要避免在加载一些应用程序代码时将压入一个DBMOD值,这些代码包括可能导致加载其他应用程序,加载DWG或DXF文件、使用acedCmd()调用应用程序定义的命令和应用程序的直接加载。
AcApDocument transactionManager函数
virtual AcTransactionManager
*
transactionManager() const = 0;
这个函数为这个AcApDocument返回AcTransactionManager对象。全局函数actrTransactionManager()将返回一个指向当前文件的transaction manager(事务管理器)的指针。这个函数数很重要,因为应用程序不能混淆来自在同一个transaction(事务)中的不同文件的对象。如果应用程序一次打开来自多个文件的对象,并且用是transactions(事务),那么它们必须开始使用在每个文件中的transaction manager(事务管理器)为每个文件分离事务。
枚举
AcApDocumentSaveFormat