Определение категории в свойствах спецификации.

Автор Тема: Определение категории в свойствах спецификации.  (Прочитано 6181 раз)

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

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Коллеги, добрый день.

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

(искать в названии самой спецификации - это не решение)

Отмечено как Решение Пашин Евгений 27-09-2016, 15:40:24

Оффлайн Андрей Фазлеев

  • ADN Club
  • Сообщений: 24
  • Карма: 8
    • Andrey Stroitel
Добрый день!

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

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


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

2365 - это Id спецификации в моей тестовой модели, с выбором не стал заморачиваться

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Андрей, приветствую. Спасибо за ответ. Сейчас его проверю.

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Андрей, огромное спасибо - сработало!!!

Код - 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



Это ещё далеко не всё. Это только разминка. Потом будет нужно создавать спецификацию и устанавливать ей свойства. Так что до скорой встречи :)

Оффлайн Андрей Фазлеев

  • ADN Club
  • Сообщений: 24
  • Карма: 8
    • Andrey Stroitel
В своём примере я не учёл вариант определения спецификации по нескольким категориям

Оффлайн Андрей Фазлеев

  • ADN Club
  • Сообщений: 24
  • Карма: 8
    • Andrey Stroitel
есть способ надёжнее:

Код - 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);
« Последнее редактирование: 27-09-2016, 17:55:27 от Андрей Фазлеев »

Оффлайн Windcastle

  • ADN OPEN
  • **
  • Сообщений: 58
  • Карма: 0
В своём примере я не учёл вариант определения спецификации по нескольким категориям

Андрей, а часто бывают спецификации с несколькими категориями? (извиняюсь что сразу карму не плюсанул - торопился домой windcatle=Пашин Евгений, если что)

Оффлайн Андрей Фазлеев

  • ADN Club
  • Сообщений: 24
  • Карма: 8
    • Andrey Stroitel
Да, бывают.
Вообще стараюсь рассмотреть возможные случаи, чтобы потом не править код

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Да, бывают.
Вообще стараюсь рассмотреть возможные случаи, чтобы потом не править код

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