static Acad::ErrorStatus SetCurLayout(ACHAR *fileName, ACHAR *layoutName)
{
Acad::ErrorStatus es = Acad::eOk;
AcApDocManager *pDocMan = acDocManagerPtr();
AcDbDatabase *db = new AcDbDatabase(false,false);
if ((es = db->readDwgFile(fileName)) != Acad::eOk) {
acutPrintf(_T("\nОшибка открытия файла! %s"),acadErrorStatusText(es));
delete db; return es;
}
if ((es = db->closeInput(true)) != Acad::eOk) {
acutPrintf(_T("\nОшибка closeInput! %s"), acadErrorStatusText(es));
delete db; return es;
}
AcApDocument *pDoc = pDocMan->document(db);
if (!pDoc) {
acutPrintf(_T("\nНе найден документ!"));
delete db; return es;
}
AcDbObjectId idLayout;
{
AcDbDictionaryPointer pDict(db->layoutDictionaryId(),AcDb::kForRead);
if (pDict.openStatus() == Acad::eOk) {
es = pDict->getAt(layoutName, idLayout);
if (es != Acad::eOk) {
acutPrintf(_T("\nНе найден лист \'%s\'!"), layoutName);
delete db; return es;
}
}
}
if (!idLayout.isNull()) {
AcApDocument *pOldDoc = pDocMan->curDocument();
if ((es = pDocMan->setCurDocument(pDoc)) != Acad::eOk) {
acutPrintf(_T("\nОшибка pDocMan->setCurDocument(pDoc)! %s"),acadErrorStatusText(es));
delete db; return es;
}
AcDbHostApplicationServices *pHost = acdbHostApplicationServices();
AcDbLayoutManager *pLayMan = pHost->layoutManager();
es = pLayMan->setCurrentLayoutId(idLayout);
es = pDocMan->setCurDocument(pOldDoc);
es = db->saveAs(layoutName);
delete db;
} else {
delete db;
}
return es;
}