这个谁帮我测一下,所我写入关闭文件错误,谢谢
<p>#include "stdafx.h"<br/>#include "dbmain.h"<br/>#include "dbsymtb.h"<br/>#include "dbents.h"<br/>#include "gepnt3d.h"<br/>#include "gevec3d.h"<br/>#include "dbents.h"<br/>#include "accmd.h"<br/>#include "aced.h"<br/>#include "rxdlinkr.h"<br/>#include "rxobject.h"</p><p>void createDb();</p><p><br/>void createDb()<br/>{<br/>AcDbDatabase *pDb = new AcDbDatabase();<br/>//打开表块<br/>AcDbBlockTable *pBtbl;<br/>pDb->getSymbolTable(pBtbl,AcDb::kForRead);<br/>//打开模型空间快表记录<br/>//并存入指针pBtblRcd指向的快表记录<br/>//关闭快表<br/>AcDbBlockTableRecord *pBtblRcd;<br/>pBtbl->getAt(ACDB_MODEL_SPACE,pBtblRcd,AcDb::kForWrite);<br/>pBtbl->close();<br/>//创建并初始化一个圆对象和一条直线对象<br/>AcDbCircle *pCircle=new AcDbCircle(AcGePoint3d(4,4,0),AcGeVector3d(0,0,1),1.0);<br/>AcDbLine *pLine= new AcDbLine(AcGePoint3d(3,3,0),AcGePoint3d(5,5,0));<br/>//将新建的两个对象添加到快表记录中,然后关闭动态对象<br/>pBtblRcd->appendAcDbEntity(pCircle);<br/>pCircle->close();<br/>pBtblRcd->appendAcDbEntity(pLine);<br/>pLine->close();<br/>//函数AcDbDatabase::saveAs()不能自动为文件制定扩展名,因此文件名参数必须包含扩展名<br/>pDb->saveAs("test1.dwg");<br/>//删除指针pDb指向的 动态数据库对象<br/>delete pDb;<br/>acutPrintf("\n完成创建数据库,退出程序!");<br/>}<br/>void readDb()<br/>{<br/>//向AcDbDatabase构造函数传递kFalse参数,<br/>//可以创建一个空的图形数据库<br/> AcDbDatabase *pDb=new AcDbDatabase(Adesk::kFalse);<br/> //如果filename参数无扩展名,函数AcDbDatabase::readDwgFile()<br/> //可以自动添加“DWG”扩展名<br/> if(pDb->readDwgFile("test1.dwg")!=Acad::eOk)<br/> {<br/>acutPrintf("\n不能打开指定文件,退出程序!");<br/>return;<br/> }<br/> AcDbBlockTable *pBlkTbl;<br/> pDb->getSymbolTable(pBlkTbl,AcDb::kForRead);<br/> AcDbBlockTableRecord *pBlkTblRcd;<br/> pBlkTbl->getAt(ACDB_MODEL_SPACE,pBlkTblRcd,AcDb::kForWrite);<br/> pBlkTbl->close();<br/> //创建迭代器,用于遍历包含在快表记录中的实体<br/> AcDbBlockTableRecordIterator *pBlkTblRcdItr;<br/> pBlkTblRcd->newIterator(pBlkTblRcdItr);<br/> AcDbEntity *pEnt;<br/> //遍历快表记录包含的所有实体,显示他们的类名<br/> for(pBlkTblRcdItr->start();!pBlkTblRcdItr->done();pBlkTblRcdItr->step())<br/> {<br/> pBlkTblRcdItr->getEntity(pEnt,AcDb::kForRead);<br/> acutPrintf("类名:%s\n",(pEnt->isA())->name());<br/> pEnt->close();<br/> }<br/> //关闭快表记录<br/> pBlkTblRcd->close();<br/> //删除迭代器对象指针的数据库对象指针<br/> delete pBlkTblRcdItr;<br/> delete pDb;<br/> acutPrintf("\n 完成读取数据库,退出程序!");<br/>}<br/>//远程数据库操作函数</p><p></p><p>//读取数据库信息函数<br/>void initApp()<br/>{<br/>acedRegCmds->addCommand("OPERATEDB_COMMANDS",<br/> "CREATEDB",<br/> "CREATEDB",<br/> ACRX_CMD_MODAL,<br/> createDb);<br/>acedRegCmds->addCommand("OPERATEDB_COMMANDS",<br/> "READDB",<br/> "READDB",<br/> ACRX_CMD_MODAL,<br/> readDb);<br/>}<br/>void unloadApp()<br/>{<br/>acedRegCmds->removeGroup("OPERATEDB_COMMANDS");<br/>acedRegCmds->removeGroup("LongTransaction_COMMANDS");<br/>}<br/>//应用程序主函数<br/>extern "C" AcRx::AppRetCode<br/>acrxEntryPoint(AcRx::AppMsgCode msg,void *pkt)<br/>{<br/>switch(msg)<br/>{<br/>case AcRx::kInitAppMsg:<br/> acrxDynamicLinker->unlockApplication(pkt);<br/> acrxDynamicLinker->registerAppMDIAware(pkt);<br/> initApp();<br/> break;<br/>case AcRx::kUnloadAppMsg:<br/> unloadApp();<br/>}<br/>return AcRx::kRetOK;<br/>}</p> 应该是保存前没有关闭块表记录吧。<br/><br/>pBlkTblRcd->close();<br/>pDb->saveAs("test1.dwg"); 这个是怎么回事啊? 命令: readdb<br/>不能打开指定文件,退出程序!<br/> 是保存目录的问题吗? Acad::ErrorStatus es=pDb->readDwgFile("test1.dwg");<br/>if(es!=Acad::eOk)<br/> { acutPrintf("\n不能打开指定文件,退出程序!");<br/> return;}<br/>es的返回值是什么?<br/> <p>你要保证Test1.dwg文件是在CAD支持的搜索路径下,要不然最好用全路径。打不开是因为没有找到文件</p>
页:
[1]