huangjianzhe 发表于 2008-6-27 09:21:00

这个谁帮我测一下,所我写入关闭文件错误,谢谢

<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-&gt;getSymbolTable(pBtbl,AcDb::kForRead);<br/>//打开模型空间快表记录<br/>//并存入指针pBtblRcd指向的快表记录<br/>//关闭快表<br/>AcDbBlockTableRecord *pBtblRcd;<br/>pBtbl-&gt;getAt(ACDB_MODEL_SPACE,pBtblRcd,AcDb::kForWrite);<br/>pBtbl-&gt;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-&gt;appendAcDbEntity(pCircle);<br/>pCircle-&gt;close();<br/>pBtblRcd-&gt;appendAcDbEntity(pLine);<br/>pLine-&gt;close();<br/>//函数AcDbDatabase::saveAs()不能自动为文件制定扩展名,因此文件名参数必须包含扩展名<br/>pDb-&gt;saveAs("test1.dwg");<br/>//删除指针pDb指向的 动态数据库对象<br/>delete pDb;<br/>acutPrintf("\n完成创建数据库,退出程序!");<br/>}<br/>void readDb()<br/>{<br/>//向AcDbDatabase构造函数传递kFalse参数,<br/>//可以创建一个空的图形数据库<br/>&nbsp;AcDbDatabase *pDb=new AcDbDatabase(Adesk::kFalse);<br/>&nbsp;//如果filename参数无扩展名,函数AcDbDatabase::readDwgFile()<br/>&nbsp;//可以自动添加“DWG”扩展名<br/>&nbsp;if(pDb-&gt;readDwgFile("test1.dwg")!=Acad::eOk)<br/>&nbsp;{<br/>acutPrintf("\n不能打开指定文件,退出程序!");<br/>return;<br/>&nbsp;}<br/>&nbsp;AcDbBlockTable *pBlkTbl;<br/>&nbsp;pDb-&gt;getSymbolTable(pBlkTbl,AcDb::kForRead);<br/>&nbsp;AcDbBlockTableRecord *pBlkTblRcd;<br/>&nbsp;pBlkTbl-&gt;getAt(ACDB_MODEL_SPACE,pBlkTblRcd,AcDb::kForWrite);<br/>&nbsp;pBlkTbl-&gt;close();<br/>&nbsp;//创建迭代器,用于遍历包含在快表记录中的实体<br/>&nbsp;AcDbBlockTableRecordIterator *pBlkTblRcdItr;<br/>&nbsp;pBlkTblRcd-&gt;newIterator(pBlkTblRcdItr);<br/>&nbsp;AcDbEntity *pEnt;<br/>&nbsp;//遍历快表记录包含的所有实体,显示他们的类名<br/>&nbsp;for(pBlkTblRcdItr-&gt;start();!pBlkTblRcdItr-&gt;done();pBlkTblRcdItr-&gt;step())<br/>&nbsp;{<br/>&nbsp;&nbsp;pBlkTblRcdItr-&gt;getEntity(pEnt,AcDb::kForRead);<br/>&nbsp;&nbsp;acutPrintf("类名:%s\n",(pEnt-&gt;isA())-&gt;name());<br/>&nbsp;&nbsp;pEnt-&gt;close();<br/>&nbsp;}<br/>&nbsp;//关闭快表记录<br/>&nbsp;pBlkTblRcd-&gt;close();<br/>&nbsp;//删除迭代器对象指针的数据库对象指针<br/>&nbsp;delete pBlkTblRcdItr;<br/>&nbsp;delete pDb;<br/>&nbsp;acutPrintf("\n 完成读取数据库,退出程序!");<br/>}<br/>//远程数据库操作函数</p><p></p><p>//读取数据库信息函数<br/>void initApp()<br/>{<br/>acedRegCmds-&gt;addCommand("OPERATEDB_COMMANDS",<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"CREATEDB",<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"CREATEDB",<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ACRX_CMD_MODAL,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;createDb);<br/>acedRegCmds-&gt;addCommand("OPERATEDB_COMMANDS",<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"READDB",<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"READDB",<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ACRX_CMD_MODAL,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;readDb);<br/>}<br/>void unloadApp()<br/>{<br/>acedRegCmds-&gt;removeGroup("OPERATEDB_COMMANDS");<br/>acedRegCmds-&gt;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/>&nbsp;&nbsp;acrxDynamicLinker-&gt;unlockApplication(pkt);<br/>&nbsp;&nbsp;acrxDynamicLinker-&gt;registerAppMDIAware(pkt);<br/>&nbsp;&nbsp;initApp();<br/>&nbsp;&nbsp;break;<br/>case AcRx::kUnloadAppMsg:<br/>&nbsp;&nbsp;&nbsp;unloadApp();<br/>}<br/>return AcRx::kRetOK;<br/>}</p>

alfalfa 发表于 2008-6-27 10:02:00

应该是保存前没有关闭块表记录吧。<br/><br/>pBlkTblRcd-&gt;close();<br/>pDb-&gt;saveAs("test1.dwg");

huangjianzhe 发表于 2008-6-27 10:13:00

这个是怎么回事啊?

huangjianzhe 发表于 2008-6-27 10:17:00

命令: readdb<br/>不能打开指定文件,退出程序!<br/>

huangjianzhe 发表于 2008-6-27 10:18:00

是保存目录的问题吗?

alfalfa 发表于 2008-6-27 14:41:00

Acad::ErrorStatus es=pDb-&gt;readDwgFile("test1.dwg");<br/>if(es!=Acad::eOk)<br/> {    acutPrintf("\n不能打开指定文件,退出程序!");<br/>      return;}<br/>es的返回值是什么?<br/>

hdr0427168 发表于 2008-6-27 15:11:00

<p>你要保证Test1.dwg文件是在CAD支持的搜索路径下,要不然最好用全路径。打不开是因为没有找到文件</p>
页: [1]
查看完整版本: 这个谁帮我测一下,所我写入关闭文件错误,谢谢