您的位置:网站首页 > Ansys教程

Visual Basic 调用ANSYS做后台计算的事项

时间:2010-11-14 12:54:01 来源:未知

利用VB 的shell命令,调用ansys.exe文件。 由于shell是异步调用,VB主程序不会等到ANSYS运行结束再执行下一个命令。关键就是要让主程序等待ansys结束以后,在执行其他程序。

引用三个API 过程

‘ 打开一个过程,返回句柄

Private Declare Function OpenProcess Lib "kernel32" _

(ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, _

ByVal dwProcessId As Long) As Long

 

‘ 等待过程

Private Declare Function WaitForSingleObject Lib "kernel32" _

(ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long

 

‘ 关闭过程句柄

Private Declare Function CloseHandle Lib "kernel32" _

(ByVal hObject As Long) As Long

 

 

具体的代码如下:

  100 pid = Shell(ANSYSEXEPATH & " -b  -i  C:ANSYSCAUansysinputlog.txt -o ANSYSDEBUG.txt", 0)

hProcess = OpenProcess(&H1F0FFF, 0, pid)

If hProcess <> 0 Then

         WaitForSingleObject hProcess, INFINITE

         Call CloseHandle(hProcess)

Else

         GoTo 100

End If

 

  怎么判断ansys 计算结束了呢?

    网上很多人采用ansys自带的ERROR文件来判断,但我觉得,由于error文件的存储路径随着不同的初始路径而变化,在代码的实现上,无法用一个绝对路径来表示,对软件的封装不合适,所以:

我在log输入文件的最后一行建立了一个文件(err.txt),如果该文件存在,说明ansys已经运行到最后,表示运行成功;如果没有生成,则说明,ansys在中途有退出,出现了错误。这个文件存储路径可以用绝对路径来表示,这样就不会出现引用问题了