准备重装电脑,想起以前项目需要折腾过这么一个玩意,就记录一下,虽然以后再也用不到了。
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;
随便建了个模型,验证运行的结果和转化