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