Выбор категории элементов

Автор Тема: Выбор категории элементов  (Прочитано 3062 раз)

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

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

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

  • ADN OPEN
  • Сообщений: 23
  • Карма: 0
Плагин объединяет выбранные параметры элементов, принадлежащих к определенной категории. Вместо того, чтобы создавать множество плагинов под каждую категорию, как дать пользователю выбрать ее?





Код - C# [Выбрать]
  1. List<string> stringParametersForComboBox4 = new List<string>
  2.  
  3.         {
  4.  
  5.             "OST_PipeAccessory",
  6.             "OST_Sprinklers",
  7.             "OST_MechanicalEquipment"
  8.         };
  9.  
  10.         foreach (string name in stringParametersForComboBox4)
  11.  
  12.         {
  13.             comboBox4.Items.Insert(0, name);
  14.         }
  15.  
  16.  private void button1_Click(object sender, EventArgs e)
  17.     {          
  18.  
  19.          FilteredElementCollector collector = new FilteredElementCollector(revitDoc);
  20.          ElementCategoryFilter filter = new ElementCategoryFilter(BuiltInCategory.OST_PipeAccessory);
  21.         //Applying Filter
  22.         IList<Element> ducts = collector.WherePasses(filter).WhereElementIsNotElementType().ToElements();

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Выбор категории элементов
« Ответ #1 : 06-08-2021, 13:47:22 »
wingsdraw,
Вместо List<string> используй Dictionary<string, BuiltInCategory> и поставь в соответствие строковому представлению категории её представление в виде BuiltInCategory.OST_...
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • Сообщений: 23
  • Карма: 0
Re: Выбор категории элементов
« Ответ #2 : 06-08-2021, 14:15:03 »
действительно, строковое представление не принимается. Как можно поменять представление, будет Combobox0.Text использоваться?

Код - C# [Выбрать]
  1.  ElementCategoryFilter filter = new ElementCategoryFilter(comboBox0.Text)

Отмечено как Решение wingsdraw 10-08-2021, 10:12:47

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Выбор категории элементов
« Ответ #3 : 06-08-2021, 14:22:14 »
wingsdraw,
Ты не понял видимо меня. Постараюсь упростить:
Код - C# [Выбрать]
  1.     List<string> stringParametersForComboBox4 = new List<string>
  2.             {
  3.                 "OST_PipeAccessory",
  4.                 "OST_Sprinklers",
  5.                 "OST_MechanicalEquipment"
  6.             };
  7.     List<BuiltInCategory> catParametersForComboBox4 = new List<BuiltInCategory>
  8.             {
  9.                 BuiltInCategory.OST_PipeAccessory,
  10.                 BuiltInCategory.OST_Sprinklers,
  11.                 BuiltInCategory.OST_MechanicalEquipment
  12.             };
  13.  
  14.             foreach (string name in stringParametersForComboBox4)
  15.             {
  16.                 comboBox4.Items.Insert(0, name);
  17.             }
  18.      
  19.      private void button1_Click(object sender, EventArgs e)
  20.         {          
  21.              FilteredElementCollector collector = new FilteredElementCollector(revitDoc);
  22.              // Здесь находишь номер выбранной в ComboBox категории - назовём её iCat
  23.             int iCat = comboBox4.SelectedIndex;
  24.              //ElementCategoryFilter filter = new ElementCategoryFilter(BuiltInCategory.OST_PipeAccessory);
  25.             ElementCategoryFilter filter = new ElementCategoryFilter(catParametersForComboBox4[iCat]);
  26.             //Applying Filter
  27.             IList<Element> ducts = collector.WherePasses(filter).WhereElementIsNotElementType().ToElements();
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • Сообщений: 23
  • Карма: 0
Re: Выбор категории элементов
« Ответ #4 : 10-08-2021, 10:12:34 »
Сперва не совсем понял, теперь все ясно, спасибо за разъяснение, Александр.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Выбор категории элементов
« Ответ #5 : 10-08-2021, 13:29:31 »
Сперва не совсем понял, теперь все ясно, спасибо за разъяснение, Александр.
Но красивее было бы через Dictionary<string, BuiltInCategory>
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение