PFC可以凭借自身代码在运算过程中就导出数据与图片,但是有些图片是需要等待运算完成以后调成统一参数才能出图,如果有多个结果文件需要导出图片,每一个单独导出太过繁琐,因此我们可以借助Python可以实现PFC批量化导出图片与数据。下面是具体过程:
设置好PFC中Plot中显示的内容与Plot的名称,如过需要导出多个信息的图片可以多建一些Plot。但是需要注意自己的模型复杂成都,例如我这个5w个rblock的模型,多个Plot会导致PFC闪退。
Python代码,以我的模型为例,我总共生成了16个过程文件,是按照每1%应变保存一次,因此我的主要变量就是应变在改变
import itasca as it #导入itasca,不导入Python无法识别相关命令 for n in range(0,16): #循环,我的结果从0,开始到15,因此要从0循环16次, jipei_name = '40-1-S-800-' #设置我的级配名字 yingbian_name='result_'+str(n)+'.sav' #设置文件名,我的文件名是result_0.sav的格式,这里的变量就是‘0’。 wenjian_name = "'{}'".format(yingbian_name) #PFC6.0以后的文件名必须用''标记,因此要在上一步的文件名基础上加上'' commandRestoreStr="model restore "+wenjian_name #设置PFC的命令 it.command(commandRestoreStr) #将命令传递给PFC it.fish.set('jipei_name',jipei_name) #为PFC中的fish变量传递参数,‘’中的是fish中的变量,后面的是Python中的变量 it.fish.set('yingbian',n) it.command("program call 'jihuojiechu.dat'") #调用PFC的文件并运行
plot 'jiechu' export bitmap filename [string.build("%1jichu-%2.png",jipei_name,yingbian)] size 2560 1440 ;这里是导出Plot为图片文件名采用占位符的形式,可以文件名统一命名为xxx-x的形式 def export_his if yingbian=15 then command history export 'stressXX1' file [string.build("%1stressXX1.csv",jipei_name)] endcommand endif end @export_his 这里是导出history的内容,通常history只需要导出最后一个结果文件就是全过程的监测,因此加入了一个if进行判断,这样就可以只导出最后一个应变结果文件的history
Python中的代码只需要根据自己的需求改成自己的内容,只要的文件输出还在PFC 中使用fish编写,Python的作用是可以一次连续restore保存的文件。下面是我批量导出的结果