CString full_file_path_name =  curDoc()->database()->fileName();
        
        CString dsd = full_file_path_name;
        dsd.Replace(_T("dwg"),_T("dsd"));
 
        WORD wBOM = 0xFEFF;
        DWORD NumberOfBytesWritten;
 
        HANDLE hFile = ::CreateFile(dsd, GENERIC_WRITE, 0, NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL); //for UTF16 little endian
       ::WriteFile(hFile, &wBOM, sizeof(WORD), &NumberOfBytesWritten, NULL);
       ::CloseHandle(hFile);
 
        AcDbObjectId objDictId = acdbHostApplicationServices()->workingDatabase()->layoutDictionaryId();
        AcDbDictionary *pDict;
        acdbOpenObject(pDict, objDictId, AcDb::kForRead);
        AcDbDictionaryIterator *pI = pDict->newIterator();
        pDict->close();
 
        while(!pI->done())
        {
                WritePrivateProfileString(_T("DWF6Sheet:")+file_name+_T("-")+pI->name(),_T("DWG"),full_file_path_name,dsd);
                WritePrivateProfileString(_T("DWF6Sheet:")+file_name+_T("-")+pI->name(),_T("Layout"),pI->name(),dsd);
                pI->next();
        }
        delete pI;
                
        full_file_path_name.Replace(_T("dsd"),_T("dwf"));
        WritePrivateProfileString(_T("Target"),_T("type"),_T("1"),dsd);
        WritePrivateProfileString(_T("Target"),_T("DWF"),full_file_path_name,dsd);
        WritePrivateProfileString(_T("Target"),_T("OUT"),full_file_path_name.Mid(0,ph.ReverseFind(_T('\\'))),dsd);
 
        struct resbuf vl_new;
        vl_new.restype = RTSHORT;
        int chk = 0;
        vl_new.resval.rint = 0;
        chk = acedSetVar(_T("backgroundplot"),&vl_new);
        AcPlDSDData dsdDataObj;                         
        dsdDataObj.readDSD(dsd);
        dsdDataObj.setPromptForDwfName(FALSE);
        DeleteFile(dsdDataObj.destinationName());
       AcPlPlotConfig* pConfig = NULL;         
       bool bShowPlotProgress = true; 
 
       acedArxLoad(_T("AcPublish.arx")); //У меня вынесен в On_kInitAppMsg
       acplPublishExecute( dsdDataObj, pConfig, bShowPlotProgress );