Документ без команды

Автор Тема: Документ без команды  (Прочитано 5640 раз)

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

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

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

  • ADN OPEN
  • ***
  • Сообщений: 162
  • Карма: 6
Документ без команды
« : 05-03-2018, 10:14:23 »
Можно ли получить документ без команды class... : IExternal?

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

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: Документ без команды
« Ответ #1 : 05-03-2018, 10:15:49 »
Как вы себе это представляете? Типа, из приложения, запущенного вне Ревита?

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

  • ADN OPEN
  • ***
  • Сообщений: 162
  • Карма: 6
Re: Документ без команды
« Ответ #2 : 05-03-2018, 10:39:24 »
Как вы себе это представляете? Типа, из приложения, запущенного вне Ревита?

Не Александр, сейчас хотя бы внутри своей библиотеки загруженной в ревит. Или любое действие делается только через команды?

Спасибо

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

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

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: Документ без команды
« Ответ #3 : 05-03-2018, 10:42:56 »
Даже если вы загрузили свою библиотеку, то методы из неё вы будете вызывать один фиг из каких-то команд или ExternalApplication, а значит и ссылки на документ будут, которые вы можете передать в свои методы.
Лучше сформулируйте задачу, а то мы разговариваем достаточно абстрактно

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

  • ADN OPEN
  • ***
  • Сообщений: 162
  • Карма: 6
Re: Документ без команды
« Ответ #4 : 05-03-2018, 10:45:02 »
то методы из неё вы будете вызывать один фиг из каких-то команд или ExternalApplication
Плохо.

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

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: Документ без команды
« Ответ #5 : 05-03-2018, 14:03:03 »
то методы из неё вы будете вызывать один фиг из каких-то команд или ExternalApplication
Плохо.
Вы также должны знать, что помимо IExternalCommand есть еще и IExternalAppliсation. Возможно вам нужно использовать именно второе

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

  • ADN OPEN
  • ***
  • Сообщений: 162
  • Карма: 6
Re: Документ без команды
« Ответ #6 : 05-03-2018, 14:11:39 »
Александр это с кнопки запуск команды
Код - C# [Выбрать]
  1.          PushButtonData BTNSettings = new PushButtonData(
  2.                   "KAVBTN",
  3.                   "Пример",
  4.                   assembly.Location,
  5.                   "KAV.KAVParameters.Load"
  6.                   );


а, как запустить такую команду
Код - C# [Выбрать]
  1. "KAV.KAVParameters.Load"
  2.  

не из кнопки.

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

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: Документ без команды
« Ответ #7 : 05-03-2018, 14:13:37 »
Так просто вызвать метод
Код - C# [Выбрать]
  1. KAV.KAVParameters.Load.Execute()

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

  • ADN OPEN
  • ***
  • Сообщений: 162
  • Карма: 6
Re: Документ без команды
« Ответ #8 : 05-03-2018, 14:23:17 »
Так просто вызвать метод

Как быть с параметрами
Даже если я в параметрах поставлю null то команда то ведь не выполнится.
Код - C# [Выбрать]
  1. Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
  2.  
  3. KAV.KAVParameters.Load.Execute(null, null, null);
  4.  


Да и вроде если ref то null нельзя передать.



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

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: Документ без команды
« Ответ #9 : 05-03-2018, 14:25:56 »
Вы можете сделать перегрузку метода Execute() без параметров

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

  • ADN OPEN
  • ***
  • Сообщений: 162
  • Карма: 6
Re: Документ без команды
« Ответ #10 : 05-03-2018, 14:33:15 »
 :D
Как же я тогда выполню команду Ревита. Это получится обычный метод.
Как тогда в такой команде
Код - C# [Выбрать]
  1.         public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
  2.         {
  3.             try
  4.             {
  5.                 var document = commandData.Application.ActiveUIDocument.Document;
  6.                 Metod(document);
  7.             }
  8.             catch (Exception e)
  9.             {
  10.                 message = e.Message;
  11.                 return Autodesk.Revit.UI.Result.Failed;
  12.             }
  13.  
  14.             return Autodesk.Revit.UI.Result.Succeeded;
  15.         }
получить document?

Отсюда и вопрос в теме если я перегружу без параметров, то как мне тогда получить document
этой штуки
Код - C# [Выбрать]
  1. ExternalCommandData commandData
не будет.

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

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: Документ без команды
« Ответ #11 : 05-03-2018, 14:40:52 »
RevitTormentor, вы мне сначала ответьте (второй раз спрашиваю) - ОТКУДА вы вызовите эту команду? Или вы знаете про какое-то волшебство, которое позволяет вызывать методы из вашей dll без использования IExternalCommand и IExternalApplication???

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

  • ADN OPEN
  • ***
  • Сообщений: 162
  • Карма: 6
Re: Документ без команды
« Ответ #12 : 05-03-2018, 14:51:09 »
RevitTormentor, вы мне сначала ответьте (второй раз спрашиваю) - ОТКУДА вы вызовите эту команду? Или вы знаете про какое-то волшебство, которое позволяет вызывать методы из вашей dll без использования IExternalCommand и IExternalApplication???

Дак я из помеченного ответа уже понял, что нельзя работать без команд.

Отсюда и был вопрос уточняющий, как запустить команду не из кнопки, чтобы получить ещё и документ.
Ответ значит будет такой, что вызвать команду не из кнопки можно только из другой команды?
А можно вызвать одну команду из другой без "вылета" Ревита?

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

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: Документ без команды
« Ответ #13 : 05-03-2018, 15:10:09 »
Ответ значит будет такой, что вызвать команду не из кнопки можно только из другой команды?
я вам ранее ответил, что есть еще IExternalApplication - это не команда
А можно вызвать одну команду из другой без "вылета" Ревита?
Вызывать команды можно через PostCommand. Я не пробовал ни разу.

Хотелось бы понять - чего вы пытаетесь добиться? Вы задачу не объяснили. Может вам вообще все это не нужно

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

  • ADN OPEN
  • ***
  • Сообщений: 162
  • Карма: 6
Re: Документ без команды
« Ответ #14 : 05-03-2018, 15:24:23 »
Ответ значит будет такой, что вызвать команду не из кнопки можно только из другой команды?
я вам ранее ответил, что есть еще IExternalApplication - это не команда
А можно вызвать одну команду из другой без "вылета" Ревита?
Вызывать команды можно через PostCommand. Я не пробовал ни разу.

Хотелось бы понять - чего вы пытаетесь добиться? Вы задачу не объяснили. Может вам вообще все это не нужно

Чего хочу:
Например пройтись по всем элементам в базе. С нужным мне распределением по коллекциям.
В IExternalCommand метод LoadBase();
В методе LoadBase() методы LoadData1() LoadData2() а уже в этих методах функционал обращения к документу

Не хочется тянуть документ из "головной" команды в самую последнюю.

Скорее всего создав static Document
в IExternalApplication документ найду и запихаю в static Document
И из всех методов модуля буду обращаться к этому статическому Документу.