插入塊並分解
/************************************************************************/
/*
插入塊並分解
*/
/************************************************************************/
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();
*/
}
/*
插入塊並分解
*/
/************************************************************************/
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();
*/
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.