zoukankan      html  css  js  c++  java
  • 删除外部dwg中指定的块定义

    本例实现删除外部图纸中指定的块定义,在外部图纸当前模型空间中是没有该块定义的块参照存在。

    代码如下:

    void CBlockUtil::DeleteBlockDefFormOtherDwg(const TCHAR* fileName, const TCHAR* blkDefName)
    {
        // 使用_SH_DENYNO参数打开图形(只读打开),允许其它用户读写该文件
        AcDbDatabase* pSourceDwg = new AcDbDatabase(Adesk::kFalse);
        Acad::ErrorStatus es = pSourceDwg->readDwgFile(fileName);
        if (es != Acad::eOk)
        {
            delete pSourceDwg;
            pSourceDwg = NULL;
            acutPrintf(TEXT("
    读入dwg图形错误, 图形名称: %s"), fileName);
            return;
        }
        // 打开外部图形数据库的块表,寻找给定名称的块表记录
        AcDbBlockTable* pBlkTable = NULL;
        es = pSourceDwg->getBlockTable(pBlkTable, AcDb::kForWrite);
        AcDbBlockTableRecord *pBlkTabRcd;
        CString strBlkDef(blkDefName);
        if (pBlkTable->has(strBlkDef))
        {
            pBlkTable->getAt(blkDefName, pBlkTabRcd, ZcDb::kForWrite);
            es = pBlkTabRcd->erase();    
        }
        else
        {
            acutPrintf(_T("
    在当前文件中不存在该块表!"));
            pBlkTable->close();
            delete pSourceDwg;
            pSourceDwg = NULL;
            return;
        }    
        pBlkTable->close();
        pBlkTabRcd->close();
            //保存更改后的数据库,这里一定不能少这句
        es=pSourceDwg->saveAs(fileName);
        delete pSourceDwg;
        pSourceDwg = NULL;
    }

    在上述中我们使用的是saveAs()来保存更改后的数据库,有时还可以使用save()来保存更改,在本例中使用save()会出现错误,具体原因还不清楚,以后多试试就可以了,就是这两种中的一种。

    如果要删除当前图形中的块定义就简单多了,我们并不需要保存数据库的更改,代码如下:

        AcDbBlockTable *pBlkTab;
        acdbHostApplicationServices()->workingDatabase()
            ->getBlockTable(pBlkTab, ZcDb::kForWrite);
        CString strBlk = _T("as");
        AcDbBlockTableRecord *pBlkTabRcd;
        if (pBlkTab->has(strBlk))
        {
            pBlkTab->getAt(strBlk, pBlkTabRcd, ZcDb::kForWrite);
            pBlkTabRcd->erase();
        }
        else
        {
            return;
        }
        pBlkTab->close();
        pBlkTabRcd->close();
  • 相关阅读:
    Beyond Compare比较图片怎么修改背景颜色
    Leonardo's Notebook UVALive
    Saddle Point ZOJ
    概率dp总结 正在更新
    First Knight UVALive
    Scout YYF I POJ
    RedIsGood TopCoder
    聪聪和可可 HYSBZ
    So you want to be a 2n-aire? UVA
    国家队论文集
  • 原文地址:https://www.cnblogs.com/pengjun-shanghai/p/4895441.html
Copyright © 2011-2022 走看看