找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 159|回复: 0

得到块定义id(通过图纸、块名和数据库指针;如果数据库中没有该块定义,就从目标图纸

[复制链接]

0

主题

0

回帖

26

积分

管理员

积分
26
发表于 2024-3-13 23:04:18 | 显示全部楼层 |阅读模式
  1. bool PhdArxBlock::GetBlkDefId(AcDbObjectId& idBlkDef, LPCTSTR szDwgPath, LPCTSTR szBlkName, AcDbDatabase* pDb /*= acdbCurDwg()*/) const
  2. {
  3.         AcDbBlockTableRecordPointer pInsertBlkTblRcd(szBlkName, pDb, AcDb::kForRead);
  4.         if (Acad::eOk == pInsertBlkTblRcd.openStatus())
  5.         {
  6.                 idBlkDef = pInsertBlkTblRcd->objectId();//当前数据库存在该块,返回该块定义id
  7.                 return true;
  8.         }
  9.         //打开图纸
  10.         AcDbDatabase* pDbDwg = new AcDbDatabase(false);
  11.         std::unique采用ptr<AcDbDatabase> apDbDwg(pDbDwg);
  12.         //Acad::ErrorStatus es = apDbDwg->readDwgFile(szDwgPath, 采用SH采用DENYNO);//zrx2010
  13.         Acad::ErrorStatus es = apDbDwg->readDwgFile(szDwgPath, AcDbDatabase::kForReadAndAllShare);//arx2017
  14.         if (Acad::eOk != es)
  15.                 return false;
  16.        
  17.         //从图纸数据库得到块定义id
  18.         AcDbObjectId idTempBlkDef = AcDbObjectId::kNull;
  19.         if (!GetBlkDefId(idTempBlkDef, szBlkName, apDbDwg.get()))
  20.                 return false;
  21.         //将图纸数据库中的块定义拷贝到pDb数据库中
  22.         if (!g采用ArxDatabase->DbCopyOfBlock(apDbDwg.get(), idTempBlkDef, pDb, szBlkName, idBlkDef))
  23.                 return false;
  24.         return true;
  25. }
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|膜结构网

GMT+8, 2024-12-28 14:15 , Processed in 0.120043 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表