几何尺寸与公差论坛------致力于产品几何量公差标准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)
-   -   【转帖】求问4arx图块插入问题 (http://www.dimcax.com/hust/showthread.php?t=7926)

yang686526 2009-04-18 05:53 PM

【转帖】求问4arx图块插入问题
 
求问4arx图块插入问题
求问4arx图块插入问题
我使用的是autocad4,按照论坛和书上的指导做了这个将图形作为图块插入的程序,可是怎么都不能在图纸上显示插入结果,手动插入的时候可以看见图形已经成为块,并可以顺利插入图块,但程序的插入代码并不起作用,为什么?请大家看一下。
cstring pblockname = "basept";
acgepoint3d pt(,,0);
double angle = 0.0;
acgescale3d xrefscale(1.,1.,1.);
acdbdatabase *pnewdb =new acdbdatabase(adesk::kfalse);
int es=pnewdb->readdwgfile(sfilename,_sh_denyno,false);
if (es!=acad::eok)
{
acutprintf("\nthe file %s cannot be opend",sfilename);
return;
}
acdbdatabase *pdb;
pdb =acdbhostapplicationservices ()->workingdatabase () ;
acdbobjectid blockid;
if((es=pdb->insert(blockid, pblockname,pnewdb, true))==acad::eok)
{
acutprintf("\ninsert ok\n");
}
else
{
afxmessagebox("insert failed");
delete pnewdb;
return;
} //程序到这里,后面仿佛就开始出错,我找不到原因。难道因为我用的盗版??
acdbblockreference *pblkref = new acdbblockreference;
pblkref->setblocktablerecord(blockid);//指向blockid;
pblkref->setposition(pt);//设定位置
pblkref->setrotation(angle);//设定转角
pblkref->setscalefactors( xrefscale);//设定放大比例
acdbblocktable *pblocktable;
pdb->getsymboltable(pblocktable, acdb::kforread);
acdbblocktablerecord *pblocktablerecord;
pblocktable->getat(acdb_model_space, pblocktablerecord, acdb::kforwrite);
pblocktable->close();
acdbobjectid newentid;
pblocktablerecord->appendacdbentity(newentid, pblkref);
pblocktablerecord->close();
}
hoho,不好意思,犯了变量名认知错误了,眼睛都看花了,想了那么多就是没想到简单错误,忘了把acdbblockreference给close了,打扰各位看客了。


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