基于patran艙口蓋參數(shù)化建模研究【畢業(yè)設(shè)計(jì)】_第1頁(yè)
已閱讀1頁(yè),還剩38頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p>  本科畢業(yè)論文(設(shè)計(jì))</p><p><b>  目 錄</b></p><p><b>  摘 要1</b></p><p>  Abstract2</p><p><b>  1 緒論3</b></p><p&g

2、t;<b>  1.1 前言3</b></p><p><b>  1.2研究現(xiàn)狀4</b></p><p>  1.2.1艙口蓋設(shè)計(jì)現(xiàn)狀4</p><p>  1.2.2 PATRAN二次開發(fā)現(xiàn)狀4</p><p>  2 PCL語(yǔ)言的介紹5</p><p>  

3、2.1 PCL語(yǔ)言的簡(jiǎn)介5</p><p>  2.2 PCL的主要功用5</p><p>  2.3 PCL語(yǔ)言結(jié)構(gòu)6</p><p>  2.4 PCL的編譯和使用6</p><p>  3 參數(shù)化建模的概述7</p><p>  4 艙口蓋參數(shù)化建模程序的開發(fā)8</p><p>

4、;  4.1生成用戶界面8</p><p>  4.2 設(shè)置參數(shù)界面9</p><p><b>  總結(jié)35</b></p><p><b>  參考文獻(xiàn)36</b></p><p><b>  致謝37</b></p><p>  基于PAT

5、RAN艙口蓋參數(shù)化建模研究</p><p><b>  摘 要</b></p><p>  艙口蓋的設(shè)計(jì)主要是依據(jù)規(guī)范確定艙口蓋各種構(gòu)件的尺寸,然后采用有限元軟件直接計(jì)算,然后根據(jù)應(yīng)力結(jié)果和規(guī)范要求來修改構(gòu)建尺寸,如此循環(huán)反復(fù)多次,不斷調(diào)整設(shè)計(jì)方案,直至使其滿足安全性和經(jīng)濟(jì)性的要求為止。但由于艙口蓋結(jié)構(gòu)比較復(fù)雜,構(gòu)建種類繁多,而且某些構(gòu)件在不同區(qū)域的板厚也有所區(qū)

6、別。因此艙口蓋的設(shè)計(jì)分析過程相當(dāng)費(fèi)時(shí)費(fèi)力的。本文采用了MSC.Patran內(nèi)置的PCL語(yǔ)言對(duì)其進(jìn)行二次開發(fā),開發(fā)了基于規(guī)范的艙口蓋快速建模系統(tǒng),實(shí)現(xiàn)了艙口蓋有限元模型的參數(shù)化,大大縮短了艙口蓋的設(shè)計(jì)周期。</p><p>  [關(guān)鍵詞]: 艙口蓋;Patran;PCL;參數(shù)化建模</p><p>  THE PARAMETERIZED MODELING STUDY OF HATCH COV

7、ER BASED ON PATRAN</p><p><b>  Abstract</b></p><p>  The design of hatch cover are mainly based on the hatch cover regulating with various components to determine the size, and then

8、calculated by finite element software. At last, according the stress results and specifications to revise the building size, Keep revising several times until its safety and economy reach the standard. Because of the hat

9、ch cover structure is very complicate, construction have a large stype, thickness of hatch cover in different regions is different. Therefore, hatch co</p><p>  [Key words]: hatch cover;Patran;PCL;parameteri

10、zed modeling</p><p><b>  1 緒論</b></p><p><b>  1.1 前言</b></p><p>  隨著經(jīng)濟(jì)的發(fā)展、社會(huì)的進(jìn)步、全球化趨勢(shì)日趨明顯。隨著經(jīng)濟(jì)全球化的不斷發(fā)展,資源配置已經(jīng)從一個(gè)工廠、一個(gè)地區(qū)乃至一個(gè)國(guó)家擴(kuò)展到整個(gè)世界,社會(huì)分工更加明顯,遠(yuǎn)洋物流一直在不斷壯大,船舶制

11、造業(yè)正越來越受到廣泛的關(guān)注。</p><p>  艙口蓋作為船舶結(jié)構(gòu)上的重要組成部分,承受波浪涌上甲板時(shí)的水頭壓力載荷,肩負(fù)密封艙口,保護(hù)貨物和支撐平臺(tái)的作用。近年來,因艙口蓋發(fā)生問題造成船舶沉沒事故已有多起。因此,國(guó)際造船界、各船級(jí)社都把艙口蓋的設(shè)計(jì)列為重要熱點(diǎn)問題之一。隨著造船技術(shù)和航運(yùn)市場(chǎng)的發(fā)展,船舶建造向大型化方向發(fā)展已成必然趨勢(shì),越來越多的船舶超過了原有規(guī)范的規(guī)定,需要利用有限元直接計(jì)算的手段來評(píng)估船舶

12、結(jié)構(gòu)的安全性。</p><p>  在計(jì)算機(jī)技術(shù)高度發(fā)達(dá)的今天,有限元方法大量應(yīng)用實(shí)踐過程中涌現(xiàn)出了很多表現(xiàn)優(yōu)秀、功能卓越的有限元軟件。經(jīng)過了大量科學(xué)工作者的不斷完善和創(chuàng)新,以及幾十年實(shí)踐應(yīng)用的考驗(yàn)。船舶工程中有限元方法的應(yīng)用也有很大的發(fā)展,大量的有限元軟件應(yīng)用于船舶結(jié)構(gòu)建造等方面。其中就有國(guó)際著名的MSC.Software開發(fā)的大型通用有限元軟件MSC.Patran。</p><p> 

13、 MSC.Software公司是世界領(lǐng)先的虛擬產(chǎn)品開發(fā)工具供應(yīng)商,其仿真軟件、專業(yè)服務(wù)以及企業(yè)級(jí)系統(tǒng),幫助企業(yè)在產(chǎn)品設(shè)計(jì)、試驗(yàn)和制造過程中創(chuàng)造財(cái)富、節(jié)約時(shí)間、降低成本。MSC.Software與全球數(shù)百個(gè)行業(yè)的數(shù)千家企業(yè)一道,利用信息技術(shù)、軟件、服務(wù)和系統(tǒng),增強(qiáng)他們的產(chǎn)品開發(fā)能力、優(yōu)化其產(chǎn)品開發(fā)流程,以期更快地開發(fā)出更好的產(chǎn)品。產(chǎn)品性能的仿真能夠降低開發(fā)成本,縮短產(chǎn)品上市周期、并降低維護(hù)成本。MSC公司的軟件產(chǎn)品以其在解決各類大型復(fù)雜結(jié)

14、構(gòu)的強(qiáng)度、剛度、屈曲、模態(tài)、動(dòng)力學(xué)、熱力學(xué)、非線性、(噪)聲學(xué)、流體-結(jié)構(gòu)耦合、氣動(dòng)彈性、超級(jí)單元、慣性釋放以及結(jié)構(gòu)優(yōu)化問題等方面的卓越表現(xiàn),被廣泛應(yīng)用于包括國(guó)防、航空航天、機(jī)械制造、汽車、船舶等大量行業(yè)和部門,用戶遍布世界100多個(gè)國(guó)家和地區(qū)的主要設(shè)計(jì)制造公司和研究機(jī)構(gòu)。</p><p>  船舶結(jié)構(gòu)中艙口蓋的設(shè)計(jì)是一個(gè)結(jié)構(gòu)、強(qiáng)度、穩(wěn)定的綜合問題。傳統(tǒng)的做法是通過多次試算、不斷逼近最優(yōu)值。在這個(gè)過程中,設(shè)計(jì)人員

15、在很大程度上依賴經(jīng)驗(yàn)和類比來進(jìn)行設(shè)計(jì),而分析人員則需要重復(fù)的進(jìn)行修改模型、分析、校核,耗時(shí)多、周期長(zhǎng)、工作量大。MSC.Patran是工業(yè)領(lǐng)域最著名的有限元前、后處理器,是一個(gè)開放式、多功能的三維MCAE軟件包,具有集工程設(shè)計(jì)、工程分析、和結(jié)果評(píng)估功能于一體的、交互圖形界面的CAE集成環(huán)境。Patran強(qiáng)大的處理功能足以解決當(dāng)前艙口蓋建造過程中的不足,省去工程師大量繁瑣而枯燥的反復(fù)試算調(diào)整的過程。</p><p>

16、;  基于以上原因,為綜合以上多道工序,利用MSC.Patran自帶的PCL(Patran Command Language)語(yǔ)言做相應(yīng)的二次開發(fā),進(jìn)行參數(shù)化建模、定義優(yōu)化設(shè)計(jì)任務(wù),完成優(yōu)化參數(shù)的設(shè)置,使艙口蓋在滿足結(jié)構(gòu)安全性的同時(shí),盡量降低制造成本有著重要的現(xiàn)實(shí)意義。</p><p><b>  1.2研究現(xiàn)狀</b></p><p>  1.2.1艙口蓋設(shè)計(jì)現(xiàn)狀&

17、lt;/p><p>  艙口蓋是船舶中用來遮蔽艙口,保護(hù)艙內(nèi)貨物不受風(fēng)浪侵襲的結(jié)構(gòu),同時(shí)承受著波浪上涌時(shí)的水頭壓力。艙口蓋在設(shè)計(jì)的過程中需要考慮經(jīng)濟(jì)性和安全性。目前艙口蓋的設(shè)計(jì)主要是依據(jù)規(guī)范確定艙口蓋各種構(gòu)件的尺寸,然后采用有限元軟件直接計(jì)算,分析結(jié)構(gòu)應(yīng)力,然后根據(jù)應(yīng)力結(jié)果和規(guī)范要求來修改構(gòu)建尺寸,如此反復(fù),不斷調(diào)整設(shè)計(jì)方案,直到滿足安全性和經(jīng)濟(jì)性的要求為止。</p><p>  由于艙口蓋結(jié)

18、構(gòu)比較復(fù)雜,構(gòu)建種類繁多,而且某些構(gòu)件在不同區(qū)域的板厚也有所區(qū)別。因此,當(dāng)艙口蓋按照初步的設(shè)計(jì)尺寸進(jìn)行有限元分析后都需要根據(jù)計(jì)算結(jié)果來修改調(diào)整初始的尺寸,再加上板格屈曲的影響,因此需要不止一次地調(diào)整板厚,修改設(shè)計(jì)方案。因此艙口蓋的設(shè)計(jì)分析過程相當(dāng)費(fèi)時(shí)費(fèi)力的。</p><p>  1.2.2 PATRAN二次開發(fā)現(xiàn)狀</p><p>  美國(guó)MSC公司的Patran軟件平臺(tái)是世界一流的計(jì)算機(jī)

19、輔助分析前后處理器,具有快速幾何建模、通用有限元網(wǎng)格劃分和方便的邊界條件和材料特性定義的前處理功能,以及強(qiáng)大的有限元分析結(jié)果可視化后處理功能。但實(shí)際的工程應(yīng)用都有其工程領(lǐng)域的專業(yè)特殊性,這些特定的專業(yè)應(yīng)用領(lǐng)域希望有特定的功能和用戶界面。為此,MSC專門提供了二次開發(fā)語(yǔ)言PCL,即MSC.Patran Command Language。這個(gè)命令語(yǔ)言是集成于MSC.Patran中的一個(gè)高級(jí)化、模塊化結(jié)構(gòu)的全功能計(jì)算機(jī)編程語(yǔ)言和用戶自定義工具

20、,類似于C語(yǔ)言和FORTRAN語(yǔ)言,具有標(biāo)準(zhǔn)C語(yǔ)言的幾乎全部功能,可以編制具有MSC.Patran風(fēng)格或自由風(fēng)格的用戶界面,也可以生成專用應(yīng)用程序,它提供了豐富的表格和菜單庫(kù)以及大量的有限元前后處理內(nèi)部函數(shù),供用戶集成自編開發(fā)的分析程序或特定的圖形界面于MSC.Patran軟件系統(tǒng)中。</p><p>  目前,PCL的二次開發(fā)水平以美國(guó)為最高。開發(fā)隊(duì)伍除了MSC總部以外,主要集中在航空、航天、造船、汽車等行業(yè)的

21、領(lǐng)導(dǎo)型企業(yè)的軟件開發(fā)部門。但相對(duì)而言,他們還沒有把PCL開發(fā)作為一項(xiàng)軟件開發(fā)服務(wù)來看待,只是為了解決各自領(lǐng)域或部門的具體應(yīng)用。</p><p>  國(guó)內(nèi)PCL開發(fā)隊(duì)伍也是主要集中于航空、航天、造船、汽車的大型企業(yè),以及一些科研院所。其中,由中國(guó)船級(jí)社組織開發(fā)的“船舶結(jié)構(gòu)安全解決方案”軟件包較有代表性。</p><p>  2 PCL語(yǔ)言的介紹</p><p>  2

22、.1 PCL語(yǔ)言的簡(jiǎn)介</p><p>  PCL(全稱Patran Command Language)語(yǔ)言是的MSC.Patran一個(gè)高級(jí)的、模塊化結(jié)構(gòu)的編程語(yǔ)言和用戶自定義工具,其語(yǔ)法規(guī)則十分類似于FORTRAN語(yǔ)言,而在界面創(chuàng)建方面又遠(yuǎn)遠(yuǎn)領(lǐng)先于FORTRAN。PCL語(yǔ)言提供了豐富的表格、控件、窗體、內(nèi)部函數(shù)等,供開發(fā)用戶開發(fā)各種用途的自定義界面(下拉菜單、窗體、工具欄圖標(biāo)等)、執(zhí)行程序、宏命令和用戶函數(shù)等。

23、PCL語(yǔ)言的基礎(chǔ)知識(shí)與其他語(yǔ)言都大同小異,對(duì)于一個(gè)有FORTRAN等其他語(yǔ)言基礎(chǔ)的用戶來說,掌握PCL語(yǔ)言沒有任何障礙。根據(jù)MSC提供的幫助手冊(cè),足夠用戶編寫功能強(qiáng)大的自定義界面和用戶子程序。</p><p>  PCL語(yǔ)言類似于C語(yǔ)言和FORTRAN語(yǔ)言,它包含與之相同的數(shù)據(jù)類型,也具有大量的函數(shù)庫(kù)。除了基本的數(shù)學(xué)函數(shù)庫(kù)和系統(tǒng)訪問的函數(shù)庫(kù)以外,它還提供了大量與有限元建模有關(guān)的函數(shù),如幾何建模函數(shù),網(wǎng)格自動(dòng)劃分函

24、數(shù),載荷施加,屬性添加及結(jié)果后處理有關(guān)的函數(shù)。利用這些函數(shù),用戶可以編寫自己的函數(shù),并用系統(tǒng)命令!!library將其加載到Patran中,建立與NASTRAN的連接,可以在以后的建模中隨時(shí)調(diào)用。由于MSC.Patran沒有自帶的程序編輯器,需要利用那些具有外部工具調(diào)用功能的編輯器,比如Microsoft Visual C++、Editplus等。這些編輯器都支持用戶自己開發(fā)的工具,首先要進(jìn)行相關(guān)的參數(shù)設(shè)置,添加PCL工具菜單,將PCL

25、開發(fā)環(huán)境與批處理程序集成。設(shè)置完成后就可以在編寫函數(shù)文件的同時(shí),直接通過編輯器進(jìn)行PCL函數(shù)文件的編譯、轉(zhuǎn)換等工作,極大地方便了程序開發(fā)。</p><p>  2.2 PCL的主要功用</p><p>  MSC.Patran命令語(yǔ)言(PCL)是一個(gè)高級(jí)、模塊化的結(jié)構(gòu)編程語(yǔ)言和用戶自定義工具,類似于C語(yǔ)言和FORTRAN語(yǔ)言,可用于生成應(yīng)用程序或特定的用戶界面,顯示自定義圖形、讀寫PATR

26、AN數(shù)據(jù)庫(kù),建立新的或增強(qiáng)功能。同時(shí)通過PCL,其他商品化的或自編分析程序可被集成到Patran中。</p><p><b>  命令行表達(dá)式輸入。</b></p><p>  可編譯的命令庫(kù)函數(shù)。</p><p>  豐富的表格及菜單庫(kù)供開發(fā)用戶圖形界面。</p><p>  遞歸的子程序和函數(shù)調(diào)用。</p>

27、;<p>  同類函數(shù)歸于一個(gè)類。</p><p>  條件分子語(yǔ)句:if、then、else、swith、case、default、break、continue。</p><p>  條件循環(huán)語(yǔ)句:repeat、until、while、end while、for、to、by、end for、list、end list。</p><p>  用戶可定義

28、的表格生成功能使用戶的PCL函數(shù)可通過菜單選項(xiàng)來執(zhí)行。</p><p>  數(shù)據(jù)庫(kù)的訪問存取工具。</p><p>  整型、實(shí)型、邏輯型、字符串變量及常數(shù)。</p><p>  局部、全局、靜態(tài)變量及類變量。</p><p>  任意變量類型的數(shù)組。</p><p>  虛擬內(nèi)存數(shù)組及數(shù)組內(nèi)存管理功能。</p&

29、gt;<p><b>  跟蹤調(diào)試工具。</b></p><p><b>  數(shù)組排序和搜索。</b></p><p>  字符串函數(shù)包括大小寫轉(zhuǎn)換和所寫檢查。</p><p>  二進(jìn)制和文本文件讀寫功能。</p><p><b>  多種數(shù)學(xué)函數(shù)程序。</b>

30、</p><p>  豐富的圖形函數(shù):繪點(diǎn)、線、虛圓或?qū)崍A、虛方塊或?qū)嵎綁K、虛多邊形或?qū)嵍噙呅?、在任意位置顯示文本、改變圖形寄存器。</p><p>  模型管理程序:比例縮放,轉(zhuǎn)動(dòng)、旋轉(zhuǎn)、平移。</p><p><b>  系統(tǒng)實(shí)用工具。</b></p><p>  2.3 PCL語(yǔ)言結(jié)構(gòu)</p>&l

31、t;p>  一個(gè)PCL程序類似于C或者FORTRAN的函數(shù),在第一行必須以FUNCTION開頭一行以END FUNCTION結(jié)尾,中間為函數(shù)段,PCL函數(shù)的定義格式如下:</p><p>  FUNCTION fname (arglist)</p><p>  declarations. . .</p><p>  statements. . .</p&

32、gt;<p><b>  (and/ or)</b></p><p>  NOODL commands</p><p>  END FUNCTION</p><p>  使用時(shí),直接FUNCTION( arg )執(zhí)行就行了。</p><p>  2.4 PCL的編譯和使用</p><p&

33、gt;  Patran提供了一個(gè)PCL的編譯程序p3pclcomp,在DOS窗口下可以執(zhí)行p3pclcomp,會(huì)出現(xiàn)“→”提示符,可以在提示符后輸入PCL編譯連接的指令,也可以直接在Patran圖形窗口的命令條中直接輸入PCL編譯連接的指令,常用的PCL編譯命令包括:</p><p>  1.input:讀入PCL文件并編譯解釋,用此方法可以直接使用PCL文件。其具體使用說明格式為:!!input file.p

34、cl</p><p>  2.compile:將PCL程序編譯成Patran的庫(kù)文件,用此方法可以把文本文件編譯成二進(jìn)制文件,方便程序調(diào)用,而且可以進(jìn)行程序的封裝。其具體使用格式為:!!compile file.pcl library.plb</p><p>  3.library:加載和組織Patran庫(kù)文件。可以加載任意個(gè)庫(kù)文件,也可以組織管理,包括合并,刪除程序類庫(kù)。 常用的使用說

35、明格式為:</p><p>  !!library   [add] library.plb(library.plb...)    !!library   [remove] library.plb(library.plb...)    !!library   [delete] librar

36、y.plb(lfunction.plb...)</p><p>  4.path:加載PCL目錄    !!path   [add]  directory(directory...)    !!path   [remove]  directory(directory...) 

37、   !!path   none    !!path 另外,PCL還提供了跟蹤調(diào)試命令和其他命令,實(shí)用比較少。我們一般把PCL程序的后綴作“.pcl”。PCL程序在PATRAN中可通過三種方法來進(jìn)行編譯和連接,即:(1)PATRAN;(2)p3pclcomp;(3) make。</p><p>  3 參數(shù)化建模的概述</

38、p><p>  參數(shù)化建模一般應(yīng)用在優(yōu)化技術(shù)上,通過將模型參數(shù)化,優(yōu)化過程中不斷對(duì)其進(jìn)行迭代而求出最佳解。參數(shù)化建模是參數(shù)(變量)而不是數(shù)字建立和分析的模型,通過簡(jiǎn)單的改變模型中的參數(shù)值就能建立和分析新的模型。參數(shù)化建模的參數(shù)不僅可以是幾何參數(shù),也可以是溫度、材料等屬性參數(shù)。在參數(shù)化的幾何造型系統(tǒng)中,設(shè)計(jì)參數(shù)的作用范圍是幾何模型。但幾何模型不能直接用于進(jìn)行分析計(jì)算,需要將其轉(zhuǎn)化為有限元模型,才能為分析優(yōu)化程序所用。因

39、此,如果希望以幾何模型中的設(shè)計(jì)參數(shù)作為形狀優(yōu)化的設(shè)計(jì)變量,就必須將設(shè)計(jì)參數(shù)的作用范圍延拓至有限元模型,使有限元模型能夠根據(jù)設(shè)計(jì)變量的變化,實(shí)現(xiàn)有限元模型的參數(shù)化。</p><p>  參數(shù)化技術(shù)是最早是CAD在實(shí)際應(yīng)用工作中提出的課題,它是該應(yīng)用領(lǐng)域內(nèi)的一個(gè)重要的、且正在蓬勃發(fā)展的研究課題。參數(shù)化是指設(shè)計(jì)對(duì)象的結(jié)構(gòu)形狀比較定型,可以用一組參數(shù)來確定設(shè)計(jì)對(duì)象,參數(shù)與設(shè)計(jì)對(duì)象的控制尺寸有明顯的對(duì)應(yīng)關(guān)系,從而可使設(shè)計(jì)的

40、結(jié)果受尺寸的驅(qū)動(dòng)。參數(shù)化設(shè)計(jì)是指參數(shù)化模型的尺寸對(duì)應(yīng)關(guān)系的表示,而不是確定具體的數(shù)值,通過調(diào)準(zhǔn)參數(shù)來修改和控制幾何形狀,自動(dòng)實(shí)現(xiàn)產(chǎn)品的精確造型。變化一個(gè)參數(shù)值,自動(dòng)改變所有與它相關(guān)的模型尺寸,并遵守約束條件,這就是采用參數(shù)化的模型。參數(shù)化設(shè)計(jì)與傳統(tǒng)方法相比,最大的不同在于它存儲(chǔ)了設(shè)計(jì)的整個(gè)過程,能設(shè)計(jì)出一簇而不是單一的產(chǎn)品模型。傳統(tǒng)的人機(jī)交互式繪圖一般要用精確的尺寸值定義幾何元素,輸入的每一條線都必須有確定的位置,圖形一旦確定,即使結(jié)構(gòu)

41、相似,但想改變圖形大小尺寸,只能對(duì)圖形進(jìn)行編輯。而工程設(shè)計(jì)中,一方面,進(jìn)行新產(chǎn)品的設(shè)計(jì)不可避免地需要多次反復(fù)修改,需要進(jìn)行零件結(jié)構(gòu)和尺寸的綜合協(xié)調(diào)、優(yōu)化;另一方面,從大量機(jī)械、電子等系列產(chǎn)品的圖紙中可以發(fā)現(xiàn),同一基本結(jié)構(gòu)形式的零部件,其圖形結(jié)構(gòu)具有一定的相似性,往往只是尺寸的大小不同,其圖形尺寸隨尺寸參數(shù)的變化而相應(yīng)變化。特別</p><p>  4 艙口蓋參數(shù)化建模程序的開發(fā)</p><p&

42、gt;<b>  4.1生成用戶界面</b></p><p>  為了利用MSC.Patran的前后處理功能,編寫了一系列的PCL 函數(shù),用來從MSC. Patran的數(shù)據(jù)庫(kù)中讀取數(shù)據(jù),并生成計(jì)算時(shí)所需的數(shù)據(jù)輸入文件,以及將結(jié)果文件的數(shù)據(jù)寫入Patran的數(shù)據(jù)庫(kù)中,供MSC.Patran進(jìn)行前后處理。開發(fā)用戶界面的目的是為了將這些自編譯的函數(shù)集中起來,通過直觀的圖形界面進(jìn)行交互,方便使用。在

43、開發(fā)用戶界面時(shí),PCL提供了一系列與表格位置及大小有關(guān)的參數(shù)和用戶界面函數(shù),如:</p><p>  Ui_form_create (創(chuàng)建一個(gè)用戶界面) :</p><p>  Ui_botton_create (創(chuàng)建一個(gè)按鈕) :</p><p>  Ui_listbox_create (創(chuàng)建一個(gè)list框) :</p><p>  Ui_

44、optionmenu_create (創(chuàng)建一個(gè)優(yōu)選菜單):</p><p>  這些函數(shù)都可以直接調(diào)用,而FORM-WID-SML表示表格寬度為MSC.Patran中一個(gè)標(biāo)準(zhǔn)列的寬度。用戶不需要知道表格位置及大小的具體數(shù)值,便可以制定出符合MSC.Patran風(fēng)格的界面。這些參數(shù)都包含在PCL語(yǔ)言的頭文件“appforms.p”中。因此,在程序的開始必須增加語(yǔ)句:include“appforms.p”。在程序編譯

45、時(shí),首先要在C預(yù)編譯器中將含有該語(yǔ)句的“.pcl”文件編譯為“.cpp”文件,然后在MSC.Patran的命令行中編譯“.cpp”文件。 </p><p>  在進(jìn)行參數(shù)化建模時(shí),需要不斷地更改參數(shù),以建立新的模型。為此,可以生成相應(yīng)的界面,使用戶很方便地通過界面的參數(shù),并啟動(dòng)相關(guān)聯(lián)的程序。在PCL中提供一系列生成窗體和菜單的函數(shù),如:ui_menu_create ( )生成菜單、ui_form_ctreate

46、( )產(chǎn)生窗體、ui_button_create ( )產(chǎn)生按鈕、ui_databox_create ( )產(chǎn)生數(shù)據(jù)輸入對(duì)話框等,還有與窗體和菜單外觀有關(guān)的函數(shù)等。經(jīng)過編譯后就可以得到符合MSC.Patran風(fēng)格的界面。在窗體中輸入或選擇參數(shù)后,可以u(píng)i_wid_get_vstring ( ) ,ui_wid_get ( )等函數(shù)得到相應(yīng)參數(shù),并在關(guān)聯(lián)的程序中使用。</p><p>  4.2 設(shè)置參數(shù)界面<

47、;/p><p>  此次程序的開發(fā)主要針對(duì)艙口蓋的參數(shù)化建模。其有限元分析系統(tǒng)的程序框架分為三步,輸入特征參數(shù)如:強(qiáng)橫梁位置參數(shù),第一塊蓋板縱向?qū)挾葏?shù),第一根縱桁參數(shù),第二根縱桁參數(shù),第三根縱桁參數(shù),第一塊蓋板橫向長(zhǎng)度,腹板高度參數(shù);程序獲取艙口蓋參數(shù)值;生成模型,實(shí)現(xiàn)參數(shù)化建模。設(shè)置的參數(shù)界面要合理,易于操作,并且符合MSC.Patran的操作規(guī)則。</p><p>  程序的開始,進(jìn)行文

48、件聲明,如下:</p><p>  #include "appforms.p"</p><p>  #include "uiforms.p"</p><p>  #include "lpenums.i"</p><p>  #include "pdamsg.h"&

49、lt;/p><p>  #include "lpkeywords.i"</p><p>  CLASS bysj</p><p>  CLASSWIDE WIDGET form_id1, dbox_bankuang, dbox_scd, dbox_x1, dbox_x2, dbox_x3, dbox_x4, dbox_x5</p>&l

50、t;p>  FUNCTION init ()</p><p>  REAL x_loc, y_loc, label_x_loc</p><p>  REAL db_length</p><p>  x_loc = UNFRAMED_L_MARGIN</p><p>  y_loc = FORM_T_MARGIN</p>&

51、lt;p>  db_length = DBOX_WID_SPECIAL - DBOX_LABEL_LEN_SPECIAL - DBOX_LABEL_X_OFFSET</p><p>  form_id1 = ui_form_create ("", @</p><p>  /*相對(duì)于screen而言的x坐標(biāo)*/ FORM_X_LOC_SML, @</p>

52、<p>  /*相對(duì)于screen而言的y坐標(biāo)*/ FORM_Y_LOC, @</p><p>  /*相對(duì)于哪個(gè)角落,本文選用左上角*/ "UL", @</p><p>  /*寬度*/ FORM_WID_SML, @</p><p>  /*高度*/ FORM_HGT_TALL, @</p><p>  

53、/*標(biāo)簽*/ "徐操畢業(yè)設(shè)計(jì)", @</p><p><b>  "" )</b></p><p>  該函數(shù)所創(chuàng)建的標(biāo)簽,如圖1。</p><p><b>  圖1 程序標(biāo)簽</b></p><p>  /*********創(chuàng)建作者信息的標(biāo)簽*******

54、*****/</p><p>  label_x_loc = BUTTON_THIRD_X_LOC2</p><p>  ui_label_create(form_id1,"",label_x_loc,y_loc,"創(chuàng)建幾何")</p><p>  該函數(shù)所創(chuàng)建的標(biāo)簽,如圖2。</p><p><

55、b>  圖2 創(chuàng)建標(biāo)簽</b></p><p>  /*********創(chuàng)建加載到MPC或者分點(diǎn)力加載************/</p><p>  /*********************************創(chuàng)建艙口蓋特點(diǎn)的控件************************************************/</p><p&

56、gt;  y_loc = y_loc + BUTTON_HGT + INTER_WIDGET_SPACE </p><p>  dbox_bankuang=ui_databox_create (form_id1,"", x_loc, y_loc, 1, db_length, @</p><p>  "強(qiáng)橫梁位置(mm):", ""

57、, FALSE, "REAL", 1)</p><p>  y_loc = y_loc + DBOX_HGT_LABOVE + INTER_WIDGET_SPACE</p><p>  dbox_scd=ui_databox_create (form_id1,"", x_loc, y_loc, 1, db_length, @</p>&

58、lt;p>  "第一塊蓋板縱向?qū)挾?mm):", "", FALSE, "REAL", 1)</p><p>  y_loc = y_loc + DBOX_HGT_LABOVE + INTER_WIDGET_SPACE</p><p>  dbox_x1=ui_databox_create (form_id1,"&

59、quot;, x_loc, y_loc, 1, db_length, @</p><p>  "第一根縱桁(mm):", "", FALSE, "REAL", 1)</p><p>  y_loc = y_loc + DBOX_HGT_LABOVE + INTER_WIDGET_SPACE</p><p>

60、  dbox_x2=ui_databox_create (form_id1,"", x_loc, y_loc, 1, db_length, @</p><p>  "第二根縱桁(mm):", "", FALSE, "REAL", 1)</p><p>  y_loc = y_loc + DBOX_HGT_LAB

61、OVE + INTER_WIDGET_SPACE</p><p>  dbox_x3=ui_databox_create (form_id1,"", x_loc, y_loc, 1, db_length, @</p><p>  "第三根縱桁(mm):", "", FALSE, "REAL", 1)</p

62、><p>  y_loc = y_loc + DBOX_HGT_LABOVE + INTER_WIDGET_SPACE</p><p>  dbox_x4=ui_databox_create (form_id1,"", x_loc, y_loc, 1, db_length, @</p><p>  "第一塊蓋板橫向長(zhǎng)度(mm):"

63、, "", FALSE, "REAL", 1)</p><p>  y_loc = y_loc + DBOX_HGT_LABOVE + INTER_WIDGET_SPACE</p><p>  dbox_x5=ui_databox_create (form_id1,"", x_loc, y_loc, 1, db_length, @

64、</p><p>  "腹板高度(mm):", "", FALSE, "REAL", 1)</p><p>  上述程序用于創(chuàng)建了參數(shù)輸入界面,如圖3。</p><p><b>  圖3 參數(shù)輸入框</b></p><p>  /***************

65、******************創(chuàng)建計(jì)算艙口蓋特點(diǎn)的控件************************************************/</p><p>  y_loc = y_loc + DBOX_HGT_LABOVE + INTER_WIDGET_SPACE</p><p>  ui_button_create (form_id1, @</p>&l

66、t;p>  /*調(diào)用函數(shù)名*/ "sure", @</p><p>  /* x坐標(biāo)*/ x_loc, @</p><p>  /* y坐標(biāo)*/ y_loc, @</p><p>  /*按鈕的寬度 */ BUTTON_WID_THIRD, @</p><p>  /* 按鈕的高度 */ BUTTON_HGT, @&

67、lt;/p><p>  /*文字內(nèi)容 */ "關(guān)閉", @</p><p>  /* */ TRUE, @</p><p>  /*高亮度顯示為默認(rèn)的按鈕 */ TRUE)</p><p>  該函數(shù)所創(chuàng)建的控制鍵,如圖4。</p><p><b>  圖4 關(guān)閉控制鍵</b>&

68、lt;/p><p>  ui_button_create (form_id1, @</p><p>  /*調(diào)用函數(shù)名*/ "next", @</p><p>  /* x坐標(biāo)*/ x_loc+BUTTON_WID_THIRD+2*INTER_WIDGET_SPACE, @</p><p>  /* y坐標(biāo)*/ y_loc,

69、@</p><p>  /*按鈕的寬度 */ BUTTON_WID_THIRD, @</p><p>  /* 按鈕的高度 */ BUTTON_HGT, @</p><p>  /*文字內(nèi)容 */ "下一步...", @</p><p>  /* */ TRUE, @</p><p>  /*高亮度

70、顯示為默認(rèn)的按鈕 */ TRUE)</p><p>  END FUNCTION</p><p>  該函數(shù)所創(chuàng)建的控制鍵,如圖5。</p><p>  圖5 下一步控制鍵</p><p>  FUNCTION display ()</p><p>  ui_form_display ("bysj"

71、;)</p><p>  END FUNCTION</p><p>  /*****************建立關(guān)閉函數(shù)***************/</p><p>  FUNCTION sure ()</p><p>  ui_form_hide ("bysj")</p><p>  END

72、FUNCTION</p><p>  /*****************結(jié)束關(guān)閉頁(yè)面函數(shù)***************/</p><p>  /*****************建立選擇新頁(yè)面函數(shù)***************/</p><p>  /*****************建立選擇新頁(yè)面函數(shù)***************/</p><

73、;p>  FUNCTION next ()</p><p>  GLOBAL REAL bankuang, scd, x1, x2, x3, x4, x5</p><p>  ui_wid_get (dbox_bankuang, "VALUE", bankuang)</p><p>  ui_wid_get (dbox_scd, "

74、;VALUE", scd)</p><p>  ui_wid_get (dbox_x1,"VALUE", x1)</p><p>  ui_wid_get (dbox_x2,"VALUE", x2)</p><p>  ui_wid_get (dbox_x3,"VALUE", x3)</p&

75、gt;<p>  ui_wid_get (dbox_x4,"VALUE", x4)</p><p>  ui_wid_get (dbox_x5,"VALUE", x5)</p><p>  ui_exec_function ("bysj1","display")</p><p&

76、gt;  ui_form_hide ("bysj")</p><p>  ui_wid_save ("bysj")</p><p>  END FUNCTION</p><p><b>  END CLASS</b></p><p>  /*****************結(jié)束選擇

77、新頁(yè)面函數(shù)***************/</p><p>  CLASS bysj1</p><p>  CLASSWIDE WIDGET form_id1, dbox_cbkszzs, dbox_scdgdszzs</p><p>  FUNCTION init ()</p><p>  REAL x_loc, y_loc, label_

78、x_loc</p><p>  REAL db_length</p><p>  x_loc = UNFRAMED_L_MARGIN</p><p>  y_loc = FORM_T_MARGIN</p><p>  db_length = DBOX_WID_SPECIAL - DBOX_LABEL_LEN_SPECIAL - DBOX_LA

79、BEL_X_OFFSET</p><p>  form_id1 = ui_form_create ("", @</p><p>  /*相對(duì)于screen而言的x坐標(biāo)*/ FORM_X_LOC_SML, @</p><p>  /*相對(duì)于screen而言的y坐標(biāo)*/ FORM_Y_LOC, @</p><p>  /*相對(duì)

80、于哪個(gè)角落,本文選用左上角*/ "UL", @</p><p>  /*寬度*/ FORM_WID_SML, @</p><p>  /*高度*/ FORM_HGT_TALL, @</p><p>  /*標(biāo)簽*/ "畢業(yè)設(shè)計(jì)", @</p><p><b>  "" )&

81、lt;/b></p><p>  該函數(shù)所創(chuàng)建的標(biāo)簽,如圖6。</p><p>  圖6 畢業(yè)設(shè)計(jì)標(biāo)簽</p><p>  /*********創(chuàng)建作者信息的標(biāo)簽************/</p><p>  label_x_loc = BUTTON_THIRD_X_LOC2</p><p>  ui_labe

82、l_create(form_id1,"",label_x_loc,y_loc,"布種子")</p><p>  /*********創(chuàng)建加載到MPC或者分點(diǎn)力加載************/</p><p>  /*********************************創(chuàng)建艙口蓋特點(diǎn)的控件***************************

83、*********************/</p><p>  y_loc = y_loc + BUTTON_HGT + INTER_WIDGET_SPACE </p><p>  dbox_cbkszzs=ui_databox_create (form_id1,"", x_loc, y_loc, 1, db_length, "??:", &quo

84、t;", FALSE, "REAL", 1)</p><p>  y_loc = y_loc + DBOX_HGT_LABOVE + INTER_WIDGET_SPACE</p><p>  dbox_scdgdszzs=ui_databox_create (form_id1,"", x_loc, y_loc, 1, db_length,

85、"??:", "", FALSE, "REAL", 1)</p><p>  /*********************************創(chuàng)建計(jì)算艙口蓋特點(diǎn)的控件************************************************/</p><p>  y_loc = y_loc + DBOX_

86、HGT_LABOVE + INTER_WIDGET_SPACE</p><p>  ui_button_create (form_id1, @</p><p>  /*調(diào)用函數(shù)名*/ "sure", @</p><p>  /* x坐標(biāo)*/ x_loc, @</p><p>  /* y坐標(biāo)*/ y_loc, @</

87、p><p>  /*按鈕的寬度 */ BUTTON_WID_THIRD, @</p><p>  /* 按鈕的高度 */ BUTTON_HGT, @</p><p>  /*文字內(nèi)容 */ "確定", @</p><p>  /* */ TRUE, @</p><p>  /*高亮度顯示為默認(rèn)的按鈕 *

88、/ TRUE)</p><p>  該函數(shù)所創(chuàng)建的控制鍵,如圖7。</p><p><b>  圖7 確定控制鍵</b></p><p>  ui_button_create (form_id1, @</p><p>  /*調(diào)用函數(shù)名*/ "next", @</p><p>

89、;  /* x坐標(biāo)*/ x_loc+BUTTON_WID_THIRD+2*INTER_WIDGET_SPACE, @</p><p>  /* y坐標(biāo)*/ y_loc, @</p><p>  /*按鈕的寬度 */ BUTTON_WID_THIRD, @</p><p>  /* 按鈕的高度 */ BUTTON_HGT, @</p><p>

90、  /*文字內(nèi)容 */ "上一步...", @</p><p>  /* */ TRUE, @</p><p>  /*高亮度顯示為默認(rèn)的按鈕 */ TRUE)</p><p>  該函數(shù)所創(chuàng)建的控制鍵,如圖8。</p><p>  圖8 上一步控制鍵</p><p>  ui_wid_set (

91、dbox_scdgdszzs,"ENABLE", FALSE)</p><p>  ui_wid_set (dbox_cbkszzs,"ENABLE", FALSE)</p><p>  END FUNCTION</p><p>  FUNCTION display ()</p><p>  ui_fo

92、rm_display ("bysj1")</p><p>  END FUNCTION</p><p>  /*****************建立關(guān)閉函數(shù)***************/</p><p>  FUNCTION sure ()</p><p>  ui_form_hide ("bysj1"

93、;)</p><p>  ui_exec_function ("bysj2","play")</p><p>  END FUNCTION</p><p>  /*****************結(jié)束關(guān)閉頁(yè)面函數(shù)***************/</p><p>  /*****************建

94、立選擇新頁(yè)面函數(shù)***************/</p><p>  /*****************建立選擇新頁(yè)面函數(shù)***************/</p><p>  FUNCTION next ()</p><p>  GLOBAL REAL cbkszzs, scdgdszzs</p><p>  ui_wid_get (dbo

95、x_cbkszzs,"VALUE", cbkszzs)</p><p>  ui_wid_get (dbox_scdgdszzs,"VALUE", scdgdszzs)</p><p>  ui_exec_function ("bysj","display")</p><p>  ui_

96、form_hide ("bysj1")</p><p>  ui_wid_save ("bysj1")</p><p>  END FUNCTION</p><p><b>  END CLASS</b></p><p>  /*****************結(jié)束選擇新頁(yè)面函數(shù)*

97、**************/</p><p>  CLASS bysj2</p><p>  FUNCTION init ()</p><p>  END FUNCTION</p><p>  FUNCTION play ()</p><p>  GLOBAL REAL bankuang, scd, x1, x2,

98、x3, x4, x5</p><p>  STRING bankuangxx [VIRTUAL], zz [VIRTUAL], z1 [VIRTUAL], z2 [VIRTUAL], @</p><p>  z3 [VIRTUAL], z4 [VIRTUAL], z5 [VIRTUAL]</p><p>  STRING z6 [VIRTUAL], fem_crea

99、te_mesh_2_nodes_created [VIRTUAL], @</p><p>  fem_create_mesh_2_elems_created [VIRTUAL]</p><p>  STRING fem_transform_elem_created_nids [VIRTUAL], </p><p>  fem_transform_elem_creat

100、ed_eids [VIRTUAL],</p><p>  fem_transform_elem_deleted_nids [VIRTUAL], </p><p>  fem_transform_elem_deleted_eids [VIRTUAL]</p><p>  STRING asm_line_2point_created_ids [VIRTUAL]</

101、p><p>  STRING FEM_CREATE_MESH_C_NODES_CREATED [VIRTUAL]</p><p>  STRING FEM_CREATE_MESH_C_ELEMS_CREATED [VIRTUAL]</p><p>  INTEGER fem_create_mesh_2c_num_nodes</p><p>  I

102、NTEGER fem_create_mesh_2c_num_elems</p><p>  INTEGER fem_create_mesh_curve_num_nodes</p><p>  INTEGER fem_create_mesh_curve_num_elems</p><p>  /*****************變量傳遞***************/

103、</p><p>  STRING xx [VIRTUAL]</p><p>  sys_allocate_string (xx, 30)</p><p>  sys_allocate_string (bankuangxx, 20)</p><p>  sys_allocate_string (zz, 20)</p><p

104、>  sys_allocate_string (z1, 20)</p><p>  sys_allocate_string (z2, 20)</p><p>  sys_allocate_string (z3, 20)</p><p>  sys_allocate_string (z4, 20)</p><p>  sys_alloca

105、te_string (z5, 20)</p><p>  sys_allocate_string (z6, 20)</p><p>  sys_allocate_string (fem_create_mesh_2_nodes_created, 20)</p><p>  sys_allocate_string (fem_create_mesh_2_elems_cre

106、ated, 20)</p><p>  sys_allocate_string (fem_transform_elem_created_nids, 20)</p><p>  sys_allocate_string (fem_transform_elem_created_eids, 20)</p><p>  sys_allocate_string (fem_tra

107、nsform_elem_deleted_nids, 20)</p><p>  sys_allocate_string (fem_transform_elem_deleted_eids, 20)</p><p>  sys_allocate_string (asm_line_2point_created_ids, 20)</p><p>  sys_allocate

108、_string (FEM_CREATE_MESH_C_NODES_CREATED, 20)</p><p>  sys_allocate_string (FEM_CREATE_MESH_C_ELEMS_CREATED, 20)</p><p>  point_size (10)</p><p>  asm_const_grid_xyz ("1",

109、 "[0 0 0]", "Coord 0", xx)</p><p><b>  $# 創(chuàng)建第一個(gè)點(diǎn)</b></p><p>  bankuangxx="["//str_from_real (bankuang)//" "//"0 0]"</p><p

110、>  asm_const_grid_xyz ("2", bankuangxx,"Coord 0", xx)</p><p><b>  $# 創(chuàng)建第二個(gè)點(diǎn)</b></p><p>  zz="["//str_from_real (scd)//" "//"0 0]"

111、</p><p>  asm_const_grid_xyz ("3", zz,"Coord 0", xx)</p><p><b>  $# 創(chuàng)建第三個(gè)點(diǎn)</b></p><p>  $# 123點(diǎn)y方向偏移1210偏移</p><p>  z1="<0 "

112、;//str_from_real(x1)//" "//"0>"</p><p>  asm_transform_grid_translate_1 ("4", z1, x1, FALSE, "Coord 0", 1, @</p><p>  FALSE, FALSE, "Point 1:3&quo

113、t;, xx)</p><p>  z2="<0 "//str_from_real(x2)//" "//"0>"</p><p>  asm_transform_grid_translate_1 ("7", z2, x2, FALSE, "Coord 0", 1, @</p

114、><p>  FALSE, FALSE, "Point 1:3", xx)</p><p>  z3="<0 "//str_from_real(x3)//" "//"0>"</p><p>  asm_transform_grid_translate_1 ("10&qu

115、ot;, z3, x3, FALSE, "Coord 0", 1, @</p><p>  FALSE, FALSE, "Point 1:3", xx)</p><p>  z4="<0 "//str_from_real(x4)//" "//"0>"</p><

116、;p>  asm_transform_grid_translate_1 ("13", z4, x4, FALSE, "Coord 0", 1, @</p><p>  FALSE, FALSE, "Point 1:3", xx)</p><p>  z5="<0 0 "//"-"

117、//str_from_real(x5)//" "//">"</p><p>  asm_transform_grid_translate_1 ("16", z5, x5, FALSE, "Coord 0", 1, @</p><p>  FALSE, FALSE, "Point 1:15&quo

118、t;, xx)</p><p>  asm_const_line_2point( "1", "Point 1", "Point 4", 0, "", 50., 1, z6 )</p><p>  $# 1 Line created: Line 1</p><p>  asm_const_

119、line_2point( "2", "Point 2", "Point 5", 0, "", 50., 1, z6 )</p><p>  $# 1 Line created: Line 2</p><p>  asm_const_line_2point( "3", "Point

120、3", "Point 6", 0, "", 50., 1, z6 )</p><p>  $# 1 Line created: Line 3</p><p>  asm_const_line_2point( "4", "Point 4", "Point 7", 0, "&

121、quot;, 50., 1, z6 )</p><p>  $# 1 Line created: Line 4</p><p>  asm_const_line_2point( "5", "Point 5", "Point 8", 0, "", 50., 1, z6 )</p><p>

122、  $# 1 Line created: Line 5</p><p>  asm_const_line_2point( "6", "Point 6", "Point 9", 0, "", 50., 1, z6 )</p><p>  $# 1 Line created: Line 6</p>&

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論