准备重装电脑,想起以前项目需要折腾过这么一个玩意,就记录一下,虽然以后再也用不到了。
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;
随便建了个模型,验证运行的结果和转化的结果,可以看到结果一致
转化结果一致
需要注意的是,安装后vensim model reader之后打开mdl模型文件会受影响,需要重复安装vensim将mdl的默认打开软件修改回来,总之比较蛋疼
另外,只有安装了vensim model reader之后才能使用vendll32.dll,否则会提示dll未注册。
demo需要用安装好的系统文件夹里的vendll32.dll替代,否则可能出现reinstall vensim的问题。
2021.10更新---------------------------------------------------------------
前段时间为了研究评论的问题,装了下vensim发现了一个事情。
第2条显示不能随意使用vensim model reader的vensim DLL来开发。
所以为了规避这方面的风险,决定还是把vensim model reader这个软件的资源去掉了,只保留demo仅供需要的人参考。vensim model reader还是能去官网下载的,估计也更新了好几个版本,就是要填写信息麻烦一点。
还有就是vendll32.dll里的方法,可以参考官网的文档的这部分,里面有些方法我也没搞懂怎么用,反正调用成功,但是返回失败,也不知道哪里的问题,庆幸当初需要的方法还是能成功使用。
总之,大体就是这样,希望对有需要的人有所帮助。不过个人是确实没什么想法折腾这东西了,小众而且我也用不上,这应该是最后一次更新这篇博文了。