目前的极简配置
注意事项
默认的属性配置中,大多采用环境变量的形式,方便不同设备通用
比如“常规”->“输出目录”为
$(SolutionDir)..\bin\win_msvc2017$(Platform)\$(Configuration)\
案例运行前的配置(除MwBatchSimPlugin)
设为release版本(节省内存,debug一般较大)
链接器->附加库目录
->添加如下路径->应用
E:\SDK\MWORKS SDK 2023a(vs2017)1\bin\win_msvc2017x64\lib
调试模式运行(直接点击绿色箭头)
以后可以直接点击"开始执行(不调试)"
MwBatchSimPlugin的额外配置
项目->属性->调试->命令、命令参数
E:\SDK\MWORKS SDK 2023a(vs2017)1\bin\win_msvc2017x64\Release\mworks.exe
MassSpringDamperApp代码解析
代码逻辑综述
main_window.h
InitUi()函数负责初始化用户界面。
LoadModelLibrary()函数用于加载模型库。
OpenModelFile()函数用于打开一个模型文件。
GetMwStrList()函数根据给定的名称检索一个字符串列表。
公共槽部分声明了两个槽: SlotStartSim() 和 SlotSimFinished()。
这些槽用于处理由用户操作或模拟完成所触发的事件。
私有部分包含了该类中使用的成员变量。
classMgr 指针用于管理应用程序中的类。
simCtrl指针指的是仿真控制对象。
forcePlotWin、sPlotWin和vPlotWin指针分别代表力、s - plot和v - plot的不同绘图窗口。
main.cpp
LoadChineseTranslateFile()函数用于加载应用程序的中文翻译文件。
在LoadChineseTranslateFile()里面,该函数根据应用程序的路径和翻译目录的位置来构建翻译文件的路径。
如果翻译目录不存在,该函数会提前返回。
然后,该函数过滤该目录中的文件,只包括.qm文件。
它遍历翻译文件的列表,为每个文件创建一个QTranslator对象。
每个翻译器都与它各自的翻译文件一起被加载,并使用qApp->installTranslator()安装在应用程序中。在main()函数中,一个QApplication对象被创建,以处理程序输入和事件处理。
一个MwClassManager类的实例被创建以管理SDK内核,Initialize()函数被调用以初始化SDK内核。
LoadChineseTranslateFile()函数被调用来加载中文翻译文件。
创建MainWindow类的一个实例,并将classMgr对象作为参数。
show()函数被调用以显示主窗口。
最后,app.exec()启动应用程序的事件循环,当应用程序退出时,app.exec()的返回值被作为退出代码返回。
main_window.cpp
首先,在构造函数 MainWindow::MainWindow(MwClassManager* class_mgr, QWidget* parent) 中,
通过传入一个指向 MwClassManager 类对象的指针 class_mgr 和一个父窗口对象的指针 parent,初始化了主窗口。
然后调用了 InitUi() 方法,该方法用于初始化用户界面和添加模拟图像。
接着创建了一个 MwSimControl 类对象 simCtrl,用于控制仿真过程。
最后,通过信号与槽的连接,将按钮的点击信号与 SlotStartSim() 槽函数关联,
将 simCtrl 的 SigSimStopped 信号与 SlotSimFinshed() 槽函数关联。接下来,通过 InitUi() 方法,对用户界面进行初始化。该方法完成了以下任务:
设置主窗口的标题为 “弹簧阻尼模型”。 添加曲线界面,并将其显示在主窗口中。 隐藏曲线界面的菜单栏和状态栏。 初始化原理图和模型图的显示。
在 LoadModelLibrary() 方法中,加载模型库,并根据加载是否成功在状态栏上显示相应的消息。在 OpenModelFile() 方法中,打开模型文件,并获取模型数据。 首先构建模型文件的路径, 然后通过
classMgr->GetMoHandler()->OpenFile() 方法打开模型文件。 如果打开成功,将在状态栏上显示
“弹簧阻尼模型加载成功” 的消息,并获取模型数据的键值 key。 接着,通过
classMgr->GetMoHandler()->GetParamValue() 方法检索参数值,并将其更新到相应的 UI 元素上。GetMwStrList() 方法用于将输入的字符串按照 “.” 进行分割,并返回分割后的字符串列表。
SlotStartSim() 方法是仿真开始的槽函数。 在仿真开始之前,先禁用窗口。 然后根据用户在界面上输入的参数值,修改模型的参数。
接着进行模型的编译和仿真设置的应用。 最后通过 simCtrl->StartSimulate()
方法开始仿真过程,并根据仿真是否成功在状态栏上显示相应的消息。SlotSimFinshed() 方法是仿真完成的槽函数。 在仿真完成后,启用窗口,并将仿真数据添加到曲线界面中显示。
整体逻辑为:用户打开主窗口,加载模型文件和模型库,设置模型参数,然后点击开始仿真按钮进行仿真。 仿真过程中,更新仿真数据并在曲线界面显示。
仿真完成后,允许用户再次修改参数并进行下一次仿真。