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);
        }
Пример #2
0
 // Выбрать 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);
        }
Пример #4
0
        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"));
        }
Пример #5
0
        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();
     }
 }
Пример #7
0
        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();
            }
        }