ADN Open CIS
Сообщество программистов Autodesk в СНГ

30/08/2020

Как скрыть командную строку без запроса к пользователю?

Как скрыть командную строку без запроса к пользователю?

Вопрос:  Я использую для скрытия командной строки метод Autodesk.AutoCAD.Internal.Utils.CloseCommandLine(); При этом возникает запрос:



Можно ли как-то избавится от этого запроса, как будто в этом окне мы ответили Да?

Ответ: Это возможно при использовании HideableDialogSettings:

Вот как будет выглядеть этот код:

Код - C#: [Выделить]
  1. using Autodesk.AutoCAD.Runtime;
  2. using Autodesk.Internal.Windows;
  3.  
  4. // This line is not mandatory, but improves loading performances
  5. [assembly: CommandClass(typeof(CloseCommanLine.MyCommands))]
  6.  
  7. namespace CloseCommanLine
  8. {
  9.   public class MyCommands
  10.   {
  11.    
  12.     [CommandMethod("CC")]
  13.     public void CC()
  14.     {
  15.       EnableCloseCommandLineWindow();
  16.       Autodesk.AutoCAD.Internal.Utils.CloseCommandLine();
  17.       DisableCloseCommandLineWindow();
  18.     }
  19.     static void EnableCloseCommandLineWindow()
  20.     {
  21.       Autodesk.AutoCAD.Internal.Windows.ProfileManager.LoadHideableDialogSettingsDictionary();
  22.       HideableDialogSettingsDictionary dict =
  23.         Autodesk.Windows.TaskDialog.HideableDialogSettingsDictionary;
  24.       if (!dict.ContainsKey("MainFrame.CommandLineHideWindow"))
  25.       {
  26.         HideableDialogSettings sets = new HideableDialogSettings();
  27.         sets.Application = "";
  28.         sets.Id = "MainFrame.CommandLineHideWindow";
  29.         //sets.Title = "Command Line – Close Window";
  30.         //sets.Category = "Command Line";
  31.         sets.Result = 6;
  32.         dict.Add(sets);
  33.       }
  34.       try
  35.       {
  36.         dict.SetResult("MainFrame.CommandLineHideWindow", 6);
  37.         Autodesk.AutoCAD.Internal.Windows.ProfileManager.SaveHideableDialogSettingsDictionary();
  38.       }
  39.       catch { }
  40.     }
  41.     static void DisableCloseCommandLineWindow()
  42.     {
  43.       try
  44.       {
  45.         Autodesk.AutoCAD.Internal.Windows.ProfileManager.LoadHideableDialogSettingsDictionary();
  46.         HideableDialogSettingsDictionary dict =
  47.           Autodesk.Windows.TaskDialog.HideableDialogSettingsDictionary;
  48.         if (dict.ContainsKey("MainFrame.CommandLineHideWindow"))
  49.         {
  50.           dict.Remove("MainFrame.CommandLineHideWindow");
  51.         }
  52.         Autodesk.AutoCAD.Internal.Windows.ProfileManager.SaveHideableDialogSettingsDictionary();
  53.       }
  54.       catch { }
  55.     }
  56.   }
  57. }

Автор: Александр Ривилис
Опубликовано 30.08.2020