Ejemplo n.º 1
0
        public static void PromptAndPlot([NotNull] Document doc)
        {
            var ed          = doc.Editor;
            var plotOptData = FileDataExt.GetLocalFileData <PlotOptions>("PlotToPdf", "PlotOptions", false);

            plotOptData.TryLoad(() => new PlotOptions());
            var plotOpt = plotOptData.Data;
            var repeat  = false;

            do
            {
                var optPrompt = new PromptKeywordOptions($"\nПечать листов в PDF из:");
                optPrompt.Keywords.Add("Текущего");
                optPrompt.Keywords.Add("Папки");
                optPrompt.Keywords.Add("Настройки");
                optPrompt.Keywords.Default = plotOpt.DefaultPlotCurOrFolder ? "Текущего" : "Папки";

                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("Нужно сохранить текущий чертеж.");
                        }

                        var filePdfName =
                            Path.Combine(Path.GetDirectoryName(doc.Name) ?? throw new InvalidOperationException(),
                                         Path.GetFileNameWithoutExtension(doc.Name) + ".pdf");
                        var plotter = new PlotDirToPdf(new[] { doc.Name }, filePdfName)
                        {
                            Options = plotOpt
                        };
                        plotter.Plot();
                    }
                    else if (resPrompt.StringResult == "Папки")
                    {
                        repeat = false;
                        Logger.Log.Info("Папки");
                        var dialog = new AcadLib.UI.FileFolderDialog
                        {
                            Dialog         = { Multiselect = true },
                            IsFolderDialog = true
                        };
                        dialog.Dialog.Title            = @"Выбор папки или файлов для печати чертежей в PDF.";
                        dialog.Dialog.Filter           = @"Чертежи|*.dwg";
                        dialog.Dialog.InitialDirectory = Path.GetDirectoryName(doc.Name);

                        if (dialog.ShowDialog() == DialogResult.OK)
                        {
                            PlotDirToPdf plotter;
                            var          firstFileNameWoExt = Path.GetFileNameWithoutExtension(dialog.Dialog.FileNames.First());
                            if (dialog.Dialog.FileNames.Length > 1)
                            {
                                plotter = new PlotDirToPdf(dialog.Dialog.FileNames,
                                                           Path.GetFileName(dialog.SelectedPath));
                            }
                            else if (firstFileNameWoExt != null &&
                                     firstFileNameWoExt.Equals("п", StringComparison.OrdinalIgnoreCase))
                            {
                                plotter = new PlotDirToPdf(dialog.SelectedPath, plotOpt.IncludeSubdirs);
                            }
                            else
                            {
                                plotter = new PlotDirToPdf(dialog.Dialog.FileNames, firstFileNameWoExt);
                            }

                            plotter.Options = plotOpt;
                            plotter.Plot();
                        }
                    }
                    else if (resPrompt.StringResult == "Настройки")
                    {
                        // Сортировка; Все файлы в один пдф или для каждого файла отдельная пдф
                        var plotOptVm   = new PlotOptionsVM(plotOpt);
                        var plotOptView = new PlotOptionsView(plotOptVm);
                        if (Autodesk.AutoCAD.ApplicationServices.Application.ShowModalWindow(plotOptView) == true)
                        {
                            plotOptData.TrySave();
                        }
                        repeat = true;
                    }
                }
                else
                {
                    ed.WriteMessage("\nОтменено пользователем.");
                    return;
                }
            }while (repeat);
        }
Ejemplo n.º 2
0
 public PlotOptionsView(PlotOptionsVM vm)
     : base(vm)
 {
     InitializeComponent();
 }