求问2004arx图块插入问题
<P>我使用的是autocad2004,按照论坛和书上的指导做了这个将图形作为图块插入的程序,可是怎么都不能在图纸上显示插入结果,手动插入的时候可以看见图形已经成为块,并可以顺利插入图块,但程序的插入代码并不起作用,为什么?请大家看一下。</P><P> CString sFileName = "D:\\cadMgr<A href="file://ptu.dwg/" target="_blank" >\\ptu.dwg</A>";<BR> CString pBlockName = "basePT";<BR> AcGePoint3d Pt(200,200,0);<BR> double Angle = 0.0;<BR> AcGeScale3d XrefScale(1.,1.,1.);<BR> AcDbDatabase *pNewDb =new AcDbDatabase(Adesk::kFalse); <BR> int es=pNewDb->readDwgFile(sFileName,_SH_DENYNO,false); <BR> if (es!=Acad::eOk) <BR> { <BR> acutPrintf("\nThe file %s cannot be opend",sFileName); <BR> return; <BR> }<BR> AcDbDatabase *pDb; <BR> pDb =acdbHostApplicationServices ()->workingDatabase () ; <BR> AcDbObjectId blockId; <BR> if((es=pDb->insert(blockId, pBlockName,pNewDb, true))==Acad::eOk) <BR> { <BR> acutPrintf("\ninsert ok\n"); <BR> } <BR> else <BR> { <BR> AfxMessageBox("Insert failed"); <BR> delete pNewDb; <BR> return; <BR> } //程序到这里,后面仿佛就开始出错,我找不到原因。难道因为我用的盗版??<BR> AcDbBlockReference *pBlkRef = new AcDbBlockReference; <BR> pBlkRef->setBlockTableRecord(blockId);//指向blockId; <BR> pBlkRef->setPosition(Pt);//设定位置 <BR> pBlkRef->setRotation(Angle);//设定转角 <BR> pBlkRef->setScaleFactors( XrefScale);//设定放大比例 </P>
<P> AcDbBlockTable *pBlockTable; <BR> pDb->getSymbolTable(pBlockTable, AcDb::kForRead); </P>
<P> AcDbBlockTableRecord *pBlockTableRecord; <BR> pBlockTable->getAt(ACDB_MODEL_SPACE, pBlockTableRecord, AcDb::kForWrite); <BR> pBlockTable->close(); <BR> AcDbObjectId newEntId; <BR> pBlockTableRecord->appendAcDbEntity(newEntId, pBlkRef); <BR> pBlockTableRecord->close(); <BR> }</P> hoho,不好意思,犯了变量名认知错误了,眼睛都看花了,想了那么多就是没想到简单错误,忘了把AcDbBlockReference给close了,打扰各位看客了。
页:
[1]