- using System;  
- using System.IO;  
- using Autodesk.AutoCAD.Runtime;  
- using Autodesk.AutoCAD.ApplicationServices;  
- using Autodesk.AutoCAD.DatabaseServices;  
- using Autodesk.AutoCAD.EditorInput;  
-   
- namespace ClassLibrary2  
- {  
-         public class Class1  
-     {  
-         [CommandMethod("dpSaveLayoutsToSeparateFiles2")]  
-         public void dpSaveLayouts2()  
-         {  
-             Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;  
-             Document doc = Application.DocumentManager.MdiActiveDocument;  
-             HostApplicationServices hs = HostApplicationServices.Current;  
-             Database db = Application.DocumentManager.MdiActiveDocument.Database;  
-   
-             //системная переменная, проверяем сохранен ли файл или нет  
-             object DWGTITLED = Application.GetSystemVariable("DWGTITLED");  
-   
-             //если не сохранен выходим  
-             if (System.Convert.ToInt16(DWGTITLED) == 0)  
-             {  
-                 Application.ShowAlertDialog("Перед использованием процедуры сохранить");  
-                 return;  
-             }  
-   
-             //получаем полный путь к DWG файлу  
-             string dwgFullPath = hs.FindFile(doc.Name, doc.Database, FindFileHint.Default);  
-             //получаем имя DWG файла  
-             string dwgName = Path.GetFileName(dwgFullPath);  
-             //получаем имя DWG файла без расширения  
-             string dwgNameWoExt = Path.GetFileNameWithoutExtension(dwgFullPath);  
-             //получаем путь к DWG файлу  
-             string dwgPath = Path.GetDirectoryName(dwgFullPath);  
-             //путь для сохранения новых DWG файлов  
-             string dwgNewFullPath = "";  
-             //получаем путь к TEMP  
-             string tempPath = System.IO.Path.GetTempPath();  
-   
-             //блокируем документ  
-             using (DocumentLock doclock = doc.LockDocument())  
-             {  
-                 //пошла транзакция  
-                 using (Transaction tr = db.TransactionManager.StartTransaction())  
-                 {  
-                     {  
-                         //получаем коллекцию Layout  
-                         DBDictionary acLayouts = tr.GetObject(db.LayoutDictionaryId, OpenMode.ForRead) as DBDictionary;  
-                         //получаем количество вкладок  
-                         int layoutsCount = acLayouts.Count;  
-                         LayoutManager acLayoutMgr;  
-                         acLayoutMgr = LayoutManager.Current;  
-                         //перебираем все вкладки  
-                         foreach (DBDictionaryEntry item in acLayouts)  
-                         {  
-                             //имя лейаута  
-                             String layoutName = item.Key;  
-                             //получаем Лейаут  
-                             Layout acLayout = tr.GetObject(item.Value, OpenMode.ForRead) as Layout;  
-   
-                             //если не модель то идем дальше  
-                             if (acLayout.LayoutName.ToUpper() != "MODEL" && acLayout.LayoutName.ToUpper() != "МОДЕЛЬ")  
-                             {  
-                                 //acLayoutMgr.CurrentLayout = acLayout.LayoutName;  
-                                 //активируем вкладку  
-                                 acLayoutMgr.CurrentLayout = acLayout.LayoutName;  
-                                 //получаем систменую переменную отображеня вывода в консоль  
-                                 Object CMDECHO = Application.GetSystemVariable("CMDECHO");  
-                                 //запрещаем вывод в консоль  
-                                 Application.SetSystemVariable("CMDECHO", 0);  
-                                 //создаем путь к нашему новому файлу  
-                                 dwgNewFullPath = dwgPath + "" + dwgNameWoExt + "_[" + acLayout.LayoutName + "]_.dwg";  
-                                 //сохраняем файл и экранируем слеши  
-                                 db.SaveAs(dwgNewFullPath.Replace("", "\\"), DwgVersion.AC1021);  
-   
-                                 //////////////////**/////////////////////////////////////////////////*/*///////////////  
-                                 Database db2 = new Database(false, true);  
-                                 db2.ReadDwgFile(dwgNewFullPath, FileOpenMode.OpenForReadAndWriteNoShare, false, "");  
-                                 using (Transaction tr2 = db2.TransactionManager.StartTransaction())  
-                                 {  
-                                     db2.SaveAs(dwgNewFullPath.Replace("", "\\"), DwgVersion.Current);  
-                                     tr2.Commit();  
-                                 }  
-                                 //////////////////**/////////////////////////////////////////////////*/*///////////////  
-   
-                                 //восстанавливаем систменую переменную отображеня вывода в консоль  
-                                 Application.SetSystemVariable("CMDECHO", CMDECHO);  
-                                 //dpDelLayoutsFrom**DWG(dwgTempPath, dwgNewFullPath);  
-                                 ed.WriteMessage("Сохранено: " + dwgNewFullPath + "\n");  
-                             }  
-                         }  
-                     }  
-                     tr.Commit();  
-                 }  
-             }  
-         }  
-     }  
- }