C++进行二次开发来批量修改图纸中的日期和作者信息

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include "aced.h"
#include "dbents.h"
#include "dbdictionary.h"
#include "dbdict.h"
#include "dbxutil.h"
#include "adscodes.h"
 
void updateDrawingInfo(const char* newDate, const char* newAuthor) {
    AcDbDatabase* pDb = acdbHost()->workingDatabase();
    AcDbDictionary* pDict = NULL;
    if (AcDbDictionary::cast(pDb->getNamedObjectsDictionary(), pDict) == Acad::eOk) {
        AcDbDictionaryEntryIterator* iter = NULL;
        if (pDict->getEntryIterator(iter) == Acad::eOk) {
            for (; !iter->done(); iter->next()) {
                AcRxClass* pClass = iter->objectClass();
                if (pClass == AcDbBlockTableRecord::desc()) {
                    AcDbBlockTableRecord* pRecord = AcDbBlockTableRecord::cast(iter->object());
                    if (pRecord && pRecord->isLayout()) { // 只修改布局的属性
                        pRecord->setXData(kDwgStampAppName, kDwgStampDate, newDate);
                        pRecord->setXData(kDwgStampAppName, kDwgStampAuthor, newAuthor);
                    }
                }
            }
            delete iter;
        }
    }
}