Однако тут не всё так просто...
Получал ошибки:
AttributeError: static property 'ActiveView' of 'UIDocument' can only be assigned to through a type, not an instance
Cannot change the active view of a modifiable document (with a transaction curently open).
Exception: Setting active view is temporarily disabled.
и др..
Есть два варианта:
1) method UIDocument.RequestViewChange requests to change the active view by posting a message asynchronously. Unlike setting the ActiveView property, this will not make the change in active view immediately. Instead, the request will be posted to occur when control returns to Revit from the API context. This method is permitted to change the active view from the Idling event or an ExternalEvent callback
2)As a workaround, would it be possible to select the view (using the API), then use PostCommand to set the active view? Then wait for idling again...
Установить через свойство ActiveView напрямую не получается, выдаёт ошибку "Exception: Setting active view is temporarily disabled"
In a sense, that is the case – the system is 'busy', because the Idling event is being processed at the moment.
Удалось реализовать 1 вариант с использованием:
TransactionManager.Instance.ForceCloseTransaction()
uidoc.RequestViewChange(newView)
По окончании работы скрипта, меня перекидывает на вновь созданный вид, однако, ввиду того, что он выполняется асинхронно, я не могу "в нужный момент" получить нужные мне элементы с применённым шаблоном вида с созданного вида
Реализовать 2 вариант не пытался, не совсем ещё разбираюсь с UI событиями Revit. Буду рад, если кто-то даст 2 вариант решения.
Возможно также реализуем и вариант uidoc.ActiveView = newView, однако не в рамках 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). Instead you need to use RequestViewChange(). Its executes asynchronously, so if you need to set a view first, then perform an action that’s dependent on this event inside the same node then you’ve got a problem
Помогли посты:
https://thebuildingcoder.typepad.com/blog/2017/02/setting-active-view-during-idling.htmlhttps://forum.dynamobim.com/t/changing-active-view-is-tempoerarily-disabled/9267https://github.com/DynamoDS/Dynamo/issues/3520