public FilteredElementCollector(
Document document,
ElementId viewId
)
Однако в самой документации "A FilteredElementCollector based on a view will only contain elements visible in the current view. You cannot retrieve elements that are not graphical or elements that are invisible. A FilteredElementCollector based on a document retrieves all elements in the document including invisible elements and non-graphical elements"public FilteredElementCollector(
Document document
)
Мне кажется надо смотреть в сторону UIView : "While the View class is the base class for all view types in Revit and keeps tracks of elements in the view, the UIView class contains data about the view windows in the Revit user interface"UIDocumen.ActiveView Property
The currently active view of the currently active document
public View ActiveView { get; set; }
TransactionManager.Instance.ForceCloseTransaction()
uidoc.RequestViewChange(newView)
По окончании работы скрипта, меня перекидывает на вновь созданный вид, однако, ввиду того, что он выполняется асинхронно, я не могу "в нужный момент" получить нужные мне элементы с применённым шаблоном вида с созданного видаwall = FilteredElementCollector(doc, newView.Id).OfClass(Wall).FirstElement()
opt = Options()
gmtr = wall.get_Geometry(opt)
Ещё проверить версию с opt.View = newView можно. В моём случае стены на начальном виде скрыты (не видны). Насколько понимаю что в данном случае этот вариант не будет работать:wall = FilteredElementCollector(doc, newView.Id).OfClass(Wall).FirstElement()
opt = Options()
opt.View = newView
gmtr = wall.get_Geometry(opt)
Проблема с выполнением
FilteredElementCollector(doc, newView.Id), который должен собрать видимые элементы с нового вида
Будет ли работать код:
Код: [Выделить]
wall = FilteredElementCollector(doc, newView.Id).OfClass(Wall).FirstElement()
opt = Options()
gmtr = wall.get_Geometry(opt)
Насколько понимаю что в данном случае этот вариант не будет работать:
Код: [Выделить]
wall = FilteredElementCollector(doc, newView.Id).OfClass(Wall).FirstElement()
opt = Options()
opt.View = newView
gmtr = wall.get_Geometry(opt)
какая разница, видны они на начальном или нетразница большая при использовании FilteredElementCollector. Из API про FilteredElementCollector based on a view will only contain elements visible in the current view. You cannot retrieve elements that are not graphical or elements that are invisible
Будет. Ты же новый вид указываешь,Не будет в рамках работы Dynamo, я описал выше почему. Its worth mentioning that you can’t set the uidoc.ActiveView in Revit’s Idling event. That’s a major drawback for Dynamo, since Dynamo operates inside this event (i.e. its not possible) Потому что сам Dynamo запускается в рамках текущего активного вида и в рамках работы одного скрипта поменять этот текущий активный вид не получится, будет всё время такая ошибка:
разница большая при использовании FilteredElementCollector.
you can’t set the uidoc.ActiveView
Ну и? Подставь нужный вид и работай с нимНе работает...
Если разница в детализации - единственная твоя проблема, можешь получать геометрию заданного уровня детализации. Свойство DetailLevel в OptionsЯ в принципе коллектором не могу подцепить стены у созданного вида, если они у исходного вида были скрыты. За наводку спасибо!
Грубя говоря, я не могу использовать конструктор для созданных через API видов
Регенерацию документа после создания вида, присвоения темплейта вызываешь?Регенерация автоматически вызывается по завершении транзакции. Я её завершаю в первом ноде. Во втором ноде уже другая транзакция.
Эээ, т.е. динамовские обёртки мешают?Да.
Используй чистый Revit API, на край, воспользуйся Revit Python Shell, там таких проблем нетПока что цель стоит реализовать с использованием Dynamo и сразу в одной кнопке и создание нового вида и работа с ним...Возможно конструктор:
Используй чистый Revit API, на край, воспользуйся Revit Python ShellДля конечного пользователя будет штатный функционал Revit из коробки.
Но в блогах по С# тоже писали про проблемы при его использовании..