public void Plot() { if (Options == null) { Options = new PlotOptions(); PlotFiles(); } else { if (!Options.OnePdfOrEachDwg) { foreach (var file in filesDwg) { PlotFileToPdf(file); } } else { PlotFiles(); } } // открыть проводник с файлом System.Diagnostics.Process.Start("explorer", dir); }
private List <Layout> FilterLayouts([NotNull] List <Layout> layouts, [NotNull] PlotOptions options) { var resLayouts = new List <Layout>(); var filterNums = GetFilterNumbers(layouts.Count, options.FilterByNumbers); foreach (var layout in layouts) { // Номер вкладки var tabIndex = layout.TabOrder; var tabName = layout.LayoutName; bool?filtering = null; // Фильтр по именам if (!string.IsNullOrWhiteSpace(Options.FilterByNames)) { filtering = FilterByName(tabName); } // Фильтр по номеру вкладки if (!string.IsNullOrWhiteSpace(Options.FilterByNumbers) && (!filtering.HasValue || !filtering.Value)) { filtering = filterNums.Contains(tabIndex); } if (filtering.HasValue && !filtering.Value) { // Лист не прошел фильтр continue; } resLayouts.Add(layout); } return(resLayouts); }
public static void PromptAndPlot(Document doc) { Editor ed = doc.Editor; PlotOptions plotOpt = new PlotOptions(); 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 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 UI.FileFolderDialog(); dialog.Dialog.Multiselect = true; dialog.IsFolderDialog = true; dialog.Dialog.Title = "Выбор папки или файлов для печати чертежей в PDF."; dialog.Dialog.Filter = "Чертежи|*.dwg"; dialog.Dialog.InitialDirectory = Path.GetDirectoryName(doc.Name); 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); }
private List<Layout> FilterLayouts(List<Layout> layouts, PlotOptions options) { List<Layout> resLayouts = new List<Layout>(); var filterNums = GetFilterNumbers(layouts.Count, options.FilterByNumbers); foreach (var layout in layouts) { // Номер вкладки int tabIndex = layout.TabOrder; string tabName = layout.LayoutName; bool? filtering = null; // Фильтр по именам if (!string.IsNullOrWhiteSpace(Options.FilterByNames)) { filtering = FilterByName(tabName); } // Фильтр по номеру вкладки if (!string.IsNullOrWhiteSpace(Options.FilterByNumbers) && (!filtering.HasValue || !filtering.Value)) { filtering = filterNums.Contains(tabIndex); } if (filtering.HasValue && !filtering.Value) { // Лист не прошел фильтр continue; } resLayouts.Add(layout); } return resLayouts; }