Пример #1
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();
     }
 }
 // Создать 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();
     }
 }
Пример #3
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();
            }
        }