我想看一级黄色大片_久久亚洲国产精品一区二区_久久精品免视看国产明星_91久久青青青国产免费

您的位置:網(wǎng)站首頁(yè) > Ansys教程

Visual Basic 調(diào)用ANSYS做后臺(tái)計(jì)算的事項(xiàng)

時(shí)間:2010-11-14 12:54:01 來源:未知

利用VB 的shell命令,調(diào)用ansys.exe文件。 由于shell是異步調(diào)用,VB主程序不會(huì)等到ANSYS運(yùn)行結(jié)束再執(zhí)行下一個(gè)命令。關(guān)鍵就是要讓主程序等待ansys結(jié)束以后,在執(zhí)行其他程序。

引用三個(gè)API 過程

‘ 打開一個(gè)過程,返回句柄

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

 

‘ 關(guān)閉過程句柄

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 計(jì)算結(jié)束了呢?

    網(wǎng)上很多人采用ansys自帶的ERROR文件來判斷,但我覺得,由于error文件的存儲(chǔ)路徑隨著不同的初始路徑而變化,在代碼的實(shí)現(xiàn)上,無法用一個(gè)絕對(duì)路徑來表示,對(duì)軟件的封裝不合適,所以:

我在log輸入文件的最后一行建立了一個(gè)文件(err.txt),如果該文件存在,說明ansys已經(jīng)運(yùn)行到最后,表示運(yùn)行成功;如果沒有生成,則說明,ansys在中途有退出,出現(xiàn)了錯(cuò)誤。這個(gè)文件存儲(chǔ)路徑可以用絕對(duì)路徑來表示,這樣就不會(huì)出現(xiàn)引用問題了