コード例 #1
0
ファイル: PlotDirToPdf.cs プロジェクト: vildar82/AcadLib
        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);
        }