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

ADN Club => Revit API => Тема начата: enot от 29-08-2018, 22:33:34

Название: Элементы активной спецификации
Отправлено: enot от 29-08-2018, 22:33:34
Существует ли способ, чтобы:
- Получить элементы (пример - создали спецификацию труб- получили сами трубы), которые  отображены только в спецификации ViewSchedule на активном виде?
Название: Re: Элементы активной спецификации
Отправлено: Александр Игнатович от 29-08-2018, 22:41:18
Да, передать в конструктор FilteredElementCollector вторым параметром Id спецификации
Название: Re: Элементы активной спецификации
Отправлено: enot от 29-08-2018, 23:07:03
Хорошо, понял- так получим активную спецификацию. А как получить элементы, которые представляют видимые строки этой спецификации? Вручную для одного элемента можно так - выделить в спецификации одну строку и нажать на "выделить в модели" тогда получим этот элемент. Как через апи сделать подобное для всех видимых строк (получить на выходе список элементов)?
Название: Re: Элементы активной спецификации
Отправлено: Александр Игнатович от 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)
Название: Re: Элементы активной спецификации
Отправлено: enot от 30-08-2018, 10:42:34
Похоже нет, не поняли. Активный вид - doc.ActiveView

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

Название: Re: Элементы активной спецификации
Отправлено: Александр Игнатович от 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.