插入塊並分解

/************************************************************************/
/*
 插入塊並分解
*/
/************************************************************************/
void CTrimeDraw::SetOutDwg(ads_point Pt)
{
 CString sFileName=GetCurPath()+_T("\\分圖模板1.dwg");
 AcDbDatabase *pNewDb =new AcDbDatabase(Adesk::kFalse);
 Acad::ErrorStatus es=pNewDb->readDwgFile(sFileName , _SH_DENYNO,false);
 if (es!=Acad::eOk)
 {
  acutPrintf(_T("\nThe file %s cannot be opend"),sFileName);
  return;
 }
 AcDbDatabase *pDb;
 pDb =acdbHostApplicationServices ()->workingDatabase ();
 CString pBlockName="TestBlock";
 AcDbObjectId blockId;
 if((es=pDb->insert(blockId, pBlockName,pNewDb, true))==Acad::eOk)
 {
  acutPrintf(_T("\ninsert ok\n"));
 }
 else
 {
  AfxMessageBox(_T("Insert failed"));
  delete pNewDb;
  return;
 }
 delete pNewDb;
 acedCommand(RTSTR, _T("insert"),
  RTSTR, _T("TestBlock"),
  RTPOINT, Pt,
  RTSTR, _T("1"),
  RTSTR, _T("1"),
  RTSTR, _T("0"),
  RTNONE);
 acdbHostApplicationServices()->setWorkingDatabase(pDb);
 //分解
 acedCommand(RTSTR, _T("explode"),
  RTSTR, _T("L"),
  0);
 /*
 // 獲得當前數據庫的塊表
 AcDbBlockTable *pBlkTbl;
 acdbHostApplicationServices()->workingDatabase()
  ->getBlockTable(pBlkTbl, AcDb::kForWrite);
 // 查找用戶指定的塊定義是否存在
 CString strBlkDef;
 strBlkDef.Format(_T("%s"), _T("TestBlock"));
 if (!pBlkTbl->has(strBlkDef))
 {
  acutPrintf(_T("\n當前圖形中未包含指定名稱的塊定義!"));
  pBlkTbl->close();
  return;
 }
 // 獲得用戶指定的塊表記錄
 AcDbObjectId blkDefId;
 pBlkTbl->getAt(strBlkDef, blkDefId);
 // 創建塊參照對象
 AcDbBlockReference *pBlkRef = new AcDbBlockReference(Pt,blkDefId);
 // 將塊參照添加到模型空間
 AcDbBlockTableRecord *pBlkTblRcd;
 pBlkTbl->getAt(ACDB_MODEL_SPACE, pBlkTblRcd,
  AcDb::kForWrite);
 AcDbObjectId entId;
 pBlkTblRcd->appendAcDbEntity(entId, pBlkRef);
 // 關閉數據庫的對象
 pBlkTblRcd->close();
 pBlkRef->close();
 pBlkTbl->close();
 */
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章