Картинка для привлечения внимания
Но если частота сохранения fvvis файлов (файлов с данными для визуализации) не совпадает с частотой сохранения данных расчета, то "проиграть" эту визуализацию автоматически в Пре-Постпроцессоре нельзя. Только с помощью Модуля просмотра результатов. К сожалению, Вьювер на данный момент существенно отстает по функциональности от Пре-Постпроцессора. Например, нельзя отобразить расчетную сетку или включить/отключить наложение палитры.
Ниже я опишу, как можно автоматически модифицировать клиентскую часть проекта, чтобы создать для Пре-Постпроцессора иллюзию о существовании сохранений данных с той же частотой, что и визуализации. Это позволит отобразить все слои и гибко их настроить для проигрывания анимации.
Сначала я должен предупредить, что предложенная методика повредит клиентскую часть проекта. Поэтому работайте с копией.
В скрипте есть ограничения и он не делает всю работу автоматически, кое что нужно ручками подкрутить, но этот скрипт несложно модифицировать.
Принцип работы
Нужно модифицировать клиентскую часть проекта так, чтобы Пре-Постпроцессор думал, что существуют сохранения, которых не существует. И чтобы эти сохранения совпадали с частотой сохранения fvvis файлов.Для этого необходимо:
- Изменить содержимое fvproj, прописав там все несуществующие сохранени;
- Наплодить fvstat файлы, соответствующие несуществующим сохранениям.
Процедура выполнения скрипта
- В одной папке разместить все fvvis файлы и клиентскую часть проекта
- Положить в эту папку скрипт fvvis.ps1 (текст скрипта приведен ниже)
- Удалить все fvstat файлы, кроме нулевого
- В fvproj файле удалить все блоки <item> … </item> кроме нулевого
- Запустить скрипт
- Открыть появившийся файл fvproj.txt и скопировать все блоки <item> … </item> кроме нулевого. Вставить эти блоки в fvproj файл проекта после нулевого блока.
- Можно открывать проект в Пре-Постпроцессоре и делать анимацию.
Ограничения скрипта
- Скрипт рассчитан на проекты, в которых было меньше 99 999 итераций (т.е. в названии fvvis файлов есть цифра меньше 99 999 )
- В папке с проектом не допускается больше одного fvproj файла
- Скрипт выполняется только из каталога с преоктом
Проблемы при запуске скрипта
Скрипт может не запускаться, т.к. по умолчанию в системе запрещено запускать неподписанные скрипты из файлов. Поэтому скрипт можно выполнить из оболочки PowerShell, предварительно перейдя в каталог с проектом. Либо можно снизить уровень безопасности, разрешив выполнение скриптовых неподписанных файлов. Делается это с помощью следующей команды из-под PowerShell:
Set-ExecutionPolicy Unrestricted
Содержимое скрипта
# скрипт не поддерживает более 99999 итераций
#получаем текущий каталог
$current_path = get-item .
#получаем список из имен fvvis файлов
$fvvis_list = Get-ChildItem "$current_path\*" -include *.fvvis -name
#получаем имя проекта и основу имени fvvis файлов
$proj_name = (get-item "$current_path\*" -include *.fvproj ).name
$proj_name = $proj_name -replace ".fvproj", ""
$fvvis_name = $proj_name+'_layerdata_'
#указываем имя файла для блоков итема
$Outfile = "fvproj.txt"
#итерируем
ForEach ($fvvis in $fvvis_list) {
# получаю номер итерации из фввиз файла
$step = $fvvis -replace "$fvvis_name",""
$step = $step -replace ".fvvis",""
#дописываем новый блок в fvproj.txt файл
$itemtxt = ' <ITEM>'
$itemtxt | out-file $Outfile -append
$itemtxt = ' <Number>'+$step+'</Number>'
$itemtxt | out-file $Outfile -append
$itemtxt = ' <Time>0.'+$step+'</Time>'
$itemtxt | out-file $Outfile -append
$itemtxt = ' <Contents>SMV</Contents>'
$itemtxt | out-file $Outfile -append
$itemtxt = ' </ITEM>'
$itemtxt | out-file $Outfile -append
#копируем нулевой fvstat с указанным номером итерации
$fvout = $proj_name + '_' + $step + '.fvstat'
$fvinp = $proj_name + '_00000.fvstat'
Copy-Item -Path $fvinp -Destination $fvout
#меняем содержимое текущего стат файла
$fvstat = Get-Content $fvout
$fvstat[1] = '<FVSTATUS UIName="VarStatus" current="0.'+$step+'" expTimeStep="0" expTimeStepFSI="0" numCells="0" timeIter="'+$step+'" timeStep="0">'
$fvstat[1]
Set-Content -path $fvout -value $fvstat
}
Комментариев нет:
Отправить комментарий