#python #paraview
#python #paraview
Вопрос:
Я использую Paraview 5.8.1, но мой вопрос справедлив для более старых версий.
Я хочу сгенерировать скрипт на Python для автоматизации моих визуализаций. Я использую инструмент «trace recorder», который записывает действия, которые я выполняю в графическом интерфейсе, и переводит их в скрипт Python, который приведет к тому же результату.
Однако этот инструмент записывает не все: например, изменения положения камеры или размеров осей ориентации не переводятся, тогда как функции Python для этого существуют.
Есть ли какой-либо способ заставить trace recorder записывать все?
Ответ №1:
Простой ответ: нет.
ParaView использует механизм свойств. Многие вещи являются свойствами (параметры фильтра, настройка цвета, …) и доступны для записи. Но камеры нет. Когда трассировка останавливается, внутренний хук добавляет последнюю камеру в трассировку.
Вы можете использовать это как макрос для добавления текущей камеры в трассировку:
from paraview import simple
from paraview import smtrace
smtrace.Trace.get_accessor(simple.GetActiveView())
camera_trace = smtrace.SaveCameras.get_trace(None)
if camera_trace:
a = smtrace.Trace.Output.append_separated(
"#### saving camera placements for all active views")
a = smtrace.Trace.Output.append_separated(camera_trace)
Тем не менее, я не уверен, что увижу вариант использования… Если вы хотите увидеть анимацию вашей сцены, вы не можете использовать механизм трассировки, но вместо этого вы должны использовать анимационный вид.
Комментарии:
1. Спасибо. Если последняя позиция камеры добавлена в конце трассировки, я могу ее использовать. smtrace. Трассировка вашего скрипта интересна, но строка 7 выдает ошибку.
smtrace.Trace.Outpur
возвращает None2. вы должны запустить трассировку перед использованием этого скрипта