ARX清理layout

Posted zeqi1991

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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);
    

以上是关于ARX清理layout的主要内容,如果未能解决你的问题,请参考以下文章

2Arx二次开发创建第一个应用程序

cass9.1打开程序错误——加载arx失败

后缀“arx”的文件怎样打开或者编辑?

ARX对象的一些文字说明

arx代码片段

arx开发版本对照表