public void AKR_PlotPdf() { CommandStart.Start(doc => { Editor ed = doc.Editor; CheckAcadVer2016(); PlotOptions plotOpt = new PlotOptions(); using (var lockDoc = doc.LockDocument()) { bool repeat = false; do { var optPrompt = new PromptKeywordOptions($"\nПечать листов в PDF из текущего чертежа, выбранных файлов или из всех чертежей в папке."); optPrompt.Keywords.Add("Текущего"); optPrompt.Keywords.Add("Папки"); optPrompt.Keywords.Add("Настройки"); optPrompt.Keywords.Default = "Папки"; var resPrompt = ed.GetKeywords(optPrompt); if (resPrompt.Status == PromptStatus.OK) { if (resPrompt.StringResult == "Текущего") { repeat = false; Logger.Log.Info("Текущего"); if (!File.Exists(doc.Name)) { throw new System.Exception("Нужно сохранить текущий чертеж."); } string filePdfName = Path.Combine(Path.GetDirectoryName(doc.Name), Path.GetFileNameWithoutExtension(doc.Name) + ".pdf"); PlotDirToPdf plotter = new PlotDirToPdf(new string[] { doc.Name }, filePdfName); plotter.Options = plotOpt; plotter.Plot(); } else if (resPrompt.StringResult == "Папки") { repeat = false; Logger.Log.Info("Папки"); var dialog = new AcadLib.UI.FileFolderDialog(); dialog.Dialog.Multiselect = true; dialog.IsFolderDialog = true; dialog.Dialog.Title = "Выбор папки или файлов для печати чертежей в PDF."; dialog.Dialog.Filter = "Чертежи|*.dwg"; if (_album == null) { dialog.Dialog.InitialDirectory = Path.GetDirectoryName(doc.Name); } else { dialog.Dialog.InitialDirectory = _album.AlbumDir == null ? Path.GetDirectoryName(doc.Name) : _album.AlbumDir; } if (dialog.ShowDialog() == DialogResult.OK) { PlotDirToPdf plotter; string firstFileNameWoExt = Path.GetFileNameWithoutExtension(dialog.Dialog.FileNames.First()); if (dialog.Dialog.FileNames.Count() > 1) { plotter = new PlotDirToPdf(dialog.Dialog.FileNames, Path.GetFileName(dialog.SelectedPath)); } else if (firstFileNameWoExt.Equals("п", StringComparison.OrdinalIgnoreCase)) { plotter = new PlotDirToPdf(dialog.SelectedPath); } else { plotter = new PlotDirToPdf(dialog.Dialog.FileNames, firstFileNameWoExt); } plotter.Options = plotOpt; plotter.Plot(); } } else if (resPrompt.StringResult == "Настройки") { // Сортировка; Все файлы в один пдф или для каждого файла отдельная пдф plotOpt.Show(); repeat = true; } } else { ed.WriteMessage("\nОтменено пользователем."); return; } } while (repeat); } }); }