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

ADN Club => Revit API => Тема начата: Пашин Евгений от 27-09-2016, 14:50:57

Название: Определение категории в свойствах спецификации.
Отправлено: Пашин Евгений от 27-09-2016, 14:50:57
Коллеги, добрый день.

Мне нужна помощь в определении имени категории в свойствах спецификации.

(искать в названии самой спецификации - это не решение)
Название: Re: Определение категории в свойствах спецификации.
Отправлено: Андрей Фазлеев от 27-09-2016, 15:21:54
Добрый день!

Спецификация пустая или с элементами?

Если пустая, пока не нашёл решения. Если с элементами - тогда сделай фильтрацию по виду этой спецификации и выбери первый элемент. С него можно взять категорию. Конечно, хотелось бы найти способ как вытащить категорию из самой спецификации.


Код - C# [Выбрать]
  1.  string catName = new FilteredElementCollector(this.Document, new ElementId(2365)).FirstElement().Category.Name;                       
  2. TaskDialog.Show("R", catName);

2365 - это Id спецификации в моей тестовой модели, с выбором не стал заморачиваться
Название: Re: Определение категории в свойствах спецификации.
Отправлено: Пашин Евгений от 27-09-2016, 15:24:25
Андрей, приветствую. Спасибо за ответ. Сейчас его проверю.
Название: Re: Определение категории в свойствах спецификации.
Отправлено: Пашин Евгений от 27-09-2016, 15:40:19
Андрей, огромное спасибо - сработало!!!

Код - vb.net [Выбрать]
  1. Dim uiDoc As UIDocument = commandData.Application.ActiveUIDocument
  2. Dim Doc As Document = uiDoc.Document
  3. ' .....
  4. Dim coll As FilteredElementCollector = New FilteredElementCollector(Doc).OfClass(GetType(ViewSchedule))
  5. ' .....
  6. For Each rvtViewSchedule As Autodesk.Revit.DB.ViewSchedule In coll
  7. ' .....
  8. Dim CatName As String = New FilteredElementCollector(Doc, New ElementId(rvtViewSchedule.Id.IntegerValue)).FirstElement().Category.Name
  9. ' .....
  10. Next



Это ещё далеко не всё. Это только разминка. Потом будет нужно создавать спецификацию и устанавливать ей свойства. Так что до скорой встречи :)
Название: Re: Определение категории в свойствах спецификации.
Отправлено: Андрей Фазлеев от 27-09-2016, 15:59:39
В своём примере я не учёл вариант определения спецификации по нескольким категориям
Название: Re: Определение категории в свойствах спецификации.
Отправлено: Андрей Фазлеев от 27-09-2016, 16:06:07
есть способ надёжнее:

Код - C# [Выбрать]
  1.                         Element el = this.Document.GetElement(new ElementId(2455));
  2.                        
  3.                         ViewSchedule vs =  el as ViewSchedule;
  4.  
  5.                         ElementId vsCatId = vs.Definition.CategoryId;
  6.                        
  7.                         string catName = ((BuiltInCategory)vsCatId.IntegerValue).ToString();
  8.                        
  9.                         TaskDialog.Show("R", catName);
Название: Re: Определение категории в свойствах спецификации.
Отправлено: Windcastle от 27-09-2016, 20:00:40
В своём примере я не учёл вариант определения спецификации по нескольким категориям

Андрей, а часто бывают спецификации с несколькими категориями? (извиняюсь что сразу карму не плюсанул - торопился домой windcatle=Пашин Евгений, если что)
Название: Re: Определение категории в свойствах спецификации.
Отправлено: Андрей Фазлеев от 28-09-2016, 10:51:12
Да, бывают.
Вообще стараюсь рассмотреть возможные случаи, чтобы потом не править код
Название: Re: Определение категории в свойствах спецификации.
Отправлено: Пашин Евгений от 28-09-2016, 11:25:30
Да, бывают.
Вообще стараюсь рассмотреть возможные случаи, чтобы потом не править код

Спасибо, что подсказал. Обязательно опробую и отпишусь здесь!