版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、-作者xxxx-日期xxxxANSYS二次開發(fā)【精品文檔】ANSYS二次開發(fā)手冊UIDL解析APDL解析目錄第二章 解析UIDL篇1結(jié)識UIDL1看看UIDL的模樣12.3 Ansys調(diào)用UIDL的過程4第三章UIDL實例解析一6問題描述:6環(huán)境準(zhǔn)備:6添加菜單:7結(jié)束語9第四章UIDL實例解析二10問題描述:10環(huán)境準(zhǔn)備及構(gòu)建對話框:10參數(shù)提取雜談12結(jié)束語13附錄13第五章UIDL實例解析三15問題描述15環(huán)境準(zhǔn)備及構(gòu)建聯(lián)機幫助:15幾點說明185.4 結(jié)束語19第六章 解析APDL206.1 熟悉新朋友APDL206.2 二次開發(fā)工具之間的比較206.3 結(jié)束語20第七章 APDL綜合
2、實例217.1 問題說明217.2 解題思想227.3 構(gòu)建步驟227.4 幾點說明267.5 結(jié)束語26【精品文檔】第二章 解析UIDL篇UIDL是什么?Ansys二次開放語言的一種。OK,那么它能帶給我們什么?很多很多,如果你想讓你在Ansys中制作的用戶界面具有專業(yè)水準(zhǔn)的話,請來結(jié)識一下我們的UIDL把。l 全稱: UIDL的全名是User Interface Design Language,是Ansys中二次開發(fā)工具方面的三大金剛之一。GUI方面幾乎全部的二次開發(fā)功能都將由它運籌帷幄。l 功用:n 組織我們自己強大的菜單系統(tǒng)。想象一下我們在Ansys中也能輕松做出可以和VC,VB之類主
3、流GUI開發(fā)工具媲美的菜單響應(yīng)效果,Ansys的世界將是多么的親切、友好。n 構(gòu)建功能繁復(fù)的對話框。Ansys中美觀易用的ContactWizard對話框級聯(lián)界面一定讓你印象很深把,有了它,即使是最菜鳥的門外漢也能構(gòu)建一流的工程算例,Ansys5.7中的DesignSpace應(yīng)該就是無可爭辯的例證之一。雖然從UNIX內(nèi)核上講(Windows下的東西是Ansys的后期移植,很多技術(shù)還不成熟,這里就不加討論了),它們多構(gòu)建在繁復(fù)的TCL編程基礎(chǔ)上,但我們利用強大的UIDL工具,也能輕松架構(gòu)起我們自己的實用對話框向?qū)А 建立自己的聯(lián)機幫助Ansys中的聯(lián)機幫助(尤其是UNIX下的搜索引擎)非常實用
4、,可以說是我所接觸過許多有限元平臺中最為好用的幾種幫助平臺之一。UNIX下的關(guān)鍵字查詢簡直是帥呆了,想構(gòu)建自己完善的幫助系統(tǒng)嗎?UIDL同樣是這方面不可或缺的理想開發(fā)工具。認(rèn)識了這位Ansys二次開發(fā)中的大俠了巴,現(xiàn)在我們就來進(jìn)一步和它交流交流,把我們的感性認(rèn)識上升到理性層次中。2.2.1 UIDL控制文件總結(jié)構(gòu)一個完整的UIDL控制文件大致如一下結(jié)構(gòu):控制文件頭結(jié)構(gòu)塊結(jié)構(gòu)說明:任何一個UIDL控制文件開頭都是一個控制文件頭,其后接一個或多個結(jié)構(gòu)塊結(jié)構(gòu)。為避免鄙人在這里滔滔不絕,而讀者在臺下不知所云的尷尬,我們在以后的講解中都將從一些典型結(jié)構(gòu)例子入手,剖析清楚其各個部分的詳細(xì)結(jié)構(gòu),當(dāng)然這里從例
5、子入手的剖析手段只能做到拋磚引玉,要想熟悉的了解各個命令的詳細(xì)信息,請參閱UIDL手冊:一個典型的控制文件頭如下所示:-:I 0, 0, 0:!-幾點說明:1. 控制文件頭第一行必須有:F filename,filename是UIDL控制文件名。2. 控制文件頭第二行必須有:D description,description是對本文件的一些說明。注意到description中有時能帶%E%擴展,但只有當(dāng)你擁有類似SCCS的系統(tǒng)(含一源碼控制系統(tǒng)),ANSYS才能 有效的進(jìn)行%E%擴展,否則請手動把這些說明替代%E%寫入description中。3. 控制文件第三行必須有:I 0, 0, 0,各
6、個0必須出現(xiàn)在第9、18、27行。用戶只需要在這些位置填入0,ANSYS在調(diào)用該文件后會自動在這些位置填入GUI界面的位置信息。4. :!這一行通常是用來在UIDL控制文件中做分隔標(biāo)記的,可有可無,這里用來分隔控制文件頭和結(jié)構(gòu)塊結(jié)構(gòu),建議在控制文件頭和結(jié)構(gòu)文件塊之間,以及各個控制文件塊之間都加一行:!加以間隔。結(jié)構(gòu)塊結(jié)構(gòu)是一個UIDL控制文件的核心,它涵蓋了菜單信息,命令信息,以及幫助文件信息,按照其不同的類型可劃分為菜單結(jié)構(gòu)塊,命令結(jié)構(gòu)塊和幫助結(jié)構(gòu)塊。一般來說函數(shù)結(jié)構(gòu)塊還都伴隨著構(gòu)建一個對話框結(jié)構(gòu)。1. 結(jié)構(gòu)塊結(jié)構(gòu)基本框架麻雀雖小,五臟俱全,讓我們先看一看結(jié)構(gòu)塊的基本結(jié)構(gòu):頭部分?jǐn)?shù)據(jù)控制部分
7、尾部分2. 例子說明這里基于一個菜單結(jié)構(gòu)塊描述一下這些基本結(jié)構(gòu)的細(xì)節(jié),讓大家有一個感性認(rèn)識:-頭部分:N Men_Add:S 0, 0, 0:T Menu:A Add:C :D Add數(shù)據(jù)控制部分Fnc_VADDFnc_AADDFnc_LCOMB尾部分:E END分隔:!-幾點說明:l 頭部分u :N行定義一唯一的結(jié)構(gòu)控制塊名。u :S行定義結(jié)構(gòu)控制塊位置信息。用戶只需在第9、16、23行輸入0即可,ANSYS在調(diào)用該文件中將自動為這些域填入合適的值。u :T行定義該結(jié)構(gòu)控制塊的類型,可選類型有Menu、Cmd或者Help。u :A行對不同類型的結(jié)構(gòu)控制塊有不同的功用,在Menu塊中通常用來定
8、義出現(xiàn)在GUI菜單上的名字。u :D行通常用來描述該結(jié)構(gòu)塊的信息。u 頭部分中還可以帶許多其他命令,例如ANSYS內(nèi)部命令等,這里就不詳述了,我們將在例子中看到其具體用法。l 數(shù)據(jù)控制部分?jǐn)?shù)據(jù)控制部分根據(jù)不同的結(jié)構(gòu)控制塊有不同的寫法,但必須至少有一個數(shù)據(jù)控制行。例如在菜單結(jié)構(gòu)塊中我們可以在其中使用Men_String來調(diào)用其他菜單項,還可以使用Fnc_String命令調(diào)用一些命令。String對應(yīng)于特定的菜單名部分或者命令名部分。其他具體細(xì)節(jié)這里就不詳述了。我們將在具體實例中看到他們是如何構(gòu)建實現(xiàn)的。l 尾部分:E END標(biāo)志著一個結(jié)構(gòu)塊的結(jié)束。l 分隔(可選)一般說來,我們將在結(jié)構(gòu)塊和結(jié)構(gòu)塊
9、之間加入:!來間隔(可選)。2.3 Ansys調(diào)用UIDL的過程上面我們已經(jīng)熟悉了整個UIDL控制文件的結(jié)構(gòu),可惜我們還是空有武器,鮮有用武之地,Ansys到底是怎么使用UIDL的呢?搞清楚這一點,我們才能夠游刃有余的控制整個GUI界面的定制,在這部分里我們將描述一下Ansys控制UIDL文件的過程。下面的一些設(shè)置情況都是基于工作站版本的,其他版本的ANSYS的設(shè)置處理也類似,這里就不加贅述了。ANSYS在調(diào)用GUI界面時會自動調(diào)用menulist55.ans文件,該文件中描述了UIDL前處理器到哪里去尋找UIDL控制文件。ANSYS在其docu/目錄中有一個基本的menulist55.ans
10、文件和對應(yīng)的基本UIDL控制文件。默認(rèn)情況下,ANSYS就調(diào)用這一menulist55.ans文件。下面是這一基本menulist55.ans文件的內(nèi)容:-可見,正是因為這一menulist55.ans文件的指定,ANSYS系統(tǒng)將默認(rèn)調(diào)用對應(yīng)的基本UIDL控制文件。由此,我們可以產(chǎn)生一個想法:只要我們改變這一基本menulist55.ans中的指定,就能使用我們自己的UIDL控制文件。但其實我們有更加好的方法,一般來說我們不建議改變系統(tǒng)ansys55目錄里任何文件內(nèi)容,以避免不必要的失誤。ANSYS本身在調(diào)用menulist55.ans文件的方式上就提供了便于進(jìn)行UIDL開發(fā)的機制:通常ANS
11、YS按照以下順序?qū)ふ襪enulist55.ans文件: 用戶工作目錄(可以在Interactive啟動方式中設(shè)定)-用戶根目錄-/ansys/docu目錄,可見只要我們在用戶工作目錄中編輯自己的menulist55.ans文件,ANSYS將優(yōu)先使用我們自己的menulist55.ans文件。如果生成了自己的UIDL控制文件,并在我們自己的menulist55.ans文件中指向它們,我們就能實現(xiàn)對UIDL的全控制。以后的實例中我們將看到通用的UIDL開發(fā)過程。最后要指出的是,UIDL前處理器在處理UIDL控制文件后,將自動在:I行(控制文件頭部分)和:S行(結(jié)構(gòu)塊的頭部分)中填入相應(yīng)的位置信息,
12、并在整個文件最后寫入一系列:X行(索引行)。第三章UIDL實例解析一3.1問題描述:任何一個級聯(lián)菜單的最底級總是調(diào)用命令,在這個實例里我們試著添加一個菜單聯(lián)結(jié),指向一個我們自己構(gòu)建的命令。這個命令的構(gòu)建方式我們將在實例二中給出。為方便起見,我們將在主菜單下添加一個MyProject菜單項,調(diào)用MyProject子菜單。MyProject子菜單中含有一個DoProject命令,該命令對一個實際問題進(jìn)行優(yōu)化設(shè)計,我們將在以后的實例中實現(xiàn)它。3.2環(huán)境準(zhǔn)備:1. 配置好ANSYS環(huán)境,這里略過。2. 在當(dāng)前用戶目錄下建立一個子目錄UIDL-%mkdir /UIDL-3. 拷貝相應(yīng)文件進(jìn)入該子目錄-%
13、cp /ansys55/docu/menulist55.ans .%cp /ansys55/docu/UIMENU.GRN .%cp /ansys55/docu/UIFUNC1.GRN .%cp /ansys55/docu/UIFUNC2.GRN .-4.前面我們已經(jīng)看到了這個基本menulist55.ans的內(nèi)容,這里我們想使用自己的UIDL控制文件,而不用默認(rèn)目錄/ansys55/docu下的UIDL控制文件,因此我們把該文件修改成如下內(nèi)容:-5. 運行測試是不是能夠正常啟動ANSYS以Interactive方式啟動,設(shè)置工作目錄為剛剛創(chuàng)建的UIDL目錄,并設(shè)置初始工作名為uidl,啟動A
14、NSYS,這是ANSYS的GUI界面應(yīng)該和默認(rèn)情況下啟動,只不過不同的是調(diào)用的UIDL控制文件是當(dāng)前UIDL目錄下的了(只不過兩者內(nèi)容相同而已)。3.3添加菜單:ANSYS的浮動根菜單名字叫MenuRoot,我們將在根菜單下添加一個菜單項MyProject,點擊這個菜單項自動調(diào)用MyProject子菜單。MyProject子菜單中我們將放入一個命令DoProject,點擊這個命令,將進(jìn)入我們的問題處理。1. 定制DoProject命令這里我們把DoProject命令的定義寫入UIFUNC2.GRN中,編輯UIFUNC2.GRN文件,在其中兩個結(jié)構(gòu)塊之間加入一個DoProject命令結(jié)構(gòu)塊:-:
15、N Fnc_DoProject:S 86, 73, 6:T Cmd:A DoProject:D Lets goInp_P:E END:!-當(dāng)然這樣一個結(jié)構(gòu)塊什么也不干,只是一個虛塊,在以后的實例中我們將完成這個命令的功能。2. 定制MyProject子菜單這一步中我們把MyProject子菜單的定制寫入UIMENU.GRN中,編輯UIMENU。GRN文件,在其中兩個結(jié)構(gòu)塊之間加入一個MyProject菜單結(jié)構(gòu)塊:-:N Men_MyProject:S 120, 88, 25:T Menu:A MyProject:D Optimize the structure-Optimize-Fnc_DoP
16、roject:E END:!-這里-Optimize-是出現(xiàn)在菜單上的靜態(tài)文本,Ansys對任何尋找不到定義的調(diào)用均當(dāng)做靜態(tài)文本處理。如果某子菜單中只有靜態(tài)文本的話,Ansys一般情況下將不顯示這個子菜單。3. 將MyProject子菜單加到根菜單下這里我們再次編輯UIMENU.GRN文件,在MenuRoot菜單結(jié)構(gòu)塊中添加到MyProject的鏈接。最后UIMENU.GRN的MenuRoot菜單結(jié)構(gòu)塊定義類似如下寫法:-:N MenuRoot:S 433, 76, 350:T Menu:A Main Menu:D ANSYS ROOT MENUMen_UVBA_Main_T1Men_UVBA
17、_Main_T2Men_UVBA_Main_T3Fnc_PreferencesSep_Men_PreprocMen_SolutionMen_GenlPostMen_TimePostSep_Men_MyProjectSep_K_LN(alpha)Men_DesOpt-可見我們把Men_MyProject子菜單鏈接加入到基于時間歷程后處理的菜單項后。當(dāng)我們重新啟動ANSYS時看到的主菜單應(yīng)該如下圖(a)所示,點擊MyProject菜單項將出現(xiàn)圖(b)的情形。(b)(a)上面我們看到了怎么在浮動菜單中簡單添加自己定制子菜單的方法,但這個時候我們點擊DoProject命令什么也不發(fā)生,因為我們在命令定
18、制中就是這么設(shè)定的。以后我們將完善這個命令,讓它逐漸強大起來。大家也許會問,既然定義的這個命令是空命令,那能不能索性不定義呢。答案應(yīng)該是不可以,大家可以試一試刪去UIFUNC2.GRN中DoProject函數(shù)的定義,當(dāng)你點擊根菜單中的MyProject菜單鏈接,MyProject應(yīng)該都不會彈出。第四章UIDL實例解析二(a)圖1(b)Hr4.1問題描述: 如圖1(a)一所示,一帶孔薄板,長4000mm,寬2000mm,頂部中心部分1800mm處承受42MP的壓力,左右兩個長圓孔中心分別踞四周1000mm,長圓孔的具體形式如圖1(b)所示,上下分別為半圓,中部用直線銜接。這里假設(shè)長圓長軸與水平方
19、向夾角為。為了使得孔邊緣應(yīng)力集中最小,這里擬調(diào)整的大?。?/2, /2),以便在固定的H情況下達(dá)到長圓孔周圍應(yīng)力集中最小。本章中,我們將僅僅限于UIDL部分完成這個問題,即實現(xiàn)如下功能:通過菜單和對話框,用戶輸入?yún)?shù)H的大小,我們讓Ansys自動生產(chǎn)整個分析模型。4.2環(huán)境準(zhǔn)備及構(gòu)建對話框:1. 基于上一個實驗的環(huán)境,在/UIDL目錄下構(gòu)建一個輸入腳本,這里我們權(quán)且稱其為create.inp,該腳本能針對固定的r、H、來構(gòu)建出分析模型。Create.inp腳本文件可以參看附錄。圖22. 在文件UIFUNC2.GRN中任意兩個結(jié)構(gòu)塊之間添加函數(shù)DoProject的定義:-:N Fnc_DoPro
20、ject:S 0, 0, 0:T Command:A Optimize My Project:D Please Input the Custom Information:C )*SET,My_H,150Inp_NoApplyCmd_)*Cset,1,1 Fld_0 Typ_Lab Prm_Custom the Geographic Information Fld_2 Prm_Please Input the H for Analysis(100200)圖3 Typ_INT Def_*PAR(MY_H)Cmd_)/GoCmd_)finiCmd_)/clearCmd_)*GET,My_H,CPAR
21、,1Cmd_)/Input,create,inp:E END:!-這里我們可以清晰的看到,在命令結(jié)構(gòu)塊中,:A命令后的說明將出現(xiàn)在調(diào)用該函數(shù)的菜單項中,如圖2所示,:D命令后的說明將出現(xiàn)在我們定制的對話框標(biāo)題上。幾點說明:u 這里我們定制了一個對話框(無拾取點線等的功能),在任何一個自定義的對話框中,至少應(yīng)該有一個Typ_命令,但不能有Inp_P命令。u 本對話框由于比較簡單,不需要Apply按鈕(該按鈕多用來處理復(fù)雜輸入,動態(tài)刷新功能),因此我們設(shè)定為 Inp_NoApply命令。u 下面的Fld_0,F(xiàn)ld_2什么的都是一個個對話框域。不同的數(shù)據(jù)輸入域,比方說:輸入框、多選框、列表框的都必
22、須有獨立的域號,象本例中一個數(shù)值輸入框域代號為2。但所有靜態(tài)文本都可以寫在Fld_0域內(nèi),因為不會出現(xiàn)我們調(diào)用時的沖突。這里,我們的Fld_0域內(nèi)是Typ_Lab的靜態(tài)文本,內(nèi)容書寫在Prm_后。Fld_2域是一個整數(shù)輸入對話框域(Typ_INT),前面Prm_后有一段文字說明,并設(shè)定默認(rèn)值(Def_)。u 下面的幾行Cmd_)后跟的都是針對這一數(shù)值輸入域處理的Ansys命令,主要功能是先清數(shù)據(jù)庫,再取到域2內(nèi)用戶輸入的H參數(shù)值,然后進(jìn)行基于該參數(shù)的模型構(gòu)建。3. 輸出結(jié)果:這是=/4,H150情況下自動生成的幾何模型。雖然例子比較簡單,但我們從中可以掌握一種GUI定制參數(shù)并運用到腳本建模中的
23、技巧,掌握了這種技巧,我們就不難輕松的構(gòu)建各種更加復(fù)雜的模型。上面我們看到了一種比較簡單有效的對話框參數(shù)提取、傳遞的技巧,其實在Ansys中參數(shù)的提取有好些方法。通常的用戶命令中(比方說設(shè)定實常數(shù)等),Ansys中由于有固定的命令與其對應(yīng),在GUI函數(shù)命令中Ansys是這樣定制的,在對話框起始處給出一個Cmd_R命令(這里以提取實常數(shù)命令R為例),其后對應(yīng)的Fld_2、Fld_3等域Ansys將自動拾取之并對應(yīng)R命令的第二個參數(shù)、第三個參數(shù)等。但我們初學(xué)二次開發(fā)時不可能擁有自己的命令,因此這里我們棄而不用。等以后我們學(xué)習(xí)了UPF二次開發(fā)工具,能夠定制自己的命令后,我們再來回顧一下這種參數(shù)話方法
24、。這里我們使用的是CSET命令和CPAR命令,也是一種比較簡潔有效的方式。命令結(jié)構(gòu)塊頭部分我們用:C )*SET,My_H,150命令在環(huán)境中設(shè)定一變量My_H,初值為150,并用Def_*PAR(MY_H)命令指定為數(shù)值域的初值。然后用Cmd_)*CSET,1,1命令把第一個數(shù)值域的內(nèi)容指定存儲到*CSET命令對應(yīng)的一矢量數(shù)值中,其次在數(shù)值域中指定用Cmd_)*GET,My_H,CPAR,1命令讓參數(shù)My_H再把用戶輸入的數(shù)值域內(nèi)容從該矢量數(shù)組中讀回來,這樣我們就有了一個用戶輸入的參數(shù)值My_H,最后就可以直接調(diào)用腳本文件,生成需要得到的參數(shù)化建模結(jié)果。在UIFUNC2.GRN中我們還可以看
25、到其他一些參數(shù)化提取方式,比如說利用系統(tǒng)參數(shù)_z1_z9,用命令*GET,PAR,CMD,0,FIELD,2來拾取命令中域2中的內(nèi)容到自己設(shè)定的參數(shù)中。以后我們可以對各種方法都練練手,這里就不再贅述了。上面我們用UIDL對話框的技術(shù)輕松實現(xiàn)了有用戶化界面的參數(shù)化建模,在以后的例子中我們將對這個實例進(jìn)行完善,并融入APDL和UPF的內(nèi)容。附錄create.inp清單:-!This is a script which can create the modal with a parameter sita.!Clear the workspace!fini!/clear,nostart!Setup t
26、he ParametersPI=4*atan(1)sita=PI/4r=200!H=150H=My_H !Customize the Material Propertykeyw,pr_struc,1/prep7et,1,shell63r,1,120,120,120,120!Modeling!Create plate k,1,0,0k,2,2000,0k,3,2000,2000k,4,0,2000k,5,1800,0k,6,1000,1000l,1,5l,5,2l,2,3l,3,4l,4,1al,1,2,3,4,5!Create hole!Create my coordinatek,7,1000
27、+H*cos(sita),1000+H*sin(sita)k,10,1000+H*cos(sita),1000+H*sin(sita),100k,8,1000+r*cos(sita+PI/2),1000+r*sin(sita+PI/2)cskp,11,0,6,7,8csys,11!Create Holek,9,H,rl,7,9l,7,6adrag,6,7arotat,6,7,10,-90arsys,y,2,3,1arsym,x,2,5,1aadd,2,3,4,5,6,7,8,9asba,1,10-第五章UIDL實例解析三本章我們我們將描述UIDL的最后一個功能構(gòu)建我們自己的聯(lián)機幫助文檔。誠然聯(lián)
28、機幫助在一般的開發(fā)過程中有點無足輕重,但如果你想讓你的工作更加完善、更加專業(yè)的話,建立起自己強大的幫助系統(tǒng)是必不可少的,這一個實例中我們將對UIDL實例二構(gòu)建我們自己的聯(lián)機幫助文檔。構(gòu)建完聯(lián)機幫助文檔后,在菜單中點擊DoProject菜單項將顯示如下對話框:看到了把,現(xiàn)在這個對話框中增加了一個Help按鈕,點擊這個Help按鈕看看效果把,顯示結(jié)果如下:這里的文字可以任意,輕松寫入任何泥想寫入的幫助信息巴。下面我們就詳細(xì)的說明如何建立這樣的一個聯(lián)機幫助。5.2環(huán)境準(zhǔn)備及構(gòu)建聯(lián)機幫助:Ansys中的聯(lián)機幫助一般有三種形式:ASCII形式,ZBitmap形式,PostScript形式。PostScr
29、ipt形式的聯(lián)機幫助多是在Unix下和打印功能有關(guān)的,我們這里就不加詳述了。ZBitmap形式的聯(lián)機文檔應(yīng)該是功能最強大的,應(yīng)該類似于Windows下的PDF格式幫助文檔把,可以在幫助文檔中有圖形或者文字的超級鏈接,構(gòu)建這樣的幫助文件我們得需要構(gòu)建744pixels925pixels的XWD格式圖像,xwd格式是UNIX中用xwd工具抓圖所得的一種圖像格式,可惜的是這里我們嶄時缺少這樣能夠生成固定尺寸格式的XWD圖像文件的工具,所以這里我們也不準(zhǔn)備仔細(xì)對它的構(gòu)建方法進(jìn)行描述(你可以試驗用任意尺寸的XWD格式構(gòu)建ZBitmap格式的幫助文檔,正常情況下Ansys系統(tǒng)應(yīng)該不加顯示任何圖片)。這里我
30、們在上一個實例的基礎(chǔ)上描述一下如何建立ASCII形式的幫助文檔。1. 在Unix下,構(gòu)建你的幫助文檔文字信息,把它存成文件hlp_other2:ZengP Work GroupThis Project is designed by Heling.Enjoy it!2. 檢查hlp_other2文件字節(jié)數(shù):Unix下可以用命令ls hlp_other2或者wc c hlp_other2命令查看該文件的字節(jié)數(shù),這里得出的字節(jié)數(shù)為633. 構(gòu)建幫助文件的數(shù)據(jù)控制部分,把它存成hlp_other1Customized HelpHlp_Hlp_ASCII 63END_OF_HYPERLINKS這里的數(shù)據(jù)
31、控制部分是有固定格式的,第一行表示幫助對話框的標(biāo)題。第二行和第三行是描述該幫助文件的前端鏈接和后端鏈接。這里由于是我們自己定義的幫助文檔,沒有前端鏈接和后端鏈接,因此我們都把它寫成Hlp_就可以了,第四行是描述幫助文件格式、字節(jié)信息的,這里我們是ASCII格式,字節(jié)數(shù)是上一步中得到的字節(jié)數(shù)63(對ZBitmap格式后面需要提供壓縮后字節(jié)數(shù)和壓縮前字節(jié)數(shù)兩個信息,具體做法請自己參看UIDL幫助手冊)。以下到最后一行的END_OF_HYPERLINKS之間是定義幫助文檔之間超級鏈接的,由于我們這里是做ASCII的幫助信息,不是ZBitmap格式的,因此沒有任何超級鏈接需要定義。4. 把hlp_ot
32、her1和hlp_other2合成一個文件hlp_other%cat hlp_other1 hlp_other2 hlp_other5. 檢查一下文件hlp_other的字節(jié)數(shù)%wc c hlp_other這個例子中得到的字節(jié)數(shù)是1166. 構(gòu)建幫助文件的頭信息,把它存儲為head_other:N Hlp_0_Contents:S 0, 0, 0 :T HELP 1167. 構(gòu)建幫助文件尾信息,把它存儲為end:E End8. 構(gòu)建幫助文件的控制文件頭,把它存儲為control_other:D Modified on 1/17:I 0, 0, 0:!9.10. 把我們構(gòu)建好的幫助文件OTHER
33、.HLP加入menulist55.ans中去。最后menulist55.ans顯示內(nèi)容如下:11. 在我們的函數(shù)定義DoProject中加入聯(lián)機幫助信息.編輯UIFUNC2.GRN中的DoProject函數(shù)定義,由于我們定制的幫助文件名為Hlp_0_Contents,我們把它加入到函數(shù)定義中去,編輯完后該函數(shù)定義內(nèi)容結(jié)果如下::N Fnc_DoProject:S 396, 147, 242:T Command:A Optimize my Project :D Please Input Custom Information:C )*Set,My_H,150:H Hlp_0_ContentsInp
34、_NoApplyCmd_)*Cset,1,1 Fld_0 Typ_Lab Prm_Custom the Geographic Information Fld_2 Prm_Please Input the H for Analysis(100200) Typ_INT Def_*PAR(My_H)Cmd_)/GoCmd_)finiCmd_)/clearCmd_)*GET,My_H,CPAR,1Cmd_)/Input,create,inp:E END:!12. 萬事具備,測試一下你自己構(gòu)建的幫助文檔把。從前面可以看到,一個幫助文件一般有文件控制頭和若干幫助文件結(jié)構(gòu)塊組成,對幫助文件結(jié)構(gòu)塊來說,其包含
35、四個部分:頭部分,數(shù)據(jù)控制部分,幫助內(nèi)容部分和尾部分。與函數(shù)說明不同的是它增加了幫助內(nèi)容部分,這里存放各種格式的幫助文檔,其次它需要提供許多幫助內(nèi)容部分的字節(jié)信息。所以構(gòu)建幫助文件的時候一般都是分塊構(gòu)建,不斷用wc或者ls命令觀看字節(jié)信息,最后生成完善的幫助文件。感興趣的同學(xué)可以自己生成強大的幫助文檔信息,由于這一部分不是二次開發(fā)的重點,我們在這里也不詳細(xì)討論其細(xì)節(jié)了,利用上面的知識我們已經(jīng)足以構(gòu)建任何復(fù)雜的ASCII文檔信息。5.4 結(jié)束語到這里為止,我們已經(jīng)對UIDL的所有功能都基于例子進(jìn)行了詳細(xì)描述,講到這里大家已經(jīng)有足夠的UIDL知識構(gòu)建比較專業(yè)化的基于GUI界面的參數(shù)化建模本領(lǐng)了。在
36、后續(xù)章節(jié),我們將基于APDL和UPF知識對這一例子進(jìn)行優(yōu)化處理實現(xiàn),希望大家保持充足的興趣繼續(xù)向下學(xué)習(xí)。第六章 解析APDL6.1 熟悉新朋友APDLAPDL是我們即將結(jié)識的第二個強大二次開發(fā)工具。它的全稱是ANSYS Parametric Design Language。APDL可以幫助你更加有效的進(jìn)行分析計算,可以讓你輕松自動化你的工作(循環(huán)、分支、宏等結(jié)構(gòu)),并是一種高效的參數(shù)化建模手段。很多情況下,APDL主要用在優(yōu)化設(shè)計或者自適應(yīng)網(wǎng)格劃分中。但在日常分析中如果你知道善用,APDL也將發(fā)揮其強大的優(yōu)勢,讓你的工作變的生動起來。6.2 二次開發(fā)工具之間的比較APDL所能實現(xiàn)的功能通俗的說
37、來應(yīng)該是次于UPF而強與UIDL,但實際上是由于三者具體側(cè)重點不同造成的:UIDL主要控制GUI界面的各類二次開發(fā)方法,涉及的分析部分就要少一些,APDL可以稱其為和分析部分頻繁打交道的一組小型工具,功能強大,但不和UIDL一樣能夠非常具體的針對某一兩方面的二次開發(fā)處理,通常情況下的他融合在分析的角角落落中。UPF是三者之間的最強者,他能完成最復(fù)雜的二次開發(fā)工作,比如說構(gòu)建新單元,復(fù)雜數(shù)據(jù)庫交互,外圍命令定制等,但UPF在很多情況下也借助了APDL命令來完全實現(xiàn)其功能。同樣我們也能在UIDL中欠入APDL命令,來構(gòu)建比較復(fù)雜的GUI二次開發(fā)工作。一句話,UIDL、APDL和UPF三者各有所長,
38、密不可分。結(jié)合使用三者,我們將能夠?qū)崿F(xiàn)任何強大的分析功能。6.3 結(jié)束語我們這里對APDL的介紹將著重于它的一些基本功能,而不會象UIDL那樣用一組實例來完整的描述他的所有功能,當(dāng)然其間也會夾雜講述一些例子,來加強大家對APDL工具應(yīng)用技巧。第七章 APDL綜合實例7.1 問題說明本章在闡明APDL技術(shù)時本想也采取實例的方式,把APDL的各個細(xì)節(jié)都用一個個詳細(xì)的實例說清楚,無奈APDL細(xì)節(jié)內(nèi)容比較繁復(fù),而且不和UIDL那樣各成體系,APDL的應(yīng)用很多情況下都是和UIDL、UPF結(jié)合在一起應(yīng)用的,它甚至滲透到基礎(chǔ)分析中的各個環(huán)節(jié)中,可以說也是ANSYS的腳本基礎(chǔ)??紤]到大家都不會有興趣來聆聽枯燥
39、的數(shù)組構(gòu)建法,宏函數(shù)的參元特性等羅嗦的APDL語法,這里我們打算用一個比較大的綜合實例來想大家描述一部分APDL的功能,從這里你將能看到我們能用APDL干些什么。還記得UIDL實例解析二中的一個例子巴,這里我們有必要重溫一下:(a)圖1(b)Hr如圖1(a)一所示,一帶孔薄板,長4000mm,寬2000mm,頂部中心部分1800mm處承受42MP的壓力,左右兩個長圓孔中心分別踞四周1000mm,長圓孔的具體形式如圖1(b)所示,上下分別為半圓,中部用直線銜接。這里假設(shè)長圓長軸與水平方向夾角為。為了使得孔邊緣應(yīng)力集中最小,這里擬調(diào)整的大小(-/2, /2),以便在固定的H情況下達(dá)到長圓孔周圍應(yīng)力
40、集中最小。在UIDL實例二的部分我們只是在GUI界面下實現(xiàn)了它的參數(shù)化建模,這部分工作在本章的綜合實例中仍然有效,下面我們將一步步完全實現(xiàn)這一問題。7.2 解題思想本問題是在用戶給定H的情況下求得角的最優(yōu)解,使得孔邊最大拉應(yīng)力最?。ㄟ@是因為材料抗拉性能比較弱)。這里我們的想法是把取每一個角度時候得到的孔邊最大拉應(yīng)力都求出,比較一下,得到孔邊拉應(yīng)力最小情況下對應(yīng)的取值?,F(xiàn)在的問題是,我們只能夠?qū)γ恳浑x散的值求取其孔邊最大拉應(yīng)力,讓在0360之間連續(xù)取值不僅是無法做到的,而且在工程中也沒有必要,這里我們擬每隔一定角度計算一下孔邊最大拉應(yīng)力,最終在這些有限的角度中求取出最佳的值。因此我們還需要用戶自
41、定義求解的精度參數(shù),即我們每隔多少角度來計算一次(決定了結(jié)果精確到什么程度)。比方說我們定義每隔5計算一次的話,整個優(yōu)化過程需要進(jìn)行180/5=36次求解運算。7.3 構(gòu)建步驟下面說明一下在構(gòu)建過程中的一些全局參數(shù):My_H:用戶輸入的H參數(shù)值My_sita:每次計算對應(yīng)的參數(shù)值My_dsita:每兩次計算之間間隔的角度值(用戶輸入的參數(shù))。My_N:總共需要分析計算的次數(shù)。My_N=180/My_dsitaMy_sita0:初始值,這里統(tǒng)一定義為0。My_MinS1:最優(yōu)化位置處的最大拉應(yīng)力值。(計算完以后才是)My_Msita:最優(yōu)化位置處對應(yīng)的值。Mysmin:每次分析計算得到對應(yīng)特定角
42、時的孔邊最大拉應(yīng)力。(一般都是孔邊產(chǎn)生應(yīng)力集中,所以也是整個板料內(nèi)部的最大拉應(yīng)力處)_s1數(shù)組:對應(yīng)特定時求解得到各個節(jié)點上的最大拉應(yīng)力值。1. 首先我們重新構(gòu)建一比較完善的參數(shù)話建模腳本,取名為modaling.mac,該腳本針對固定的My_H和My_sita將構(gòu)建整個幾何模型,加好載荷和約束,具體細(xì)節(jié)請參看附錄。2. 構(gòu)建腳本mysolve.mac:My_sita0=0My_N=180/My_dsita*do,I,0,My_N-1parsav,all,myparfini/clear,startparres,new,myparMy_sita=My_sita0+My_dsita*Imodali
43、ng/solusolve/post1ar11=ndinqr(0,14)_s1=*dim,_s1,ar11*vget,_s1(1),node,1,s,1*vscfun,mysmin,max,_s1(1)*if,I,eq,0,then My_MinS1=mysmin My_Msita=My_sita*ELSE *IF,mysmin,lt,My_MinS1,then My_MinS1=mysmin My_Msita=My_sita *ENDIF*ENDIFparsav,all,mypar*enddo下面是幾點說明:u 程序整個框架是先根據(jù)用戶輸入的參數(shù)定制好一些解題環(huán)境,比方說求出需要重復(fù)計算的次數(shù)
44、My_N,然后用APDL的*do循環(huán)結(jié)構(gòu)繁復(fù)執(zhí)行My_N次,每次求得對應(yīng)角度的孔邊最大拉應(yīng)力值,不斷積累出這些對應(yīng)角度孔邊最大拉應(yīng)力值的最小結(jié)果。完成了My_N次結(jié)果后,最優(yōu)結(jié)果My_MinS1和對應(yīng)的角度My_Msita也就求出來了。u 不同次分析計算過程前必須對ANSYS環(huán)境中的現(xiàn)有模型清零,用到/clear命令,但該命令會使用戶參數(shù)同時清零,這里用到parsav和parres技術(shù),在每次清零過程前先把當(dāng)前工作區(qū)的參數(shù)保存起來,清模型結(jié)束后再調(diào)入工作區(qū),這樣就實現(xiàn)了只清模型、不清參數(shù)的效果。u 解題結(jié)束后,我們先用ndinqr(0,14)這一UPF命令求取模型中的節(jié)點總數(shù)。然后用*vget
45、命令把所有節(jié)點上的最大拉應(yīng)力都保存到_s1數(shù)組中,最后用*vscfun函數(shù)得到_s1數(shù)組中的最大值。u 注意每次求解完提取數(shù)據(jù)時都要重新定義_s1數(shù)組的大小(因為每次劃分單元后總節(jié)點數(shù)不同),這時候每次ANSYS都回出現(xiàn)讓你確認(rèn)是否把已經(jīng)存在的_s1數(shù)組結(jié)構(gòu)改變的對話框,這將導(dǎo)致自動化求解中斷,這里我們采用的一個技巧是每次重新定義_s1數(shù)組前先清掉_s1數(shù)組(用_s1=命令行)。這樣救避免了Ansys的詢問。同樣解決/clear命令的Ansys詢問方法就是寫全/clear命令:/clear,start。注意這里我們是必須要用start參數(shù)的,它表面我們在新建模型時讀入start55.ans文件
46、,我們必須在工作目錄中構(gòu)建一個我們自己的start55.ans文件,里面添加上PI參數(shù)的說明(因為modaling.mac宏文件中將利用這一參數(shù),如果系統(tǒng)環(huán)境中沒有這一參數(shù)的說明,將產(chǎn)生建模錯誤)。u 解決完一次運算,保存完數(shù)據(jù)后記得用parsav函數(shù)保存環(huán)境參數(shù)。3. 完善GUI參數(shù)化界面這里我們要比上次UIDL實例二中多增加一個參數(shù)My_dsita,為此我們修改UIFUNC2.GRN函數(shù)中DoProject函數(shù)::N Fnc_DoProject:S 0, 0, 0:T Command:A Optimize my Project :D Please Input Custom Information:C )*Set,My_H,150:C )*Set,My_dsita,90:H Hlp_0_Con
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025江西吉安吉州區(qū)北門街道真君山社區(qū)招聘就業(yè)見習(xí)人員1人模擬筆試試題及答案解析
- 2026湖南長沙市達(dá)德中學(xué)公開招聘校聘教師考試備考題庫及答案解析
- 2025吉林長春市德惠市大學(xué)生鄉(xiāng)村醫(yī)生專項計劃招聘2人(1號)模擬筆試試題及答案解析
- 2025福建福州濱海實驗學(xué)校臨聘教師招聘1人(提供住宿還有食堂)備考考試試題及答案解析
- 深度解析(2026)《GBT 25995-2010精細(xì)陶瓷密度和顯氣孔率試驗方法》
- 深度解析(2026)GBT 25934.3-2010高純金化學(xué)分析方法 第3部分:乙醚萃取分離ICP-AES法 測定雜質(zhì)元素的含量
- 2025山東德州臨邑縣人民醫(yī)院招聘備案制工作人員15人備考考試題庫及答案解析
- 2025江西省財通供應(yīng)鏈金融集團有限公司第二批次社會招聘2人模擬筆試試題及答案解析
- 深度解析(2026)《GBT 25743-2010鋼件深冷處理》
- 2025新疆青河縣社保中心綜柜崗位見習(xí)生招聘1人參考考試題庫及答案解析
- 2024北京廣播電視臺招聘30人筆試備考題庫及一套參考答案詳解
- DBJT15-85-2011 工程質(zhì)量安全監(jiān)督數(shù)據(jù)標(biāo)準(zhǔn)
- 金蝶新員工培訓(xùn)大綱
- 西梅栽培技術(shù)課件
- 小學(xué)生有擔(dān)當(dāng)教育課件
- 《村級防疫員管理辦法》
- 駕校消防安全責(zé)任制度
- 福祿貝爾教學(xué)課件
- 綠色建筑自評估報告參考樣式
- 牙隱裂的診斷及治療講課件
- 涉密文件解密管理制度
評論
0/150
提交評論