Denzel 发表于 2008-5-29 13:35

[原创]用delphi以批处理(batch)方式调用ansys后台运行,并读取命令流文件计算

我们的想法是用delphi做的窗口界面,以批处理(batch)方式调用ansys在后台读取命令流进行计算。本文的第一部分实现后客户能够看到调用ansys的GUI界面,第二部分才能真正实现ansys的后台运行。

Part1
目标:把ansys程序调起到GUI模式下,读入命令流。
方法:使用WinExec()函数,并修改ansys修改初始化文件。
步骤:
第一步
在delphi中建立一个button1后在命令窗口中添加如下语句
begin
WinExec('C:\Program Files\Ansys Inc\v90\ANSYS\bin\intel\ANSYS90.exe',0);
end;
单引号是必须的,单引号内是调用的程序。如果单引号内文件完整路径名不用双引号再扩起来,那么在路径与单引号之间不要有空格,否则调不起来;如果单引号内文件完整路径名用双引号再扩起来,单引号和双引号之间有无空个无所谓。

第二步
将命令流文件command0.mac放在这个路径下C:\Program Files\Ansys Inc\v90\ANSYS\apdl,并在同一文件夹下找到start90.ans,在最下面添加宏文件所在路径command0.mac,以初始化的方式调用宏文件。

第三步
编译运行delphi程序,会调起ansys,能看到其画图过程。


Part2
目标:有的时候需要用delphi做用户界面,以批处理(batch)方式调用ansys在后台做计算。
方法:使用winexec(pchar(...),sw_hide)函数
批处理方式涉及到参数问题,工作路径、输入文件名是必不可少的参数,以上述方式不能解决这一问题。这时要在winexec里加putchar,在delphi中使用winexec(pchar(...),sw_hide)执行一个DOS命令,pchar内即为dos命令流,SW_SHOW表示要显示窗体,SW_HIDE表示不显示窗体。命令如下:
Winexec(pchar('C:\Program Files\Ansys Inc\v90\ANSYS\bin\intel\ANSYS90.exe -b
-dir "D:\shi xiao dong" -j sxd -s read -l en-us -i "C:\Program Files\Ansys Inc\v90\ANSYS\apdl\command0.bat" -o file.out'),sw_show);
ANSYS90.exe后面每一个参数的意义看一看ansys中这一节“Chapter 3. Running the ANSYS Program”。
如果是要自己填单引号内的参数要注意一下几点:
(1)-i和-o两个参数不要少,否则delphi出错:“invalid I/O redirection, specify –I inputfile –o outputfile.”;
(2)HELP中没有说调用的命令流文件路径的问题。-i和-dir后面这个被调用的命令流文件名要有完整的路径,要双引号;
(3)建议在给客户安装好ansys后,将调用的命令流文件放在c盘apdl文件夹下,这样编delphi时就已经把命令流文件路径编进去。

如果不想自己填写单引号里的内容,我提供一种获得它简便方法:


第一步
在simulation environment选择batch模式。



第二步
在file management中选择好工作路径、工作名、读取的命令流文件地址




第三步在上方的菜单栏里选中tools->display command line

第四步选中显示的命令,将其粘贴进单引号内

[ 本帖最后由 Denzel 于 2008-5-29 13:38 编辑 ]

xforever 发表于 2011-10-12 20:07

您好,有一个问题想向您请教一下。(本人刚接触ANSYS,希望您能给予帮助)
在 Part2 中的第 8 行有这么一句内容“ANSYS90.exe后面每一个参数的意义看一看ansys中这一节“Chapter 3. Running the ANSYS Program”。”,请问 “Chapter 3. Running the ANSYS Program” 是哪里的内容啊?
页: [1]
查看完整版本: [原创]用delphi以批处理(batch)方式调用ansys后台运行,并读取命令流文件计算