困惑!!
下面是小弟写的一个土块插入的程序!运行完后,图快能插入!但不久autocad弹出一个对话框,告诉有致命错误!!找了半天也没找到错误!请帮大虾们帮我看看程序:非常感谢!void SelEntToLib()
{
ads_name ssname,ent;
ads_point selpt;
AcDbObjectId enId,msrId;
char bName,desName;
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;
}
The first problem is: wblock()
in the ->wblock(tempDb) , you don't need to run thetempDb=new AcDbDataBase();
页:
[1]