![]() |
【转帖】求问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. |