在C盘-用户路径下,创建acar.cmd 文件, 并写入命令,即可实现启动自运行命令

示例
每次从开始菜单点Adams Car图标,加载完插件和数据库要等半分钟,跑完一个工况关了再开下一个,一天下来光在启动画面上耗的时间就够泡好几杯咖啡了。后来在论坛上看到有人用批处理跑整车工况,才发现启动这一步能省。
命令行启动Adams Car用的是mdi.bat这个批处理入口,在安装目录的common下面,比如C:/Program Files/MSC.Software/Adams/2023_3/common/mdi.bat,后面跟的参数决定进哪个模块、哪个界面、跑什么文件。acar是进Car模块,ru-st是run standard interface,b是batch批处理模式,跟默认的i是interactive交互模式相对,b模式下不弹界面,跑完自动退,这是批处理的关键。完整的命令长这样:mdi.bat acar ru-st b example.cmd exit,最后的exit让Adams跑完脚本之后直接关掉进程,不留在后台等用户操作。
命令行启动的时候.acar.cfg加载的是哪个是个容易翻车的地方。从Python或者MATLAB里用subprocess调mdi.bat,如果环境变量HOME指向的不是C:\Users\用户名,而是别的路径,比如Python自己的settings目录,Adams就去那个目录下面找.acar.cfg,找到的是默认配置,自建的数据库和自定义的启动设置全都不加载。解决方法要么在Python脚本里显式设置HOME=C:\Users\用户名,要么把.acar.cfg拷到HOME指向的那个目录里,两个地方都放一份最保险。
C盘用户目录下面建一个acar.cmd文件,里面写入启动命令,以后双击就能自运行,省得每次开cmd敲路径。acar.cmd里放的不是mdi.bat那一长串,而是直接写需要自动执行的CMD命令,Adams启动的时候读这个文件,按顺序执行里面的内容。文件里的命令跟正常在Adams命令行里敲的一模一样,比如file command read把模型文件读进来,simulate static提交静力学分析,file command write把结果写出去,最后exit退出。acar.cmd的执行顺序在acarBS.cmd和acarAS.cmd之间,是Car启动脚本链里的一环,不放心的可以看看安装目录下的这几个cmd文件了解完整流程。
.acar.cfg文件里DATABASE和DATABASE_ORDER这两段决定了启动时加载哪些数据库。DATABASE private后面跟用户数据库的完整路径,D:\private.cdb这种,如果装的时候没改过,默认在C:\Users\用户名\private.cdb。DATABASE_ORDER控制搜索顺序,private排最前面的话自己建的模板和子系统优先被加载,不用动共享库里的文件。DEFAULT_WRITE_DB指定默认写入数据库,设成private新建的模型就存到用户库里,不会把共享库写乱。CAR的启动命令里如果用了ru-st但没加载到自定义数据库,多半就是.acar.cfg没被读到,acar.log里搜一下acar.cfg关键字看看加载的是哪个路径的配置文件。
命令行启动的另一种场景是跟MATLAB或者Python联合跑优化。MATLAB用system()调mdi.bat的时候,MATLAB自己的进程环境变量不会自动传给子进程,HOME可能指向别的地方,Adam读不到正确的.acar.cfg。最稳的办法是在MATLAB脚本里先setenv('HOME','C:\Users\用户名')再调mdi.bat,或者在mdi.bat前面加一个set HOME=C:\Users\用户名。Python里用subprocess.run()也一样,env参数里显式把HOME设对。
如果不想每次启动都重新加载模型,可以用command_server做远程控制。在Adams Car会话里先正常打开模型,然后在命令行里敲command_server start,Adams进入监听模式,外部程序通过TCP/IP连到localhost的5002端口发命令。发过去的命令就是普通的CMD字符串,比如cmd marker modify marker_name=mar_13333 vx=0,Adams执行完返回结果。这样一轮优化里Adams只启动一次,后面几十上百次迭代全通过socket通信完成,省下来的启动时间很可观。不过这个功能在Linux上有个报错说command_server不是合法关键字,Windows上正常,Linux用户得注意。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删