2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩64頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  本科畢業(yè)論文</b></p><p><b> ?。?0 屆)</b></p><p>  基于MSC.PCL語(yǔ)言的錨機(jī)自動(dòng)加載程序二次開(kāi)發(fā)</p><p>  所在學(xué)院 </p><p>  專(zhuān)業(yè)班級(jí)

2、 船舶與海洋工程 </p><p>  學(xué)生姓名 學(xué)號(hào) </p><p>  指導(dǎo)教師 職稱(chēng) </p><p>  完成日期 年 月 </p><p><b>  目錄</b&

3、gt;</p><p><b>  中文摘要II</b></p><p><b>  英文摘要III</b></p><p><b>  1 緒 論1</b></p><p>  1.1 前 言1</p><p>  1.2 概 述1&l

4、t;/p><p>  1.3 PCL的主要功能2</p><p>  1.4 PCL的語(yǔ)言結(jié)構(gòu)及編譯使用2</p><p>  1.5 課題研究背景、內(nèi)容3</p><p>  1.5.1 研究背景3</p><p>  1.5.2 研究?jī)?nèi)容4</p><p>  2 PCL函數(shù)及

5、語(yǔ)法規(guī)則6</p><p>  2.1 概 述6</p><p>  2.2 主要函數(shù)6</p><p>  2.3 與C語(yǔ)言的交互性11</p><p>  2.4 PCL語(yǔ)言的變量和常量12</p><p>  3 自動(dòng)加載程序的開(kāi)發(fā)13</p><p>  3.1 設(shè)

6、置參數(shù)界面13</p><p>  3.2 加載函數(shù)文件48</p><p>  3.3 實(shí)例計(jì)算48</p><p><b>  4 總結(jié)50</b></p><p><b>  參考文獻(xiàn)51</b></p><p><b>  致 謝52

7、</b></p><p>  外文翻譯(原文)53</p><p>  外文翻譯(譯文)59</p><p><b>  摘要</b></p><p>  本文基于MSC.Patran內(nèi)置的PCL語(yǔ)言,開(kāi)發(fā)了錨機(jī)基座有限元分析系統(tǒng),實(shí)現(xiàn)了螺栓分布力的自動(dòng)加載,開(kāi)發(fā)有限元后處理系統(tǒng)界面,大大提高了螺栓分布力

8、的加載效率。程序一開(kāi)始獲取錨機(jī)參數(shù)值,設(shè)置參數(shù)界面,獲取錨機(jī)自重,破斷載荷。建立錨機(jī)加載界面,錨機(jī)螺栓特點(diǎn)界面。</p><p>  編寫(xiě)了批處理命令,對(duì)開(kāi)發(fā)的程序進(jìn)行統(tǒng)一編譯,縮短了程序開(kāi)發(fā)的時(shí)間,提高了效率。最后對(duì)4000DWT油船/化學(xué)品船首部錨機(jī)(Ф42-AM2液壓組合)進(jìn)行螺栓分點(diǎn)力加載計(jì)算。</p><p>  [關(guān)鍵詞] PCL;錨機(jī);二次開(kāi)發(fā);有限元分析</p>

9、<p>  THE SECOND DEVELOPMENT OF PROGRAM FOR ANCHOR WINCH WITH AUTOLOADING BASED OF A PCL</p><p>  [Abstract] This thesis is based of a PCL which is included in MSC.Patran,which develop an analysis sys

10、tem about finite element for Ancho Winch.This system achieve distributing force autoloading for the base of anchor. it is also develop the post process proram, it is proved that the whole program is practical.At the begi

11、ning of program ,we first acquire the parameter and set parameter interface to receive the weight of ancho and craking force.The pape develop a interface of ancho loading as well</p><p>  We also develop bat

12、ch program to compile the developed program,which shorten our time to develop program and improve efficiency。At last,we have calculated a ship’s anchor about distributing force with our program.</p><p>  [Ke

13、y words] PCL;anchor;the second develop; finite element analysis</p><p><b>  1 緒 論</b></p><p><b>  1.1 前 言</b></p><p>  MSC.Patran是世界公認(rèn)最佳的集集合訪問(wèn),有限元建模,分析求解及數(shù)

14、據(jù)可視化于一體的新一代框架式軟件系統(tǒng),通過(guò)其全新的“并行工程概念”和無(wú)與倫比的工程應(yīng)用模塊,將世界所有著名的CAD/ CAE/ CAM/ CAT(測(cè)試) 軟件系統(tǒng)及用戶自編程序自然地融為一體。MSC. Patran獨(dú)有的SGM(單一幾何模型) 技術(shù)可直接在幾何模型一級(jí)訪問(wèn)各類(lèi)CAD 軟件數(shù)據(jù)庫(kù)系統(tǒng),包括UG、Pro/ ENGI2NEER、CATIA、CADDSS、Euclid、SoildEdge 、Solid2works 、AutoDe

15、sk MDT 及I2DEAS 等各類(lèi)CAD/ CAM軟件數(shù)據(jù)庫(kù)。除了框架系統(tǒng)外,MSC. Patran還擁有功能強(qiáng)大的各種專(zhuān)用分析應(yīng)用模塊,主要包括:</p><p>  MSC. Patran FEA(提供了靜力、動(dòng)力、熱傳導(dǎo)、非線型及優(yōu)化靈敏度分析等功能);</p><p>  MSC. Patran THERMAL (專(zhuān)用工程自動(dòng)熱分析軟件系統(tǒng),可處理各種復(fù)雜的傳遞問(wèn)題,并提供了豐富

16、的與溫度相關(guān)的材料庫(kù)、對(duì)流關(guān)系庫(kù)及與時(shí)間和溫度相關(guān)的專(zhuān)業(yè)函數(shù)庫(kù));</p><p>  MSC. Patran LAMINATEMODELER(集復(fù)合材料設(shè)計(jì)、分析、制造于一體的軟件系統(tǒng))。</p><p>  PCL (MSC. Patran Command Language)語(yǔ)言是MSC. Patran的一個(gè)高級(jí)的模塊化結(jié)構(gòu)的編程語(yǔ)言和用戶自定義工具,隨同MSC.Patran一起發(fā)布。

17、使用PCL語(yǔ)言可以創(chuàng)建新的或者改進(jìn)MSC.Patran功能,能為特定應(yīng)用程序創(chuàng)建用戶界面和數(shù)據(jù)庫(kù),能夠調(diào)用MSC.Patran內(nèi)的所有函數(shù)和MSC.Patran的二次開(kāi)發(fā)技術(shù)。本文利用PCL語(yǔ)言對(duì)MSC.Patran進(jìn)行二次開(kāi)發(fā),編制了錨機(jī)載荷的自動(dòng)加載程序,實(shí)現(xiàn)錨機(jī)螺栓分力自動(dòng)加載,并通過(guò)將自編批處理程序與具有外部工具調(diào)用功能編輯器集成,開(kāi)發(fā)出了MSC.Patran的集成環(huán)境,并對(duì)軟件后處理系統(tǒng)集成化,有效地提高了工作效率。</

18、p><p><b>  1.2 概 述</b></p><p>  PCL語(yǔ)言類(lèi)似于C語(yǔ)言和FORTRAN語(yǔ)言,它包含與之相同的數(shù)據(jù)類(lèi)型,也具有大量的函數(shù)庫(kù)。除了基本的數(shù)學(xué)函數(shù)庫(kù)和系統(tǒng)訪問(wèn)的函數(shù)庫(kù)以外,它還提供了大量與有限元建模有關(guān)的函數(shù),如幾何建模函數(shù),網(wǎng)格自動(dòng)劃分函數(shù),載荷施加,屬性添加及結(jié)果后處理有關(guān)的函數(shù)。利用這些函數(shù),用戶可以編寫(xiě)自己的函數(shù),并用系統(tǒng)命令??!l

19、ibrary將其加載到Patran中,建立與NASTRAN的連接,可以在以后的建模中隨時(shí)調(diào)用。由于MSC.Patran 沒(méi)有自帶的程序編輯器,需要利用那些具有外部工具調(diào)用功能的編輯器,比如MicrosoftVisual C++、Editplus等。這些編輯器都支持用戶自己開(kāi)發(fā)的工具,首先要進(jìn)行相關(guān)的參數(shù)設(shè)置,添加PCL 工具菜單,將PCL開(kāi)發(fā)環(huán)境與批處理程序集成。設(shè)置完成后就可以在編寫(xiě)函數(shù)文件的同時(shí),直接通過(guò)編輯器進(jìn)行PCL 函數(shù)文件的

20、編譯、轉(zhuǎn)換等工作,極大地方便了程序開(kāi)發(fā)。</p><p>  在使用PCL語(yǔ)言進(jìn)行錨機(jī)螺栓分力自動(dòng)加載程序的編譯中,需要不斷對(duì)函數(shù)文件進(jìn)行編譯,調(diào)試。這就必須調(diào)用MSC.Patran自帶的編譯程序p3pclcomp.exe,通過(guò)Patran命令行或DOS窗口中輸入!!input*.pcl的方式來(lái)完成(*代表文件名)。在進(jìn)行圖形用戶界面開(kāi)發(fā)時(shí),那些表示控件大小和間距的標(biāo)準(zhǔn)參數(shù)是在appforms.p文件中定義的,在

21、界面函數(shù)文件的開(kāi)始部分使用#include“appforms.p”語(yǔ)句就可以鏈接這些定義。不過(guò),此類(lèi)界面函數(shù)文件還必須通過(guò)C預(yù)處理程序cpp.exe進(jìn)行轉(zhuǎn)換,也就是將*.pcl文件轉(zhuǎn)換為*.cpp文件后才能使用。在程序編寫(xiě)初期,需要反復(fù)使用這些程序和指令進(jìn)行錯(cuò)誤調(diào)試,格式轉(zhuǎn)換等工作,較為麻煩。所以本文編寫(xiě)了一系列批處理程序,使這些程序編譯,調(diào)試工作可以快速,準(zhǔn)確的完成,大大提高了工作效率。這些程序以bat文件格式保存,在DOS狀態(tài)下運(yùn)行

22、,DOS主要是一種面向磁盤(pán)的系統(tǒng)軟件,說(shuō)的簡(jiǎn)單些,DOS就是人與機(jī)器的一座橋梁,是罩在機(jī)器硬件外面的一層“外殼”,有了DOS,我們就不必去深入了解極其復(fù)雜的硬件結(jié)構(gòu),也不必去死記硬背那些枯燥的機(jī)器命令。我們</p><p>  1.3 PCL的主要功能</p><p>  1.命令行表達(dá)式輸入。2.可編譯的命令庫(kù)函數(shù)。3.豐富的表格及菜單庫(kù)供開(kāi)發(fā)用戶圖形界面。4.遞歸的子程序和函數(shù)

23、調(diào)用。5.同類(lèi)函數(shù)歸于一個(gè)類(lèi)。6.條件分子語(yǔ)句:if、then、else、swith、case、default、break、continue。7.條件循環(huán)語(yǔ)句:repeat、until、while、end while、for、to、by、end for、list、end list。8.用戶可定義的表格生成功能使用戶的PCL函數(shù)可通過(guò)菜單選項(xiàng)來(lái)執(zhí)行。9.數(shù)據(jù)庫(kù)的訪問(wèn)存取工具。10.整型、實(shí)型、邏輯型、字符串變量及常數(shù)。11.

24、局部、全局、靜態(tài)變量及類(lèi)變量。12.任意變量類(lèi)型的數(shù)組。13.虛擬內(nèi)存數(shù)組及數(shù)組內(nèi)存管理功能。14.跟蹤調(diào)試工具。15.數(shù)組排序和搜索。16.字符串函數(shù)包括大小寫(xiě)轉(zhuǎn)換和所寫(xiě)檢查。17.二進(jìn)制和文本文件讀寫(xiě)功能。18.多種數(shù)學(xué)函數(shù)程序。19.豐富的圖形函數(shù):繪點(diǎn)、線、虛圓或?qū)崍A、虛方塊或?qū)嵎綁K、虛多邊形或?qū)嵍噙呅?、在任意位置顯示文本、改變圖形寄存器。20.模型管理程序:比例縮放,轉(zhuǎn)動(dòng)、旋轉(zhuǎn)、平移。21.系統(tǒng)實(shí)用工具。&

25、lt;/p><p>  1.4 PCL的語(yǔ)言結(jié)構(gòu)及編譯使用</p><p>  PCL的語(yǔ)言結(jié)構(gòu):一個(gè)PCL程序類(lèi)似于C或者FORTRAN的函數(shù),在第一行必須以FUNCTION開(kāi)頭一行以END FUNCTION結(jié)尾,中間為函數(shù)段,PCL函數(shù)的定義格式如下:</p><p>  FUNCTION function(arg)</p><p><

26、;b>  程序段</b></p><p>  END FUNCTION</p><p>  使用時(shí),直接function(arg)執(zhí)行就行了。</p><p>  PCL的編譯和使用:Patran提供了一個(gè)PCL的編譯程序p3pclcomp,在DOS窗口下可以執(zhí)行p3pclcomp,會(huì)出現(xiàn)“->”提示符,可以在提示符后輸入PCL編譯連接的指令

27、,也可以直接在PATRAN圖形窗口的命令條中直接輸入PCL編譯連接的指令,常用的PCL編譯命令包括:1.input:讀入PCL文件并編譯解釋?zhuān)么朔椒梢灾苯邮褂肞CL文件。其具體使用說(shuō)明格式為:!!input file.pcl2.compile:將PCL程序編譯成PATRAN的庫(kù)文件,用此方法可以把文本文件編譯成二進(jìn)制文件,方便程序調(diào)用,而且可以進(jìn)行程序的封裝。其具體使用格式為:!!compile file.pcl libra

28、ry.plb3.library:加載和組織PATRAN庫(kù)文件??梢约虞d任意個(gè)庫(kù)文件,也可以組織管理,包括合并,刪除程序類(lèi)庫(kù)。 常用的使用說(shuō)明格式為:    !!library   [add] library.plb(library.plb...)    !!library   [remove] library.plb(library

29、.plb...)    !!libra</p><p>  1.5 課題研究背景、內(nèi)容</p><p>  1.5.1 研究背景</p><p>  起錨機(jī)作為現(xiàn)代船舶整體結(jié)構(gòu)中不可或缺的一部分,其受力情況往往比較復(fù)雜,不能簡(jiǎn)單的作為船體的某一局部考慮,而需要結(jié)合船舶的整體進(jìn)行考慮. 起錨機(jī)結(jié)構(gòu)除了承受自身的重力荷載外,還要承受繩索

30、的破斷力作用以及迎風(fēng)面和側(cè)面風(fēng)荷載作用. 如若遇到較大波浪作用,還需經(jīng)受波浪力的考驗(yàn)。由于起錨機(jī)是船體結(jié)構(gòu)的一部分,起錨機(jī)在受到上述荷載時(shí)也是對(duì)船體結(jié)構(gòu)的一種考驗(yàn),尤其是與起錨機(jī)直接相連的船體甲板部分。利用有限元計(jì)算軟件對(duì)已設(shè)計(jì)好的船體結(jié)構(gòu)進(jìn)行分析驗(yàn)算,已成為當(dāng)前結(jié)構(gòu)設(shè)計(jì)中十分重要的環(huán)節(jié)。錨機(jī)有限元分析過(guò)程中,螺栓分點(diǎn)力的加載過(guò)程非常復(fù)雜。MSC的Patran Command Language語(yǔ)言提供了豐富表格和菜單庫(kù),供用戶開(kāi)發(fā)自編分

31、析程序和圖形界面,PCL語(yǔ)言被廣泛應(yīng)用于船體結(jié)構(gòu)參數(shù)化建模與外載荷自動(dòng)加載計(jì)算。本文采用自動(dòng)加載方法大幅度的提高了工作效率,有效地避免了數(shù)據(jù)錄入錯(cuò)誤的發(fā)生,使得有關(guān)科研人員可以輕松地運(yùn)用自動(dòng)加載的方法完成有限元分析時(shí)大量離散壓力的施加。</p><p>  1.5.2 研究?jī)?nèi)容</p><p>  MSC的Patran Command Language語(yǔ)言提供了豐富表格和菜單庫(kù),供用戶開(kāi)發(fā)

32、自編分析程序和圖形界面。而對(duì)錨機(jī)螺栓分布力進(jìn)行加載計(jì)算時(shí),其過(guò)程是相當(dāng)復(fù)雜的,但考慮到其計(jì)算步驟是確定的和機(jī)械的,所以結(jié)合Patran的優(yōu)點(diǎn),開(kāi)發(fā)出一套自動(dòng)加載程序并對(duì)后處理集成化。</p><p>  錨機(jī)是主要的船用錨系泊設(shè)備,其主要作用是保持船位不變,船舶緊急制動(dòng),使船安全靠離碼頭。錨機(jī)一般位于船首首樓甲板,在工作環(huán)境下一般受到錨鏈的作用,在船舶運(yùn)營(yíng)中錨機(jī)承受波浪的作用,這就要求錨機(jī)在甲板上的固定及支撐結(jié)構(gòu)

33、要達(dá)到合理的結(jié)構(gòu)強(qiáng)度,根據(jù)規(guī)范要求,需要校核甲板上浪工況和錨鏈破斷工況,其中甲板上浪分為右舷上浪(工況1)和左舷上浪(工況2),錨鏈破斷(工況3),按照CCS規(guī)范將各種工況計(jì)算所得的力分解至各個(gè)螺栓分別加載。作用在第i個(gè)螺栓組的軸向力按公式計(jì)算:</p><p><b>  式中:</b></p><p>  —垂直于軸線的作用力,單位kn;</p>&

34、lt;p>  —平行于軸線的作用力,單位kn;</p><p>  —絞車(chē)軸線離安裝平面的高度,單位cm;</p><p>  —第i個(gè)螺栓組到所有N個(gè)螺栓組的中心的x和y方向的坐標(biāo),單位cm;</p><p>  —螺栓組所有螺栓橫剖面面積之和,單位;</p><p><b>  —;</b></p>

35、;<p><b>  —;</b></p><p>  —由絞車(chē)和錨機(jī)重量之和作用在第i個(gè)螺栓的靜反力,單位kn。</p><p><b>  絞車(chē)和錨機(jī)重量:</b></p><p>  作用在第i個(gè)螺栓組上的剪切力以及合成力按下式計(jì)算:</p><p><b>  式中:

36、</b></p><p>  ——摩擦系數(shù),取0.5;</p><p>  ——錨機(jī)和絞車(chē)總重量8.658t;</p><p>  ——重力加速度,取9.81;</p><p><b>  ——螺栓組數(shù)量;</b></p><p>  g———重力加速度,取9.81 m/s。</

37、p><p>  加載方式:采用主從節(jié)點(diǎn)連接錨機(jī)形心與各個(gè)螺栓,直接將載荷施加于錨機(jī)形心處。</p><p>  2 PCL函數(shù)及語(yǔ)法規(guī)則</p><p><b>  2.1 概 述</b></p><p>  所有的MSC.Patran 命令首先是由PCL編譯器所編譯過(guò)的,PCL表達(dá)式是由C語(yǔ)言程序所編譯的。PCL函數(shù)能

38、被編譯到庫(kù)函數(shù)中,與MSC.Patran文件相聯(lián)系。MSC.Patran的內(nèi)置函數(shù)是由C或FORTRAN所編寫(xiě)的。其邏輯圖如圖1:</p><p><b>  2.2 主要函數(shù)</b></p><p>  1.ui_form_create ( callback, x, y, position, width, height, label, [unused] )。該函數(shù)

39、用于創(chuàng)建任務(wù)窗口,如圖2。</p><p><b>  參數(shù)解釋?zhuān)?lt;/b></p><p>  callback:活動(dòng)窗口中的事件響應(yīng)函數(shù),由于該窗口并沒(méi)有聲明事件,所以該值設(shè)置為“”。</p><p>  X:相對(duì)于屏幕的橫坐標(biāo)。</p><p>  Y:相對(duì)于屏幕的縱坐標(biāo)。</p><p> 

40、 Position:設(shè)置該活動(dòng)窗口在屏幕中的位置,“UL”,“UR”,“LL”和“LR”分別表示該活動(dòng)窗口位于屏幕的左上角,右上角,左下角,右下角。</p><p>  Width:表格的寬度。</p><p>  Height:表格的高度。</p><p>  Label:用于顯示在當(dāng)前的活動(dòng)名。</p><p>  ui_label_cr

41、eate ( parent, callback, x, y, label )。該函數(shù)用于創(chuàng)建當(dāng)前活動(dòng)窗口的名字,但是并不能被修改和選擇,用于提供一些附加的說(shuō)明信息。如圖3。</p><p>  Parent:新創(chuàng)建的父類(lèi)窗口,只能是已經(jīng)建立的的活動(dòng)窗口。</p><p>  Callback:不用設(shè)置。</p><p><b>  X:窗口的橫坐標(biāo)。<

42、;/b></p><p><b>  Y:窗口的縱坐標(biāo)。</b></p><p>  Label:用于顯示的文本內(nèi)容。</p><p>  2.ui_separator_create (parent, name, x, y, length, horizontal )。該函數(shù)用于建立分割窗口標(biāo)簽。</p><p> 

43、 Parent:新創(chuàng)建的父類(lèi)窗口,只能是已經(jīng)建立的活動(dòng)窗口。</p><p>  Name:分割標(biāo)簽的名字。</p><p>  X:分割標(biāo)簽的橫坐標(biāo)。</p><p>  Y:分割標(biāo)簽的縱坐標(biāo)。</p><p>  Length:分割標(biāo)簽的長(zhǎng)度。</p><p>  Horizontal:若分割標(biāo)簽是水平的,則該值設(shè)

44、置為true,若該分割標(biāo)簽是垂直的,則該值設(shè)置為false。</p><p>  3.ui_databox_create(parent, callback, x, y, label_length, box_length, label, value,</p><p>  label_above, datatype, num_vals)。盡管數(shù)據(jù)庫(kù)只能接受一行信息,但是這個(gè)信息卻可以很長(zhǎng),該函

45、數(shù)用于建立參數(shù)輸入框。</p><p>  Parent:父類(lèi)地址。</p><p>  Callback:PCL函數(shù)名字,這個(gè)函數(shù)要事先在類(lèi)聲明中定義。</p><p><b>  X:位置坐標(biāo)。</b></p><p><b>  Y:位置坐標(biāo)。</b></p><p>

46、  Label_length:按鈕寬度。</p><p>  Box_length:按鈕高度。</p><p>  Label:用于顯示按鈕文本,描述了數(shù)據(jù)框的內(nèi)容,如果不分配按鈕名字,用“”來(lái)代替該label值,并且設(shè)置label_above值為FALSE</p><p>  Value:用于顯示數(shù)據(jù)框內(nèi)部的數(shù)值,如果數(shù)據(jù)框的初始值未被設(shè)定,則設(shè)定“”作為初始值。

47、</p><p>  Label_above:標(biāo)題被設(shè)置在數(shù)據(jù)框的頂部,則該值被設(shè)定為T(mén)RUE,標(biāo)題被設(shè)置在數(shù)據(jù)框的底部,則該值被設(shè)定FALSE。</p><p>  4.ui_wid_get (widget, parm, value)。該函數(shù)用于接收窗口參數(shù)的初始值。</p><p>  widget:其數(shù)值是被詢問(wèn)是否接收。</p><p&g

48、t;<b>  Parm:參數(shù)名。</b></p><p>  Value:參數(shù)值。</p><p>  5.sys_allocate_string ( string, size )。該函數(shù)用于對(duì)PCL虛擬串變量分配儲(chǔ)存空間。</p><p>  6.ui_wid_get_vstring (widget, parm, vstr )。用于獲取串參

49、數(shù)的值,其返回值是虛擬的串變量。</p><p>  sys_allocate_array (array,lb1,hb1 [,lb2, hb2 [,lb3,hb3 [,lb4, hb4 ]]])。</p><p>  Lb1:一維數(shù)組的低值約束。</p><p>  hb1:一維數(shù)組的高值約束。</p><p>  lb2:二維數(shù)組的低值約束

50、。</p><p>  Hb2:二維數(shù)組的高值約束。</p><p>  Lb3:三位數(shù)組的低值約束。</p><p>  Hb3:三維數(shù)組的高值約束。</p><p>  Lb4:四位數(shù)組的低值約束。</p><p>  Hb4:四維數(shù)組的高值約束。</p><p>  7.ui_spread

51、_create:該函數(shù)用于創(chuàng)建參數(shù)輸入表格。在用該函數(shù)創(chuàng)建表格時(shí),需要?jiǎng)?chuàng)建后臺(tái)數(shù)據(jù)處理函數(shù)。也就是說(shuō),該函數(shù)只是給數(shù)據(jù)造了一個(gè)房子,但是我們需要這些數(shù)據(jù)在房子里被加工,這時(shí)就需要?jiǎng)?chuàng)建一個(gè)spread_cb函數(shù):</p><p>  FUNCTION spread_cb(status,from_c,from_r, to_c, to_r,layer)</p><p>  STRING stat

52、us[]</p><p>  GLOBAL INTEGER from_c, to_c, from_r, to_r, layer</p><p>  STRING cell_data[30]</p><p>  /***********這個(gè)命令即為當(dāng)點(diǎn)中spread中的任何一個(gè)時(shí),顯示在selectdatabox中的</p><p>  數(shù)據(jù)*

53、**********/</p><p>  IF((from_c ==to_c)&&(from_r ==to_r)) THEN</p><p>  ui_spread_get_cell(nodes_spread, from_c, from_r, 1, cell_data)</p><p>  ui_wid_set(nodes_select, &quo

54、t;VALUE",cell_data)</p><p><b>  ELSE</b></p><p>  ui_wid_set(nodes_select, "VALUE","")</p><p><b>  END IF</b></p><p>  

55、END FUNCTION</p><p>  /**********結(jié)束SPREAD_cb函數(shù)****************/</p><p>  8.ui_spread_get_cell ( widget_id, col, row, layer, value ),該函數(shù)用于獲取表格輸入?yún)?shù)的地址。</p><p>  Widget:必須是表格函數(shù)名。</p

56、><p>  Col:接受參數(shù)的列。</p><p>  Row:接受參數(shù)的行。</p><p>  Layer:接受參數(shù)的層。</p><p>  9.ui_optionmenu_create ( parent, callback, x, y, label_length, label, label_above )。該函數(shù)用于創(chuàng)建下拉菜單選項(xiàng),其

57、選項(xiàng)是一組垂直顯示的任務(wù),但是這些任務(wù)只有用戶選中后才能執(zhí)行。如圖4:</p><p>  parent:父系地址,必須是一個(gè)框架名,一個(gè)窗口名。</p><p>  Callback:該窗口的命令響應(yīng)函數(shù),這個(gè)函數(shù)必須在類(lèi)中定義創(chuàng)建。</p><p><b>  X:坐標(biāo)。</b></p><p><b> 

58、 Y:坐標(biāo)。</b></p><p>  Label_length:標(biāo)簽長(zhǎng)度。</p><p>  Label:用于顯示選擇框的名字。</p><p>  Label_above:標(biāo)簽顯示在菜單選項(xiàng)的上面,則該值被設(shè)定為T(mén)RUE,標(biāo)簽顯示在菜單選項(xiàng)的左邊,則該值被設(shè)定為FALSE。</p><p>  這里要注意的是選項(xiàng)菜單必須被

59、選中后,才能執(zhí)行該響應(yīng)函數(shù),除非是當(dāng)前的工作狀態(tài)就是執(zhí)行目前的任務(wù)。</p><p>  10.ui_item_create ( parent, name, label, toggleable, options ),用于創(chuàng)建一個(gè)一個(gè)任務(wù)控制鍵,其下拉任務(wù)中包含多重選擇任務(wù)。如圖5,</p><p>  parent:父系窗口。</p><p>  name:窗口活動(dòng)

60、件的名字,這個(gè)名字通常作為事件訪問(wèn)函數(shù)的名字,如果沒(méi)有引用訪問(wèn)函數(shù),就設(shè)置為“”。</p><p>  Label:被用來(lái)顯示窗口的活動(dòng)與否,如果該值被設(shè)為“”或者其父系窗口是選擇菜單,則該條目將被設(shè)定為隱藏。</p><p>  Toggleable:該值的設(shè)置僅用于菜單選項(xiàng),如果希望該條目顯示出相鄰的條目,則該值設(shè)置為T(mén)RUE,如果該值設(shè)置,則該條目?jī)H有一個(gè)值,為FALSE,則該條目?jī)H

61、有一個(gè)值。</p><p>  需要注意的是用該函數(shù)創(chuàng)建的下拉菜單中的任務(wù)相對(duì)其它任務(wù)的位置是按照父系函數(shù)的數(shù)據(jù)類(lèi)型所定義的。</p><p>  11.ui_labelicon_create ( parent, callback, x, y, iconname )。該函數(shù)用于創(chuàng)建多重命令窗口,如圖6。</p><p>  Parent:新創(chuàng)建的父類(lèi)活動(dòng)窗口。<

62、;/p><p>  Callback:無(wú)效果,該值設(shè)置為“”。</p><p>  X:該活動(dòng)窗口的橫坐標(biāo)。</p><p>  Y:該活動(dòng)窗口的縱坐標(biāo)。</p><p>  Iconname:包含該復(fù)合窗口內(nèi)部信息的文件名。</p><p>  2.3 與C語(yǔ)言的交互性</p><p>  PC

63、L的語(yǔ)法規(guī)則與C語(yǔ)言的規(guī)則較為相近,實(shí)際上在開(kāi)發(fā)MSC.Patran的過(guò)程中,C,RORTRAN和PCL源代碼是同時(shí)運(yùn)用的,換句話說(shuō),Patran的源文件是通過(guò)C語(yǔ)言開(kāi)發(fā)出來(lái)的。運(yùn)用C語(yǔ)言有許多優(yōu)點(diǎn),包括交互性,兼容性等,這樣就增加了源代碼開(kāi)發(fā)的可讀性,特別是借助C語(yǔ)言的宏定義,這樣會(huì)大大提高程序的運(yùn)行效率。例如下面的選擇語(yǔ)句的編寫(xiě):</p><p>  #define NODE 1</p><

64、;p>  #define ELEMENT 2</p><p>  IF ( entity == NODE ) THEN</p><p><b>  xxx</b></p><p>  ELSE IF ( entity == ELEMENT ) THEN</p><p><b>  xxx</b>

65、;</p><p><b>  END IF</b></p><p>  當(dāng)然我們可以這樣替代:</p><p>  IF ( entity == 1 ) THEN</p><p><b>  xxx</b></p><p>  ELSE IF ( entity == 2 )

66、 THEN</p><p><b>  xxx</b></p><p><b>  END IF</b></p><p>  另外,這些宏定義名可以放在include包含文件中,通過(guò)#define定義聲明。通過(guò)集中定義可以使程序簡(jiǎn)潔,代碼簡(jiǎn)單。需要注意的是,一般C語(yǔ)言會(huì)自動(dòng)進(jìn)行預(yù)編譯,如果被嵌入FORTRAN或PCL中,這

67、些源文件一定要進(jìn)行預(yù)編譯,其編譯語(yǔ)句如下:</p><p>  customization <input_file_name> <output_file_name></p><p>  2.4 PCL語(yǔ)言的變量和常量 </p><p>  PCL變量要預(yù)先定義類(lèi)型,范圍,維數(shù),所有的變量的名字所占用的字節(jié)為1到31位。合法的變量類(lèi)型包括整形

68、,實(shí)型,邏輯值,數(shù)據(jù)串類(lèi)型,窗口值。要定義變量的作用范圍和作用時(shí)間。</p><p>  Integer:整形變量聲明只要在變量名字前聲明就可以了。例如:INTEGER a, b, c</p><p>  Logical:邏輯變量聲明的格式為logical變量名,邏輯返回值為true或false。</p><p>  Real:實(shí)型變量的聲明格式為Real變量名,冪

69、的數(shù)值大小為1.e-30到1.e30。</p><p>  Strings:數(shù)據(jù)串類(lèi)型的聲明只要在對(duì)應(yīng)的變量名前就可以了,但是要注意聲明數(shù)據(jù)最大長(zhǎng)度,例如:STRING name[20], option[130]。PCL串變量的長(zhǎng)度數(shù)會(huì)自動(dòng)達(dá)到預(yù)先聲明的最大值。例如:STRING line[40]</p><p>  line = “ABC”</p><p>  l

70、ine = line // “ ”</p><p>  line = line // “DEF”</p><p>  則該line變量被定義為“ABCDEF”沒(méi)有尾格,這一點(diǎn)是和FORTRAN不同的。</p><p>  Widgets:其定義格式如下:WIDGET myform, mybutton。窗口變量?jī)H僅用于用戶與程序的交換,窗口變量可以嵌套在用戶定義的函數(shù)

71、中或其他的窗口中。窗口的常量的值是WIDGET_NULL.如果程序執(zhí)行失敗,則窗口變量的返回值為WIDGET_NULL。要對(duì)窗口變量進(jìn)行初始化時(shí),其初始值被設(shè)定為WIDGET_NULL。</p><p>  3 自動(dòng)加載程序的開(kāi)發(fā)</p><p>  3.1 設(shè)置參數(shù)界面</p><p>  錨機(jī)有限元分析系統(tǒng)的程序框架分為四步,錨機(jī)特征參數(shù)輸入,螺栓分布力輸入,

72、加載分析計(jì)算,后處理系統(tǒng),程序一開(kāi)始獲取錨機(jī)參數(shù)值,設(shè)置參數(shù)界面,獲取錨機(jī)自重、破斷載荷等。要實(shí)現(xiàn)人機(jī)互動(dòng),提高錨機(jī)螺栓分布力自動(dòng)加載,要設(shè)置合理的界面,易于操作,并且符合MSC.Patran的操作規(guī)則。</p><p>  程序的開(kāi)始,進(jìn)行文件聲明,如下:</p><p>  #include "appforms.p"</p><p>  #i

73、nclude "uiforms.p"</p><p>  #include "lpenums.i"</p><p>  #include "pdamsg.h"</p><p>  #include "lpkeywords.i"</p><p>  /*******

74、**文件包含聲明*********/</p><p>  /*********appform.p和uiforms.p文件是用PCL函數(shù)編寫(xiě)文件,創(chuàng)建了MSC.Patran的命令欄*********/</p><p>  CLASS maoji</p><p>  CLASSWIDE WIDGET form_id1, loads_type, dbox_weight,

75、dbox_loads, dbox_degree,</p><p>  dbox_breadth, dbox_waveheight, dbox_length, dbox_height</p><p>  /*********類(lèi)函數(shù)聲明*********/</p><p>  FUNCTION init()</p><p>  REAL x_lo

76、c,y_loc,label_x_loc</p><p>  REAL db_length</p><p>  /*********定義數(shù)據(jù)類(lèi)型*********/</p><p>  x_loc = UNFRAMED_L_MARGIN</p><p>  y_loc = FORM_T_MARGIN</p><p>  

77、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><p>

78、  /*相對(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>  /*標(biāo)簽*/ &quo

79、t;錨機(jī)加載", @ “”)</p><p>  /*********************/</p><p>  該函數(shù)所創(chuàng)建的控制鍵如圖7。</p><p>  /*********創(chuàng)建作者信息的標(biāo)簽************/</p><p>  label_x_loc = BUTTON_THIRD_X_LOC2</p&

80、gt;<p>  ui_label_create(form_id1,"",label_x_loc,y_loc,"船建")該函數(shù)所創(chuàng)建的控制鍵如圖8。</p><p>  /*********創(chuàng)建加載到MPC或者分點(diǎn)力加載************/</p><p>  y_loc = y_loc + BUTTON_HGT + INTER_

81、WIDGET_SPACE</p><p>  loads_type = ui_optionmenu_create(form_id1, @</p><p>  /*調(diào)用函數(shù)的名稱(chēng)*/ "function_type", @</p><p>  /*x坐標(biāo)*/ x_loc, @</p><p>  /*y坐標(biāo)*/ y_loc,

82、@</p><p>  /*標(biāo)簽的長(zhǎng)度*/ 1.2, @</p><p>  "功能的選取:", @</p><p>  /*TRUE表示標(biāo)簽在上面,FALSE表示在左邊*/</p><p><b>  FALSE )</b></p><p>  ui_item_create(

83、loads_type, @</p><p>  /*調(diào)用函數(shù)的實(shí)參*/ "", @</p><p>  /*標(biāo)簽*/ "請(qǐng)選擇", @</p><p>  /*這個(gè)選項(xiàng)只有一個(gè)值*/ FALSE)該函數(shù)所創(chuàng)建的控制鍵為圖9。</p><p>  ui_item_create(loads_type,&qu

84、ot;concertratedforces","集中力MPC加載",FALSE)</p><p>  /****************這里的concertratedforces為實(shí)參,即當(dāng)執(zhí)行該命令時(shí),將以concertratedforces為引導(dǎo)地址****************/</p><p>  ui_item_create(loads_type,

85、"forces","分力加載",FALSE)</p><p>  /*********************************創(chuàng)建錨機(jī)特點(diǎn)的控件************************</p><p>  ************************/</p><p>  /****************

86、***以上concertratedforces和forces作為新參數(shù)界面的實(shí)參,當(dāng)執(zhí)行不同的任務(wù)時(shí),工作窗口將進(jìn)行切換</p><p>  *******************/</p><p>  y_loc = y_loc + BUTTON_HGT + INTER_WIDGET_SPACE</p><p>  dbox_weight=ui_databox_c

87、reate(form_id1,"", x_loc, y_loc, 1, db_length,</p><p>  "錨(絞)機(jī)重W(t):", "", FALSE, "REAL", 1)</p><p>  y_loc = y_loc + DBOX_HGT_LABOVE + INTER_WIDGET_SPACE

88、</p><p>  dbox_loads=ui_databox_create(form_id1,"", x_loc, y_loc, 1, db_length,</p><p>  "破斷載荷F(KN):", "", FALSE, "REAL", 1)</p><p>  y_loc =

89、 y_loc + DBOX_HGT_LABOVE + INTER_WIDGET_SPACE</p><p>  dbox_degree=ui_databox_create(form_id1,"", x_loc, y_loc, 1, db_length,</p><p>  "錨鏈與水平面夾角θ(度):","", FALSE, &q

90、uot;REAL", 1)</p><p>  /*********************************創(chuàng)建計(jì)算錨機(jī)特點(diǎn)的控件********************</p><p>  ****************************/</p><p>  y_loc = y_loc + DBOX_HGT_LABOVE + INTER

91、_WIDGET_SPACE</p><p>  所創(chuàng)建參數(shù)接受界面如圖10。</p><p>  /*********************************創(chuàng)建一個(gè)書(shū)簽隔頁(yè)**************************</p><p>  **********************/</p><p>  ui_separat

92、or_create(form_id1,"",x_loc,y_loc,2.4,TRUE)</p><p>  y_loc = y_loc + DBOX_HGT_LABOVE + INTER_WIDGET_SPACE</p><p>  dbox_breadth = ui_databox_create(form_id1,"", x_loc, y_loc,

93、 1, db_length,</p><p>  "錨(絞)計(jì)算寬度B(m):", "", FALSE, "REAL", 1)</p><p>  y_loc = y_loc + DBOX_HGT_LABOVE + INTER_WIDGET_SPACE</p><p>  dbox_height = ui_

94、databox_create(form_id1,"", x_loc, y_loc, 1, db_length,</p><p>  "錨(絞)最大高度D(m):", "", FALSE, "REAL", 1)</p><p>  y_loc = y_loc + DBOX_HGT_LABOVE + INTER_W

95、IDGET_SPACE</p><p>  dbox_length = ui_databox_create(form_id1,"", x_loc, y_loc, 1, db_length,</p><p>  "錨(絞)長(zhǎng)度L(m):", "", FALSE, "REAL", 1)</p><

96、;p>  y_loc = y_loc + DBOX_HGT_LABOVE + INTER_WIDGET_SPACE</p><p>  dbox_waveheight = ui_databox_create(form_id1,"", x_loc, y_loc, 1, db_length,</p><p>  "錨(絞)上浪高度h(m):", &

97、quot;", FALSE, "REAL", 1)</p><p>  y_loc = y_loc + DBOX_HGT_LABOVE + INTER_WIDGET_SPACE</p><p>  ui_button_create(form_id1, @</p><p>  /*調(diào)用函數(shù)名*/ "sure", @&l

98、t;/p><p>  /* x坐標(biāo)*/ x_loc, @</p><p>  /* y坐標(biāo)*/ y_loc, @</p><p>  /*按鈕的寬度 */ BUTTON_WID_THIRD, @</p><p>  /* 按鈕的高度 */ BUTTON_HGT, @</p><p>  /*文字內(nèi)容 */ "關(guān)閉

99、", @</p><p>  /* */ TRUE, @</p><p>  /*高亮度顯示為默認(rèn)的按鈕 */ TRUE)</p><p>  ui_button_create(form_id1, @</p><p>  /*調(diào)用函數(shù)名*/ "next", @</p><p>  /* x

100、坐標(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>  /*文字內(nèi)

101、容 */ "下一步...", @</p><p>  /* */ TRUE, @</p><p>  /*高亮度顯示為默認(rèn)的按鈕 */ TRUE)</p><p>  END FUNCTION</p><p>  上述程序用于創(chuàng)建了參數(shù)輸入界面,如圖11。</p><p>  ui_form_dis

102、play("maoji")</p><p>  END FUNCTION</p><p>  /*****************建立關(guān)閉函數(shù)***************/</p><p>  FUNCTION sure()</p><p>  ui_form_hide("maoji")</p&

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

104、<p>  STRING type[]</p><p>  GLOBAL REAL F</p><p>  IF(type == "concertratedforces")THEN</p><p><b>  F=1</b></p><p>  ELSE IF (type == &quo

105、t;forces")THEN</p><p><b>  F=2</b></p><p><b>  END IF</b></p><p>  END FUNCTION</p><p>  /*****************建立選擇新頁(yè)面函數(shù)***************/</p&

106、gt;<p>  FUNCTION next()</p><p>  GLOBAL REAL weight, breakloads, degree, breadth, height, length, waveheight</p><p>  ui_wid_get(dbox_weight,"VALUE",weight)</p><p>

107、;  ui_wid_get(dbox_loads,"VALUE",breakloads)</p><p>  ui_wid_get(dbox_degree,"VALUE",degree)</p><p>  ui_wid_get(dbox_breadth,"VALUE",breadth)</p><p> 

108、 ui_wid_get(dbox_height,"VALUE",height)</p><p>  ui_wid_get(dbox_length,"VALUE",length)</p><p>  ui_wid_get(dbox_waveheight,"VALUE",waveheight)</p><p>

109、  /*********以上函數(shù)命令用于獲取輸入的參數(shù)***********/</p><p>  ui_exec_function("luoshuan","display")</p><p>  ui_form_hide("maoji")</p><p>  ui_wid_save("maoji

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

111、LASSWIDE WIDGET form_luoshuan,luoshuan_count,labelicon_1,luoshuan_nodes,</p><p>  dbox_alltogether,coordinates_select</p><p>  CLASSWIDE WIDGET luoshuan_type, x_coordinate,</p><p> 

112、 y_coordinate,cnodes_selectframe, cnodes_select,nodes_mpc,text</p><p>  FUNCTION init()</p><p>  REAL x_loc,y_loc,frame_height,db_length, node_frame_height,csframe_height</p><p>  G

113、LOBAL REAL F</p><p>  x_loc = FORM_L_MARGIN</p><p>  y_loc = FORM_T_MARGIN</p><p>  db_length = DBOX_WID_SPECIAL - DBOX_LABEL_LEN_SPECIAL - DBOX_LABEL_X_OFFSET</p><p> 

114、 frame_height = FRAME_T_MARGIN + INTER_WIDGET_SPACE + 2*DBOX_HGT_LABOVE +</p><p>  2*INTER_WIDGET_SPACE + FRAME_B_MARGIN</p><p>  csframe_height = SFRAME_T_MARGIN + INTER_WIDGET_SPACE +SDBOX_HGT

115、_LABOVE +</p><p>  INTER_WIDGET_SPACE + SFRAME_B_MARGIN</p><p>  form_luoshuan = ui_form_create("", @</p><p>  /*相對(duì)于screen而言的x坐標(biāo)*/ FORM_X_LOC_SML, @</p><p>  

116、/*相對(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>  /*標(biāo)簽*/ "

117、錨機(jī)螺栓特點(diǎn)", @ “”)。該函數(shù)所創(chuàng)建的活動(dòng)控制鍵如圖12。</p><p>  luoshuan_count = ui_frame_create(form_luoshuan, @</p><p>  /*調(diào)用函數(shù)*/ "", @</p><p>  /*x坐標(biāo) */ x_loc,@</p><p>  /*

118、y坐標(biāo) */ y_loc, @</p><p>  /*frame的寬度 */ FRAME_WID_SINGLE, @</p><p>  /*frame的高度</p><p>  /******注意包含了一個(gè)按鈕,所以要足夠高******/</p><p>  frame_height, @</p><p>  /*

119、frame的標(biāo)簽*/ "螺栓的分布特點(diǎn)")</p><p>  x_loc = FRAME_L_MARGIN</p><p>  y_loc = FRAME_T_MARGIN</p><p>  labelicon_1 = ui_labelicon_create(luoshuan_count, @</p><p><

120、b>  "", @</b></p><p><b>  x_loc, @</b></p><p><b>  y_loc, @</b></p><p><b>  "1")</b></p><p>  y_loc = y

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論