![]() |
【转帖】这个谁帮我测一下,所我写入关闭文件错误,谢谢
这个谁帮我测一下,所我写入关闭文件错误,谢谢
这个谁帮我测一下,所我写入关闭文件错误,谢谢 #include "stdafx.h" #include "dbmain.h" #include "dbsymtb.h" #include "dbents.h" #include "gepnt3d.h" #include "gevec3d.h" #include "dbents.h" #include "accmd.h" #include "aced.h" #include "rxdlinkr.h" #include "rxobject.h" void createdb(); void createdb() { acdbdatabase *pdb = new acdbdatabase(); //打开表块 acdbblocktable *pbtbl; pdb->getsymboltable(pbtbl,acdb::kforread); //打开模型空间快表记录 //并存入指针pbtblrcd指向的快表记录 //关闭快表 acdbblocktablerecord *pbtblrcd; pbtbl->getat(acdb_model_space,pbtblrcd,acdb::kforwrite); pbtbl->close(); //创建并初始化一个圆对象和一条直线对象 acdbcircle *pcircle=new acdbcircle(acgepoint3d(4,4,0),acgevector3d(0,0,1),1.0); acdbline *pline= new acdbline(acgepoint3d(3,3,0),acgepoint3d(5,5,0)); //将新建的两个对象添加到快表记录中,然后关闭动态对象 pbtblrcd->appendacdbentity(pcircle); pcircle->close(); pbtblrcd->appendacdbentity(pline); pline->close(); //函数acdbdatabase::saveas()不能自动为文件制定扩展名,因此文件名参数必须包含扩展名 pdb->saveas("test1.dwg"); //删除指针pdb指向的 动态数据库对象 delete pdb; acutprintf("\n完成创建数据库,退出程序!"); } void readdb() { //向acdbdatabase构造函数传递kfalse参数, //可以创建一个空的图形数据库 acdbdatabase *pdb=new acdbdatabase(adesk::kfalse); //如果filename参数无扩展名,函数acdbdatabase::readdwgfile() //可以自动添加“dwg”扩展名 if(pdb->readdwgfile("test1.dwg")!=acad::eok) { acutprintf("\n不能打开指定文件,退出程序!"); return; } acdbblocktable *pblktbl; pdb->getsymboltable(pblktbl,acdb::kforread); acdbblocktablerecord *pblktblrcd; pblktbl->getat(acdb_model_space,pblktblrcd,acdb::kforwrite); pblktbl->close(); //创建迭代器,用于遍历包含在快表记录中的实体 acdbblocktablerecorditerator *pblktblrcditr; pblktblrcd->newiterator(pblktblrcditr); acdbentity *pent; //遍历快表记录包含的所有实体,显示他们的类名 for(pblktblrcditr->start();!pblktblrcditr->done();pblktblrcditr->step()) { pblktblrcditr->getentity(pent,acdb::kforread); acutprintf("类名:%s\n",(pent->isa())->name()); pent->close(); } //关闭快表记录 pblktblrcd->close(); //删除迭代器对象指针的数据库对象指针 delete pblktblrcditr; delete pdb; acutprintf("\n 完成读取数据库,退出程序!"); } //远程数据库操作函数 //读取数据库信息函数 void initapp() { acedregcmds->addcommand("operatedb_commands", "createdb", "createdb", acrx_cmd_modal, createdb); acedregcmds->addcommand("operatedb_commands", "readdb", "readdb", acrx_cmd_modal, readdb); } void unloadapp() { acedregcmds->removegroup("operatedb_commands"); acedregcmds->removegroup("longtransaction_commands"); } //应用程序主函数 extern "c" acrx::appretcode acrxentrypoint(acrx::appmsgcode msg,void *pkt) { switch(msg) { case acrx::kinitappmsg: acrxdynamiclinker->unlockapplication(pkt); acrxdynamiclinker->registerappmdiaware(pkt); initapp(); break; case acrx::kunloadappmsg: unloadapp(); } return acrx::kretok; } 应该是保存前没有关闭块表记录吧。 pblktblrcd->close(); pdb->saveas("test1.dwg"); silence of happiness.... 这个是怎么回事啊? 命令: readdb 不能打开指定文件,退出程序! 是保存目录的问题吗? acad::errorstatus es=pdb->readdwgfile("test1.dwg"); if(es!=acad::eok) { acutprintf("\n不能打开指定文件,退出程序!"); return;} es的返回值是什么? silence of happiness.... 你要保证test1.dwg文件是在cad支持的搜索路径下,要不然最好用全路径。打不开是因为没有找到文件 |
所有的时间均为北京时间。 现在的时间是 09:52 AM. |