ARX清理layout

void ClearLayout()
{
    CString msLayoutName;
    CStringArray layoutNames;
    AcDbObjectId msID = acdbSymUtil()->blockModelSpaceId(m_pDatabase);
    AcDbObjectId dictId = m_pDatabase->layoutDictionaryId();
    AcDbDictionary* pDict = NULL;
    if (Acad::eOk == acdbOpenObject(pDict, dictId, AcDb::kForWrite))
    {
        AcDbDictionaryIterator *iter = pDict->newIterator();
        for (; !iter->done(); iter->next())
        {
            AcDbObject* pDictObj = NULL;
            iter->getObject(pDictObj, AcDb::kForWrite);
            if (pDictObj->isKindOf(AcDbLayout::desc()))
            {
                AcDbLayout* pLayout = AcDbLayout::cast(pDictObj);
                AcDbObjectId blockTableRecordID = pLayout->getBlockTableRecordId();
                TCHAR *name = NULL;
                pLayout->getLayoutName(name);
                if (blockTableRecordID != msID)//属于模型空间的id
                {
                    layoutNames.Add(name);
                }
                else
                {
                    msLayoutName = name;
                }
            }
            pDictObj->close();
        }
        delete iter;
        iter = NULL;
        pDict->close();
    }
    //CAD不允许清理所有的布局[除开模型布局以外必须存在一个其他布局],创建一个临时的layout
    if (1)
    {
        AcDbObjectId layoutID, blockRecordID;
        acdbHostApplicationServices()->layoutManager()->createLayout(_T("布局"), layoutID, blockRecordID, m_pDatabase);
    }
    acdbHostApplicationServices()->layoutManager()->setCurrentLayout(msLayoutName, m_pDatabase);
    for (int i = 0; i < layoutNames.GetSize(); i++)
    {
        Acad::ErrorStatus es = acdbHostApplicationServices()->layoutManager()->deleteLayout(layoutNames[i], m_pDatabase);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值