几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量  


返回   几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 » 仿射空间:CAX软件开发(三)二次开发与程序设计 » CAD二次开发 » AutoCAD二次开发 » ObjectARX(C++)
用户名
密码
注册 帮助 会员 日历 银行 搜索 今日新帖 标记论坛为已读


回复
 
主题工具 搜索本主题 显示模式
旧 2009-04-18, 10:46 PM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】这个谁帮我测一下,所我写入关闭文件错误,谢谢

这个谁帮我测一下,所我写入关闭文件错误,谢谢
这个谁帮我测一下,所我写入关闭文件错误,谢谢
#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支持的搜索路径下,要不然最好用全路径。打不开是因为没有找到文件
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)
回复


主题工具 搜索本主题
搜索本主题:

高级搜索
显示模式

发帖规则
不可以发表新主题
不可以回复主题
不可以上传附件
不可以编辑您的帖子

vB 代码开启
[IMG]代码开启
HTML代码关闭



所有的时间均为北京时间。 现在的时间是 04:44 PM.


于2004年创办,几何尺寸与公差论坛"致力于产品几何量公差标准GD&T | GPS研究/CAD设计/CAM加工/CMM测量"。免责声明:论坛严禁发布色情反动言论及有关违反国家法律法规内容!情节严重者提供其IP,并配合相关部门进行严厉查处,若內容有涉及侵权,请立即联系我们QQ:44671734。注:此论坛须管理员验证方可发帖。
沪ICP备06057009号-2
更多