插入块并分解

/************************************************************************/
/*
 插入块并分解
*/
/************************************************************************/
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();
 */
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zzia72

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值