ZRX开发手册 联系客服

发布时间 : 星期四 文章ZRX开发手册更新完毕开始阅读48462729915f804d2b16c183

使用事务的注意事项:

? 与open-close一起使用要注意

事务可以与open-close混合使用,但必须各自配对,不能在ZcDbTransaction::getObject()打开某个对象后,又调用该对象自身的close()函数关闭。

? 打开对象要注意

事务机制虽然可以在对象处于openForWrite或openForRead的状态下,调用getObject()以读或写的方式打开,但是在对象处于openForNotify状态下时,是不能用getObject()以写方式打开的。

? 嵌套使用要注意

事务可以嵌套使用,即在一个事务中再开始一个事务。但要注意两点: 1. 不能在事务结束或放弃的过程中开始一个事务。

2. 在有嵌套事务的情况下,只有最外层的事务结束的时候,才会提交所有事务的数据。

事务管理功能接口:

1) 长事务管理类

ZcApLongTransactionManager::checkIn ZcApLongTransactionManager::checkOut ZcDbLongTransaction::addToWorkSet ZcDbLongTransaction::newWorkSetIterator ZcDbLongTransaction::removeFromWorkSet ZcDbLongTransaction::originBlock ZcDbLongTransaction::originObject ZcDbLongTransaction::workSetHas 2) 长事务工作集遍历器

ZcDbLongTransWorkSetIterator::start ZcDbLongTransWorkSetIterator::step

ZcDbLongTransWorkSetIterator::curObjectIsErased ZcDbLongTransWorkSetIterator::curObjectIsPrimary ZcDbLongTransWorkSetIterator::curObjectIsRemoved ZcDbLongTransWorkSetIterator::done ZcDbLongTransWorkSetIterator::objected 3) 事务管理类

ZcDbTransactionManager::getAllObjects ZcDbTransactionManager::getObject ZcDbTransactionManager::abortTransaction

ZcDbTransactionManager::addNewlyCreatedDBRObject ZcDbTransactionManager:: startTransaction 4) 事务类

ZcTransaction::getAllObjects ZcTransaction::getObject

文档管理

ZWCAD是一个支持多文档(MDI)的应用程序,并提供了一套针对ZWCAD文档管理的应用接口,每一个打开的dwg图形为一个ZcApDocument文档对象,文档管理应用类ZcApDocManager管理所有的ZcApDocumen对象。文档迭代器ZcApDocumentIterator提供一套迭代的方法来遍历当前CAD打开的所有文档。文档反应器ZcApDocManagerReactor用来通告当前文档操作的事件。

1)文档对象类ZcApDocument ZcApDocument::cDoc ZcApDocumen::docTitle ZcApDocument::fileName ZcApDocument::isReadOnly

2)文档管理应用类ZcApDocManager ZcApDocManager::addReactor

ZcApDocManager::appContextNewDocument ZcApDocManager::appContextOpenDocument ZcApDocManager::curDocument ZcApDocManager::document ZcApDocManager::documentCount

ZcApDocManager::newAcApDocumentIterator ZcApDocManager::openDocument ZcApDocManager::removeReactor

3)文档迭代器ZcApDocumentIterator ZcApDocumentIterator::docment ZcApDocumentIterator::done ZcApDocumentIterator::step

4) 文档反应器

ZcApDocManagerReactor::documentActivated ZcApDocManagerReactor::documentBecameCurrent ZcApDocManagerReactor::documentCreated

ZcApDocManagerReactor::documentCreateStarted ZcApDocManagerReactor::documentDestroyed ZcApDocManagerReactor::documentToBeActivated ZcApDocManagerReactor::documentToBeDeactivated ZcApDocManagerReactor::documentToBeDestroyed

代码示例:如何获得到当前ZWCAD打开的所有文档名称?

void listDocuments() {

ZcDbDatabase* pDb = zcdbHostApplicationServices()->workingDatabase(); ZcApDocument* pCurDoc = zcDocManager->document(pDb); const char * strCurTitle = pCurDoc->docTitle();

zcutPrintf(\ZcApDocumentIterator* pDocIter;

pDocIter = zcDocManager->newZcApDocumentIterator(); zcutPrintf(\ZcApDocument* pDoc = NULL; int nIndex = 1;

for ( ; !pDocIter->done(); pDocIter->step()) {

pDoc = pDocIter->document();

const char * strTitle = pDoc->docTitle(); const char * strFileName = pDoc->fileName();

zcutPrintf(\

nIndex, strTitle, strFileName); }

}

delete pDocIter;

nIndex++;

提示:文档管理类的接口的详细使用可以参考ZRXSDK\\Sample\\目录下的示例程序DocumentManager

自定义实体OPM

什么是自定义实体OPM?

针对自定义实体类型,用户可自行定义和扩展该实体的属性,根据具体需要对自定义实体的特性定义和分类。支持多种数据类型的属性,包括:字符串、整型、浮点、变体等。支持多个实体属性集合的交集。

自定义实体OPM特性:

1) 显示自定义属性的名称

2) 显示基本属性(颜色,图层,线型等) 3) 显示自定义实体自定义的属性 4) 分类显示自定义实体属性

5) 编辑修改自定义实体属性(支持多个实体属性交集的编辑)

OPM使用注意事项:

1) 目前所支持的自定义实体属性栏的显示还不全面,从实体类型而言,仅支持从

IZcadEntity派生的自定义实体;

2) 所支持的OPM接口仅限于数据层面(如IOPMPropertyExpander,

IOPMPropertyExtension),暂不支持与界面相关的接口(如IPerPropertyDisplay)。

提示:自定义实体OPM的使用可参考ZRXSDK\\Sample\\目录下的示例程序ZRX_Misc

MFC扩展UI类

ZRX支持用户使用MFC来扩展开发自己的应用程序。例如在ZRX应用程序上使用MFC创建CDialog、CButton、CComboBox、CEdit等控件。同样, ZRX提供了几个基本的UI接口类供二次开发使用:

CZdUiBaseDialog——继承于CDialog,提供基本对话框窗口功能

CZdUiDailog——继承于CZdUiBaseDialog,提供窗口尺寸变化和永久数据的存储功能 CZcUiDialog——继承于CZdUiDailog,扩展和完整CZdUiDailog类的功能

可停靠面板(DockControlBar)

ZWCAD可停靠面板功能主要使用全局接口函数zdsw_excuteUICommand, 把特定功能的回调函数转接到ZWCAD主UI线程上执行。因此,在应用该功能前,需要事先完成特性功能的回调函数。