예제 #1
0
파일: Form1.cs 프로젝트: vildar82/AcadLib
 private void button1_Click(object sender, EventArgs e)
 {
     AcadLib.UI.FileFolderDialog ffd = new AcadLib.UI.FileFolderDialog();
      ffd.IsFolderDialog = true;
      ffd.Dialog.Multiselect = true;
      ffd.Dialog.Filter = "Чертежи|*.dwg";
      var res = ffd.ShowDialog();
      if (res == DialogResult.OK)
      {
     var selPath = ffd.SelectedPath;
     var selFiles = ffd.Dialog.FileNames;
      }
 }
예제 #2
0
        private void button1_Click(object sender, EventArgs e)
        {
            AcadLib.UI.FileFolderDialog ffd = new AcadLib.UI.FileFolderDialog();
            ffd.IsFolderDialog     = true;
            ffd.Dialog.Multiselect = true;
            ffd.Dialog.Filter      = "Чертежи|*.dwg";
            var res = ffd.ShowDialog();

            if (res == DialogResult.OK)
            {
                var selPath  = ffd.SelectedPath;
                var selFiles = ffd.Dialog.FileNames;
            }
        }
예제 #3
0
        /// <summary>
        /// Выбор папки с файлами dwg для экспорта листов
        /// </summary>
        /// <returns>Список файлов</returns>
        private List <FileInfo> GetFiles()
        {
            // Выбор папки
            var dlg = new AcadLib.UI.FileFolderDialog();

            dlg.IsFolderDialog     = true;
            dlg.Dialog.Multiselect = true;
            dlg.IsFolderDialog     = true;
            //dialog.Dialog.Title = "Выбор папки или файлов для печати чертежей в PDF.";
            dlg.Dialog.Filter = "Чертежи|*.dwg";
            if (dlg.ShowDialog() != DialogResult.OK)
            {
                throw new AcadLib.CancelByUserException();
            }

            List <FileInfo> files;
            string          firstFileNameWoExt = Path.GetFileNameWithoutExtension(dlg.Dialog.FileNames.First());

            if (!firstFileNameWoExt.Equals("п", StringComparison.OrdinalIgnoreCase))
            {
                var filesS = dlg.Dialog.FileNames;
                files = new List <FileInfo>();
                foreach (var item in filesS)
                {
                    FileInfo fi = new FileInfo(item);
                    if (fi.Extension.Equals("dwg", StringComparison.OrdinalIgnoreCase))
                    {
                        files.Add(fi);
                    }
                }
            }
            else
            {
                DirectoryInfo dir = new DirectoryInfo(dlg.SelectedPath);
                files = dir.GetFiles("*.dwg").ToList();
            }
            return(files);
        }
예제 #4
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);
        }
예제 #5
0
        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);
                }
            });
        }
예제 #6
0
        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);
                }
            });
        }