- 积分
- 430
- 明经币
- 个
- 注册时间
- 2002-8-15
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
下面是小弟写的一个土块插入的程序!运行完后,图快能插入!但不久AutoCAD弹出一个对话框,告诉有致命错误!!找了半天也没找到错误!请帮大虾们帮我看看程序:非常感谢!
void SelEntToLib()
{
ads_name ssname,ent;
ads_point selpt;
AcDbObjectId enId,msrId;
char bName[256],desName[256];
AcDbEntity *pEnt;
strcpy(bName,"yuanzhui");
strcpy(desName,"F:\\FENGH\\program\\AutoCAD\\ObjectARX\\LibMag\\testlib.dwg");
if( acedSSGet(NULL,NULL,NULL,NULL,ssname) != RTNORM)
{
acutPrintf("\n创建选择集失败!");
return;
}
if( acedSSName(ssname,0L,ent) != RTNORM)
{
acutPrintf("\n获得实体失败!");
return;
}
acedSSFree(ssname);
if( acdbGetObjectId(enId,ent) != Acad::eOk)
{
acutPrintf("\nconver object id fail!");
return;
}
// acdbOpenObject(pEnt,enId,AcDb::kForWrite);
AcDbDatabase * curpDb = acdbHostApplicationServices()->workingDatabase();
AcDbDatabase * tempDb = new AcDbDatabase(Adesk::kFalse);
AcDbDatabase * pDbMS = new AcDbDatabase(Adesk::kFalse);
if(pDbMS->readDwgFile(desName) != Acad::eOk)
{
acutPrintf("\nThe file %s cannot be opend",desName);
return;
}
curpDb->wblock(tempDb,enId);//把图块写入一当前数据库中
// pEnt->close();
// tempDb->saveAs("cur.dwg");
pDbMS->insert(msrId,bName,tempDb);//从临时数据库插入图库中
AcDbBlockReference *pBlkRef = new AcDbBlockReference; //创建一个块表引用
pBlkRef->setBlockTableRecord(msrId);// 指向blockId;
// pBlkRef->setBlockTableRecord(enId);// 指向blockId;
// pBlkRef->setPosition(Pt);//设置位置
// pBlkRef->setRotation(Angle);//设置转角
// pBlkRef->setScaleFactors( XrefScale);//设置放大比例
AcDbBlockTable *curpBlockTable = NULL;
pDbMS->getSymbolTable(curpBlockTable, AcDb::kForRead);
AcDbBlockTableRecord *curpBlockTableRecord;
curpBlockTable->getAt(ACDB_MODEL_SPACE, curpBlockTableRecord, AcDb::kForWrite);
curpBlockTable->close();
AcDbObjectId newEntId;
curpBlockTableRecord->appendAcDbEntity(newEntId, pBlkRef);
curpBlockTableRecord->close();
pBlkRef->close();
delete tempDb;
pDbMS->saveAs("F:\\FENGH\\program\\AutoCAD\\ObjectARX\\LibMag\\sel.dwg");
delete pDbMS;
return;
} |
|