- UID
- 5117
- 积分
- 0
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2002-5-16
- 最后登录
- 1970-1-1
|
楼主 |
发表于 2002-6-19 12:44:04
|
显示全部楼层
现在我遇到的问题是.我已经用wblock定义了块保存在磁盘上,但是..
调用的时候老是说Block definition G:\c++\Code\Chapter 7\Ch7_1\1.dwg not found,可是我直接在autocad中用insert命令可以插入该块啊
以下是代码看看,错在哪里:
void insertBlock(char blkName[50], AcGePoint3d insPt,double k)
{
double ang,sx,sy,sz;
AcDbDatabase *pCurDb;
AcDbBlockTable *pBlkTable;
AcDbBlockTableRecord *pBlkTableRecord;
AcDbBlockReference *pInsrtObj=new AcDbBlockReference;
AcDbObjectId blkId;
ang=0.0;
sx=k;sy=k;sz=1;
AcGeScale3d xyzscale(sx,sy,sz);
pCurDb = acdbHostApplicationServices()->workingDatabase();
// Check to see if the block table
// has blkName
pCurDb->getBlockTable(pBlkTable, AcDb::kForRead);
if(!pBlkTable->has(blkName))
{
acutPrintf("\nBlock definition %s not found. ", blkName);
pBlkTable->close();
return;
}
pBlkTable->getAt(blkName, blkId);
pBlkTable->getAt(ACDB_MODEL_SPACE,pBlkTableRecord, AcDb::kForWrite);
pBlkTable->close();
acedInitGet(RSG_NONULL, NULL);
pInsrtObj->setBlockTableRecord(blkId);
pInsrtObj->setPosition(insPt);
pInsrtObj->setRotation(ang);
pInsrtObj->setScaleFactors(xyzscale);
pBlkTableRecord->appendAcDbEntity(blkId, pInsrtObj);
pBlkTableRecord->close();
pInsrtObj->close();
}
然后调用
AcGePoint3d pti(100,100,0);
insertBlock("G:\\c++\\Code\\Chapter 7\\Ch7_1\\1.dwg",pti,SK); |
|