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

几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 (http://www.dimcax.com/hust/index.php)
-   ObjectARX(C++) (http://www.dimcax.com/hust/forumdisplay.php?f=34)
-   -   【转帖】关于readdwgfile的问题 (http://www.dimcax.com/hust/showthread.php?t=7152)

yang686526 2009-04-16 08:10 PM

【转帖】关于readdwgfile的问题
 
关于readdwgfile的问题
关于readdwgfile的问题
函数:bool creanent::readdwgfile()
{
acdbdatabase *pdb=new acdbdatabase(adesk::kfalse);
cstring acadpath,filepath;
getacadpath(acadpath);
acadpath = acadpath.left(acadpath.getlength() - 8);
//cstring filepath = acadpath + "test.dwg";
filepath="d:\\test01.dwg";
// filepath=lstopenfile();
if(pdb->readdwgfile(filepath,_sh_denyrw)!=acad::eok);
{
if(filepath.getalloclength()==0)
{
afxmessagebox(_t("文件不存在"));
}
else
afxmessagebox(_t("文件不能打开"));
return false;
}
acdbblocktable *pblktbl;
pdb->getsymboltable(pblktbl, acdb::kforread);
acdbblocktablerecord *pblktblrcd;
pblktbl->getat(acdb_model_space, pblktblrcd,acdb::kforread);
pblktbl->close();
acdbblocktablerecorditerator *pblktblrcditr;
pblktblrcd->newiterator(pblktblrcditr);
acdbentity *pent;
for (pblktblrcditr->start(); !pblktblrcditr->done();
pblktblrcditr->step())
{
pblktblrcditr->getentity(pent,
acdb::kforread);
acutprintf(_t("classname: %s\n"),
(pent->isa())->name());
pent->close();
}
pblktblrcd->close();
delete pblktblrcditr;
delete pdb;
}
这个函数基本上是按教材上抄下来的,
我用的是vs5+autocad8编写,但是文件就是打不开,如果不加 if(pdb->readdwgfile(filepath,_sh_denyrw)!=acad::eok);
{
if(filepath.getalloclength()==0)
{
afxmessagebox(_t("文件不存在"));
}
else
afxmessagebox(_t("文件不能打开"));
return false;
}
这个判断,那么只要一运行就马上出现严重错误而使得autocad关闭,不知道何原因。程序很简单,就是打开一个dwg文件,并显示它。
不知各位大侠遇到此问题没有。
readdwgfile函数很简单,只要路径对了文件存在就能执行成功,否则不成功
objectarx 8\samples\下有个例子,很详细
谢谢
按例子做,可以读取,但是文件不显示啊
如果新建立数据库的话,没有办法在窗口显示图形
因为那个例子功能就是只readdwg并插入,但不显示
你注意看有个erase什么的


所有的时间均为北京时间。 现在的时间是 06:48 AM.