Vensim模拟结果vdf数据文件转化为可读文本文件

本文记录了如何将Vensim模拟结果的vdf文件转化为可读的文本文件。由于vensim的vdf文件是加密格式,作者通过vensim model reader找到vendll32.dll,利用vensim_command方法实现转换。尽管vensim model reader存在对中文支持的问题,但可以通过编码转换解决。安装vensim model reader后,mdl模型文件的默认打开方式会受到影响,需重新设置。注意,使用vensim model reader的DLL可能涉及版权问题,建议仅作参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

准备重装电脑,想起以前项目需要折腾过这么一个玩意,就记录一下,虽然以后再也用不到了。

vensim的模拟结果文件格式为vdf,用记事本打开看到一堆乱码,所以只能找vensim二次开发的相关资料。

vensim的公司本身提供关于vensim的二次开发接口,但是似乎只有vensim专业版还是什么版本才有,付费好像是好几千rmb吧,做项目的时候找了n久没找到破解版的。

通过阅读文档发现似乎只需要一个vendll32.dll的动态链接库就可以二次开发,但vensim ple版本在安装路径或系统文件夹都找不到这个这个dll,本来都准备放弃了。意外发现vensim的公司还提供一款叫vensim model reader的软件,可以读取模型之类的,猜测这个软件或许会有vendll32.dll。安装后终于在系统文件夹里找到。

有了这个dll,就可以将加密的vdf文件进行转化了,只用将调用dll里的vensim_command方法,将命令“MENU>VDF2DAT|XXX.vdf|XXX.txt”作为参数传递进去就行。

有点蛋疼的是vensim model reader对系统中文的支持有点问题,但还是可以用编码转化的方法处理。

            //编码转化
            byte[] array1 = Encoding.UTF8.GetBytes(pathVdf);
            string sourcePath = Encoding.Default.GetString(array1);
            byte[] array2 = Encoding.UTF8.GetBytes(pathData);
            string targetPath = Encoding.Default.GetString(array2);
            cmd = cmd + "|" + sourcePath + "|" + targetPath;   


随便建了个模型,验证运行的结果和转化

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值