我要用Python写一个大程序了!

我一直觉得商用软件处理NVH仿真的传递函数类结果(主要指NTF

VTF

IPI和路躁等)不是特别方便,我们常用的商用软件有LMS公司的Virtual.lab、Altair软件公司的Hypergraph以及META

post-processor,我并不是指这些商用软件不好,只是从一个用户角度来讲,这些后处理软件够智能,够通用,几乎适用于任何求解器的结果类型,但是,就是由于太通用,却不一定适用于企业自己实际的工况。所以我先前使用VBA语言写了第一个后处理的程序。

注释:全面教程,入门书籍,学习源码可以添加小编学习群943752371直接获取。

起来写这个程序有个故事。当时我们的解析报告,包括NTF/VTF/IPI均需要把所有的结果作为附图贴在报告后面,而这需要花费大量的时间和经历去截图排布,纯粹是一项非常费力也容易出错的工作,需要非常的认真和仔细,但说实话是一项非常机械无聊的工作。试想,谁愿意花上4个小时做那些无聊的截图和插图?所以我开始动手把所有的数据保存到excel中,使用最简单的VBA编写。

可能我们所有的工作任务就是为了解决一个问题,但从一个问题之中,进而扩展成一项非常有意义的工作。首先,我发现几乎所有的商用软件都没有一次性把所有的传涵结果展示的功能,其次,我发现我们分析问题之中必须check所有的传递函数。另外,市面上也没有一个软件具有分析传涵结果的功能。把人的分析问题的逻辑思路,固定在程序之中,不就是最佳的一条解决问题的思路么?所以,前前后后,断断续续的写了好几年,才形成现在近10000行的代码规模(不是吹牛,只能说明VBA的编程效率太低)。这个事情让我联想起Altair的NVHD模块,就是把国外公司多年的工程经验进行总结优化,得到一整套严密符合工程思维的做事流程的方法论,然后程序开发固定流程和方法,最后推广到全世界!整个业界的分析规范和逻辑方法都开始统一,钱就这样赚到手了,老外还是走在了我们前面啊!

虽然用VBA写的那套程序还是可以正常发挥作用,完全能满足使用需求,但也有一些不足。比如对4位的激励点和响应点的节点编号限定的太死,结果punch文件想要进行处理,还需要转成中间文件excel格式,这部操作多余,当然,还有其他的一些问题,总之,只能家用,不能外出见人!所以,我萌生了业余时间用最火的python另写一个的想法。

Python语言自2017年末开始接触,简单易上手,尤其是其强大的函数库,可以帮你解决了很多核心的难点问题,主要用于在人工智能、网络爬虫、数据处理等。如果要学的话,推荐《Python编程

从入门到实践》这本书。18年上半年实践了几个小程序之后,一直在思考这个程序的大致思路,逻辑算法以及实现路径。

首先,读取结果punch文件的算法,这个算法要够智能,必须满足NTF/VTF/IPI以及路躁等所有的文件结果,要够快速,必须在5s内读取完至少100M的文本文件。这部分已经完成。

其次,用户交互界面GUI的设计。这主要是选择哪种设计工具的问题,程序还算不很复杂,我选择自带的Tkinter了。

最后,功能构想。先前VBA能实现的功能必须全部保留,包括图表的生成(数据的可视化),用户自定义单位输出,任意增添目标曲线,所有图表的一次性生成展示,传涵结果的处理和分析以及最后报告的生成。

这其中最难取舍的就是关于数据的可视化部分。数据的可视化,就是把所有传涵类型的结果数据使用图表展现出来。一种是使用函数库xlswriter,把所有的图表和结果全部写入excel中,即如下这种:

另外一种即使用函数库matplotlib,完全不依赖第三方软件来查看软件:

但从我个人来讲,我希望我设计的软件完全独立,所有的结果文件均不依赖第三方软件,但依赖于matplotlib,很多的图表显示,功能设计又有一些限制。但xlswriter的可视化,编程效率也太低。不太适合较复杂的程序开发。所以,最后,设立一个投票,您认为那种可视化效果较好:

猜你喜欢

转载自blog.csdn.net/weixin_42209553/article/details/86507194