public static string ImagePreviewFile(DwgBaseItem selectedItem, string baseFolder) { try { var imgFile = DwgBaseHelpers.FindImageFile(selectedItem, baseFolder); // Если файл есть if (!string.IsNullOrEmpty(imgFile)) { if (File.Exists(imgFile)) { return(imgFile); } return(CreateImageFile(selectedItem, baseFolder)); } return(CreateImageFile(selectedItem, baseFolder)); } catch (System.Exception exception) { ExceptionBox.Show(exception); } return(string.Empty); }
// Выбрать dwg-файл для добавления private void BtSelectDwgFile_OnClick(object sender, RoutedEventArgs e) { try { var ofd = new Autodesk.AutoCAD.Windows.OpenFileDialog(ModPlusAPI.Language.GetItem(LangItem, "msg59"), _dwgBaseFolder, "dwg", "name", Autodesk.AutoCAD.Windows.OpenFileDialog.OpenFileDialogFlags.NoFtpSites | Autodesk.AutoCAD.Windows.OpenFileDialog.OpenFileDialogFlags.NoShellExtensions | Autodesk.AutoCAD.Windows.OpenFileDialog.OpenFileDialogFlags.NoUrls | Autodesk.AutoCAD.Windows.OpenFileDialog.OpenFileDialogFlags.DefaultIsFolder | Autodesk.AutoCAD.Windows.OpenFileDialog.OpenFileDialogFlags.ForceDefaultFolder | Autodesk.AutoCAD.Windows.OpenFileDialog.OpenFileDialogFlags.DoNotTransferRemoteFiles); var needLoop = true; while (needLoop) { var ofdresult = ofd.ShowDialog(); if (ofdresult == System.Windows.Forms.DialogResult.OK) { var selectedFile = ofd.Filename; if (selectedFile.Contains(_dwgBaseFolder)) { if (!DwgBaseHelpers.HasProxyEntities(selectedFile)) { TbSourceFile.Text = DwgBaseHelpers.TrimStart(selectedFile, _dwgBaseFolder).TrimStart('\\'); BtAccept.IsEnabled = true; needLoop = false; } else { ModPlusAPI.Windows.MessageBox.Show(ModPlusAPI.Language.GetItem(LangItem, "msg60")); } } else { ModPlusAPI.Windows.MessageBox.Show( $"{ModPlusAPI.Language.GetItem(LangItem, "msg49")} {_dwgBaseFolder}"); } } else if (ofdresult == System.Windows.Forms.DialogResult.Cancel) { return; } else { needLoop = false; } } } catch (Exception exception) { ExceptionBox.Show(exception); } finally { Focus(); } }
/// <summary> /// Проверка введенных данных по базе /// </summary> /// <returns>True - есть такие данные, false - нет таких данных</returns> private bool CheckInteredItemData() { var hasSame = false; #region Проверяем по базе плагина if (DwgBaseHelpers.DeserializeFromXml(_mpDwgBaseFile, out var mpDwgBaseItems)) { foreach (var mpDwgBaseItem in mpDwgBaseItems) { if (mpDwgBaseItem.IsBlock) { if (mpDwgBaseItem.Name.Equals(Item.Name)) { ModPlusAPI.Windows.MessageBox.Show( $"{ModPlusAPI.Language.GetItem("msg35")}: {Item.Name}"); hasSame = true; } } } } else { ModPlusAPI.Windows.MessageBox.Show(ModPlusAPI.Language.GetItem("msg36")); return(false); } #endregion #region Проверяем по базе пользователя if (DwgBaseHelpers.DeserializeFromXml(_userDwgBaseFile, out var userDwgBaseItems)) { foreach (var userDwgBaseItem in userDwgBaseItems) { if (userDwgBaseItem.IsBlock) { if (userDwgBaseItem.Name.Equals(Item.Name)) { ModPlusAPI.Windows.MessageBox.Show( $"{ModPlusAPI.Language.GetItem("msg37")}: {Item.Name}"); hasSame = true; } } } } else { ModPlusAPI.Windows.MessageBox.Show(ModPlusAPI.Language.GetItem("msg38")); return(false); } #endregion return(hasSame); }
private void CreateArchive() { // Create a new instance of our ProgressBar Delegate that points // to the ProgressBar's SetValue method. var updatePbDelegate = new UpdateProgressBarDelegate(ProgressBar.SetValue); var updatePtDelegate = new UpdateProgressTextDelegate(ProgressText.SetValue); // progress text Dispatcher?.Invoke(updatePtDelegate, DispatcherPriority.Background, TextBlock.TextProperty, ModPlusAPI.Language.GetItem(LangItem, "msg16")); // create temp folder var tmpFolder = Path.Combine(_dwgBaseFolder, "Temp"); if (!Directory.Exists(tmpFolder)) { Directory.CreateDirectory(tmpFolder); } // create base file with selected files items ProgressBar.Minimum = 0; ProgressBar.Maximum = _dwgBaseItems.Count; ProgressBar.Value = 0; // Соберем список файлов-источников чтобы проще их сверять var sourceFiles = new List <string>(); foreach (var fileToBind in _filesToBind) { if (!sourceFiles.Contains(fileToBind.SourceFile)) { sourceFiles.Add(fileToBind.SourceFile); } } var baseFileToArchive = new List <DwgBaseItem>(); for (var i = 0; i < _dwgBaseItems.Count; i++) { Dispatcher.Invoke(updatePtDelegate, DispatcherPriority.Background, TextBlock.TextProperty, ModPlusAPI.Language.GetItem(LangItem, "msg17") + ": " + i + "/" + _dwgBaseItems.Count); Dispatcher.Invoke(updatePbDelegate, DispatcherPriority.Background, System.Windows.Controls.Primitives.RangeBase.ValueProperty, (double)i); var dwgBaseItem = _dwgBaseItems[i]; if (sourceFiles.Contains(dwgBaseItem.SourceFile)) { if (!baseFileToArchive.Contains(dwgBaseItem)) { baseFileToArchive.Add(dwgBaseItem); } } } // save xml file var xmlToArchive = Path.Combine(tmpFolder, "UserDwgBase.xml"); DwgBaseHelpers.SerializerToXml(baseFileToArchive, xmlToArchive); if (!File.Exists(xmlToArchive)) { MessageBox.Show(ModPlusAPI.Language.GetItem(LangItem, "msg18"), MessageBoxIcon.Close); return; } // comment file var commentFile = CreateCommentFile(tmpFolder); // create zip _currentFileToUpload = Path.ChangeExtension(Path.Combine(tmpFolder, Path.GetRandomFileName()), ".zip"); if (File.Exists(_currentFileToUpload)) { File.Delete(_currentFileToUpload); } using (var zip = ZipFile.Open(_currentFileToUpload, ZipArchiveMode.Create)) { // create directories foreach (var fileToBind in _filesToBind.Where(x => x.Selected)) { zip.CreateEntryFromFile( fileToBind.FullFileName, Path.Combine(fileToBind.SubDirectory, fileToBind.FileName)); } // add xml file and delete him zip.CreateEntryFromFile(xmlToArchive, new FileInfo(xmlToArchive).Name); // add comment file if (!string.IsNullOrEmpty(commentFile) && File.Exists(commentFile)) { zip.CreateEntryFromFile(commentFile, new FileInfo(commentFile).Name); } } File.Delete(xmlToArchive); // show buttons BtMakeArchive.Visibility = Visibility.Collapsed; BtSeeArchive.Visibility = Visibility.Visible; BtDeleteArchive.Visibility = Visibility.Visible; BtUploadArchive.Visibility = Visibility.Visible; Dispatcher?.Invoke(updatePtDelegate, DispatcherPriority.Background, TextBlock.TextProperty, ModPlusAPI.Language.GetItem(LangItem, "msg19")); }
private void MultiChangePath_Accept_OnClick(object sender, RoutedEventArgs e) { if (MultiChangePath_Path.Text.Equals("Блоки/") | MultiChangePath_Path.Text.Equals("Чертежи/")) { ModPlusAPI.Windows.MessageBox.Show(ModPlusAPI.Language.GetItem(LangItem, "u25")); MultiChangePath_Path.Focus(); return; } var selectedItems = new List <DwgBaseItem>(); foreach (DwgBaseItemWithSelector item in MultiChangePath_LvItems.Items) { if (item.Selected) { selectedItems.Add(item.Item); } } if (!selectedItems.Any()) { ModPlusAPI.Windows.MessageBox.Show(ModPlusAPI.Language.GetItem(LangItem, "u26")); return; } if (!ModPlusAPI.Windows.MessageBox.ShowYesNo( ModPlusAPI.Language.GetItem(LangItem, "u27"), MessageBoxIcon.Question)) { return; } var updatePbDelegate = new UpdateProgressBarDelegate(ProgressBar.SetValue); var updatePtDelegate = new UpdateProgressTextDelegate(ProgressText.SetValue); ProgressBar.Minimum = 0; ProgressBar.Maximum = _dwgBaseItems.Count; ProgressBar.Value = 0; var index = 1; foreach (var dwgBaseItem in _dwgBaseItems) { foreach (var selectedItem in selectedItems) { if (dwgBaseItem.Equals(selectedItem)) { dwgBaseItem.Path = MultiChangePath_Path.Text; } } Dispatcher?.Invoke(updatePtDelegate, DispatcherPriority.Background, TextBlock.TextProperty, $"{ModPlusAPI.Language.GetItem(LangItem, "u24")}: {index}/{_dwgBaseItems.Count}"); Dispatcher?.Invoke(updatePbDelegate, DispatcherPriority.Background, System.Windows.Controls.Primitives.RangeBase.ValueProperty, (double)index); index++; } // was changed UserBaseChanged = true; // save DwgBaseHelpers.SerializerToXml(_dwgBaseItems, _userDwgBaseFile); DwgBaseHelpers.DeserializeFromXml(_userDwgBaseFile, out _dwgBaseItems); Dispatcher?.Invoke(updatePtDelegate, DispatcherPriority.Background, TextBlock.TextProperty, ModPlusAPI.Language.GetItem(LangItem, "u28")); ModPlusAPI.Windows.MessageBox.Show(ModPlusAPI.Language.GetItem(LangItem, "u28")); ClearProgress(); // refill MultiChangePath_FillData(); }
// Создать dwg-файл для добавления в него нового блока private void BtCreateDwgFile_OnClick(object sender, RoutedEventArgs e) { try { var sfd = new Autodesk.AutoCAD.Windows.SaveFileDialog(ModPlusAPI.Language.GetItem("msg50"), _dwgBaseFolder, "dwg", "name", Autodesk.AutoCAD.Windows.SaveFileDialog.SaveFileDialogFlags.DefaultIsFolder | Autodesk.AutoCAD.Windows.SaveFileDialog.SaveFileDialogFlags.DoNotTransferRemoteFiles | Autodesk.AutoCAD.Windows.SaveFileDialog.SaveFileDialogFlags.ForceDefaultFolder | Autodesk.AutoCAD.Windows.SaveFileDialog.SaveFileDialogFlags.NoFtpSites | Autodesk.AutoCAD.Windows.SaveFileDialog.SaveFileDialogFlags.NoShellExtensions | Autodesk.AutoCAD.Windows.SaveFileDialog.SaveFileDialogFlags.NoUrls); var needLoop = true; while (needLoop) { var sfdresult = sfd.ShowDialog(); if (sfdresult == System.Windows.Forms.DialogResult.OK) { var selectedFile = sfd.Filename; if (selectedFile.Contains(_dwgBaseFolder)) { var fi = new FileInfo(selectedFile); if (fi.DirectoryName != null && !fi.DirectoryName.Equals(_dwgBaseFolder)) { try { using (var db = new Database()) { db.SaveAs(selectedFile, DwgVersion.AC1027); TbSourceFile.Text = DwgBaseHelpers.TrimStart(selectedFile, _dwgBaseFolder).TrimStart('\\'); needLoop = false; } } catch (Exception exception) { ExceptionBox.Show(exception); needLoop = false; } } else { ModPlusAPI.Windows.MessageBox.Show( $"{ModPlusAPI.Language.GetItem("msg51")} {_dwgBaseFolder}{Environment.NewLine}{ModPlusAPI.Language.GetItem("msg52")}"); } } else { ModPlusAPI.Windows.MessageBox.Show( $"{ModPlusAPI.Language.GetItem("msg49")} {_dwgBaseFolder}"); } } else if (sfdresult == System.Windows.Forms.DialogResult.Cancel) { return; } else { needLoop = false; } } } catch (Exception exception) { ExceptionBox.Show(exception); } finally { Focus(); } }
private void BtCopyDwgFile_OnClick(object sender, RoutedEventArgs e) { try { var selectedFile = string.Empty; var selectedPath = string.Empty; var copiedFile = string.Empty; // Сначала нужно выбрать файл, проверив версию его var ofd = new Autodesk.AutoCAD.Windows.OpenFileDialog(ModPlusAPI.Language.GetItem(LangItem, "msg59"), _dwgBaseFolder, "dwg", "name", Autodesk.AutoCAD.Windows.OpenFileDialog.OpenFileDialogFlags.NoFtpSites | Autodesk.AutoCAD.Windows.OpenFileDialog.OpenFileDialogFlags.NoShellExtensions | Autodesk.AutoCAD.Windows.OpenFileDialog.OpenFileDialogFlags.NoUrls | Autodesk.AutoCAD.Windows.OpenFileDialog.OpenFileDialogFlags.DefaultIsFolder | Autodesk.AutoCAD.Windows.OpenFileDialog.OpenFileDialogFlags.ForceDefaultFolder | Autodesk.AutoCAD.Windows.OpenFileDialog.OpenFileDialogFlags.DoNotTransferRemoteFiles); var needLoop = true; while (needLoop) { var ofdresult = ofd.ShowDialog(); if (ofdresult == System.Windows.Forms.DialogResult.OK) { selectedFile = ofd.Filename; if (!DwgBaseHelpers.HasProxyEntities(selectedFile)) { needLoop = false; } else { ModPlusAPI.Windows.MessageBox.Show(ModPlusAPI.Language.GetItem(LangItem, "msg60")); } } else if (ofdresult == System.Windows.Forms.DialogResult.Cancel) { return; } else { needLoop = false; } } // Теперь нужно указать папку для расположения файла var fbd = new System.Windows.Forms.FolderBrowserDialog { Description = ModPlusAPI.Language.GetItem(LangItem, "msg61"), SelectedPath = _dwgBaseFolder, ShowNewFolderButton = true }; needLoop = true; while (needLoop) { var fbdResult = fbd.ShowDialog(); if (fbdResult == System.Windows.Forms.DialogResult.OK) { selectedPath = fbd.SelectedPath; if (selectedPath.Contains(_dwgBaseFolder)) { if (!selectedPath.Equals(_dwgBaseFolder)) { var fi = new FileInfo(selectedFile); copiedFile = Path.Combine(selectedPath, fi.Name); if (File.Exists(copiedFile)) { needLoop = !ModPlusAPI.Windows.MessageBox.ShowYesNo( $"{ModPlusAPI.Language.GetItem(LangItem, "msg62")} {fi.Name}{Environment.NewLine}{ModPlusAPI.Language.GetItem(LangItem, "msg63")}", MessageBoxIcon.Question); } else { needLoop = false; } } else { ModPlusAPI.Windows.MessageBox.Show( $"{ModPlusAPI.Language.GetItem(LangItem, "msg64")} {_dwgBaseFolder}{Environment.NewLine}{ModPlusAPI.Language.GetItem(LangItem, "msg52")}"); } } else { ModPlusAPI.Windows.MessageBox.Show( $"{ModPlusAPI.Language.GetItem(LangItem, "msg65")} {_dwgBaseFolder}"); } } else if (fbdResult == System.Windows.Forms.DialogResult.Cancel) { return; } else { needLoop = true; } } // then copy file if (!string.IsNullOrEmpty(selectedFile) & !string.IsNullOrEmpty(selectedPath)) { if (File.Exists(selectedFile)) { File.Copy(selectedFile, copiedFile, true); if (File.Exists(copiedFile)) { TbSourceFile.Text = DwgBaseHelpers.TrimStart(copiedFile, _dwgBaseFolder).TrimStart('\\'); BtAccept.IsEnabled = true; } } } } catch (Exception exception) { ExceptionBox.Show(exception); } finally { Focus(); } }