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

ADN Club => Revit API => Тема начата: wingsdraw от 27-04-2021, 09:14:52

Название: Поиск элементов
Отправлено: wingsdraw от 27-04-2021, 09:14:52
Доброго времени. Возможно ли не "зашивать" категорию в плагин, а (через Windows Forms) дать пользователю возможность поиска всех элементов нужной категории (или выбрать из выпадающего списка категорию)?

Код - C# [Выбрать]
  1.  UIApplication uiapp = commandData.Application;
  2.             UIDocument uidoc = uiapp.ActiveUIDocument;
  3.             //Application app = uiapp.Application;
  4.             Document doc = uidoc.Document;
  5.  
  6.             //Create Filtered Element Collector and Filter
  7.             FilteredElementCollector collector = new FilteredElementCollector(doc);
  8.  
  9.             ElementCategoryFilter filter = new ElementCategoryFilter(BuiltInCategory.OST_DuctFitting);



Название: Re: Поиск элементов
Отправлено: Александр Игнатович от 27-04-2021, 14:25:20
Document.Settings.Categories - список категорий, делаешь выбор категорий, по выбранной создаешь ElementCategoryFilter
Название: Re: Поиск элементов
Отправлено: wingsdraw от 27-04-2021, 17:08:13
Относительно недавно в этой теме, поясни, пожалуйста, как можно сделать выбор категорий, что нужно использовать?
Название: Re: Поиск элементов
Отправлено: Александр Игнатович от 27-04-2021, 17:50:13
Ну это уже от твоей задачи зависит. Список категорий ты получишь, а дальше - нарисовать UI, WPF, WinForms или ещё как
Название: Re: Поиск элементов
Отправлено: wingsdraw от 28-04-2021, 11:28:43
немного более детально представлю для разрешения вопроса. Нажав на кнопку, наименование (значение) категории сохраняется в переменную "selected". Как теперь можно по выбранной создать фильтр (как передать это самое значение) для создания коллекции элементов (и дальнейшего получения списка всех параметров этой категории)? Cкорее всего, нужно продолжать (1) в class.cs, но не до конца ясно, как это сделать?


Название: Re: Поиск элементов
Отправлено: andy_pu от 28-05-2021, 12:08:21
BuiltInCategory - это Enum, соответственно как Value лучше взять константу перечисления и потом преобразовать к типу (BuiltInCategory)Value. К примеру, OST_PipeCurves = -2008044.
Соответственно:
int v= -2008044;
Autodesk.Revit.DB.BuiltInCategory bc =(Autodesk.Revit.DB.BuiltInCategory)v;//OST_PipeCurves
Название: Re: Поиск элементов
Отправлено: wingsdraw от 01-06-2021, 14:14:22
спасибо за ответ, попробую