Можно ли вернуть параметр командой IExternal

Автор Тема: Можно ли вернуть параметр командой IExternal  (Прочитано 5598 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн RevitTormentorАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 162
  • Карма: 6
Можно ли вернуть параметр командой class... : IExternal?

Отмечено как Решение RevitTormentor 05-03-2018, 11:43:07

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Вы решили сегодня плодить непонятные вопросы? ))
Куда вернуть? Кому вернуть?

Оффлайн RevitTormentorАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 162
  • Карма: 6
А кому может вернуться параметр - по-моему только вызвавшему методу. Или есть варианты? Хотя может и быть наверное.

Уточню.

Код - C# [Выбрать]
  1. class Getmetod : IExternalCommand
  2.     {  
  3.         public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
  4.         {
  5.             try
  6.             {
  7.                    ...
  8.                    string s = Metod();
  9.             }
  10.             catch (Exception e)
  11.             {
  12.                 message = e.Message;
  13.                 return Autodesk.Revit.UI.Result.Failed;
  14.             }
  15.             return Autodesk.Revit.UI.Result.Succeeded;
  16.  
  17.         }
  18.         // гипотетически как то встроить можно этот метод Metod() чтоб потом "ds" вернулось не в public Result Execute а туда где я вызывал Getmetod : IExternalCommand
  19.         string Metod()
  20.         {
  21.                return "ds";
  22.         }
  23.     }
  24.  





Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
У каждого метода есть тип возвращаемого значения! Void - значит без возвращаемого значения. Соответственно, вам нужно сделать метод, который будет возвращать параметр:
Код - C# [Выбрать]
  1. privite Parameter GetParameter()
  2. {
  3. Parameter p;
  4. // you code
  5. return p;
  6. }
Это основы C#!

Оффлайн RevitTormentorАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 162
  • Карма: 6
У каждого метода есть тип возвращаемого значения! Void - значит без возвращаемого значения. Соответственно, вам нужно сделать метод, который будет возвращать параметр:
Код - C# [Выбрать]
  1. privite Parameter GetParameter()
  2. {
  3. Parameter p;
  4. // you code
  5. return p;
  6. }
Это основы C#!

Можно ли эту конструкцию куда то впихнуть в команду?

Оффлайн RevitTormentorАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 162
  • Карма: 6
Всё снял вопрос. Не нужно этого делать. Спасибо за ответы

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Код - C# [Выбрать]
  1. class Getmetod : IExternalCommand
  2.     {  
  3.         public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
  4.         {
  5.             try
  6.             {
  7.                    ...
  8.                    Parameter param = GetParameter();
  9.             }
  10.             catch (Exception e)
  11.             {
  12.                 message = e.Message;
  13.                 return Autodesk.Revit.UI.Result.Failed;
  14.             }
  15.             return Autodesk.Revit.UI.Result.Succeeded;
  16.  
  17.         }
  18.         privite Parameter GetParameter()
  19.         {
  20.              Parameter p;
  21.              // you code
  22.              return p;
  23.          }
  24.     }

Оффлайн RevitTormentorАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 162
  • Карма: 6
Код - C# [Выбрать]
  1. class Getmetod : IExternalCommand
  2.     {  
  3.         public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
  4.         {
  5.             try
  6.             {
  7.                    ...
  8.                    Parameter param = GetParameter();
  9.             }
  10.             catch (Exception e)
  11.             {
  12.                 message = e.Message;
  13.                 return Autodesk.Revit.UI.Result.Failed;
  14.             }
  15.             return Autodesk.Revit.UI.Result.Succeeded;
  16.  
  17.         }
  18.         privite Parameter GetParameter()
  19.         {
  20.              Parameter p;
  21.              // you code
  22.              return p;
  23.          }
  24.     }


Дак у меня тоже самое только возвращается string.
Я думал как бы мне вернуть не внутрь самой команды, а туда откуда вызывалась команда