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; } }
/// <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); }
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); }
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); } }); }