Элементы активной спецификации

Автор Тема: Элементы активной спецификации  (Прочитано 4784 раз)

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

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

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

  • ADN OPEN
  • *****
  • Сообщений: 525
  • Карма: 2
Существует ли способ, чтобы:
- Получить элементы (пример - создали спецификацию труб- получили сами трубы), которые  отображены только в спецификации ViewSchedule на активном виде?

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: Элементы активной спецификации
« Ответ #1 : 29-08-2018, 22:41:18 »
Да, передать в конструктор FilteredElementCollector вторым параметром Id спецификации

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

  • ADN OPEN
  • *****
  • Сообщений: 525
  • Карма: 2
Re: Элементы активной спецификации
« Ответ #2 : 29-08-2018, 23:07:03 »
Хорошо, понял- так получим активную спецификацию. А как получить элементы, которые представляют видимые строки этой спецификации? Вручную для одного элемента можно так - выделить в спецификации одну строку и нажать на "выделить в модели" тогда получим этот элемент. Как через апи сделать подобное для всех видимых строк (получить на выходе список элементов)?
« Последнее редактирование: 30-08-2018, 01:17:58 от enot »

Отмечено как Решение enot 30-08-2018, 10:42:51

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: Элементы активной спецификации
« Ответ #3 : 30-08-2018, 10:10:38 »
Похоже нет, не поняли. Активный вид - doc.ActiveView

Revit Python Shell:
Код - Python [Выбрать]
  1. col = FilteredElementCollector(doc, doc.ActiveView.Id) # активный вид спецификация
  2.  
  3. elements = col.WhereElementIsNotElementType().ToElements()
  4.  
  5. lookup(elements)

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

  • ADN OPEN
  • *****
  • Сообщений: 525
  • Карма: 2
Re: Элементы активной спецификации
« Ответ #4 : 30-08-2018, 10:42:34 »
Похоже нет, не поняли. Активный вид - doc.ActiveView

Вон как делается)
Я понял вначале так :
col = FilteredElementCollector(ViewSchedule.Document, ViewSchedule.Document.Id)


Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: Элементы активной спецификации
« Ответ #5 : 30-08-2018, 10:47:32 »
Поставьте SDK, там, как правило, все хорошо описывается, где, что и почем:
Код - C# [Выбрать]
  1. public FilteredElementCollector(
  2.         Document document,
  3.         ElementId viewId
  4. )
Цитировать
Parameters
document
Type: Autodesk.Revit.DB.Document
The document that owns the view.
viewId
Type: Autodesk.Revit.DB.ElementId
The view id.

Цитировать
Remarks
Elements that will be passed by the collector have graphics that may be visible in the input view. Some elements may still be hidden because they are obscured by other elements.

For elements which are outside of a crop region, they may still be passed by the collector because Revit relies on later processing to eliminate the elements hidden by the crop. This effect may more easily occur for non-rectangular crop regions, but may also happen even for rectangular crops. You can compare the boundary of the region with the element's boundary if more precise results are required.

Accessing these visible elements may require Revit to rebuild the geometry of the view. The first time your code constructs a collector for a given view, or the first time your code constructs a collector for a view whose display settings have just been changed, you may experience a significant performance degradation.