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

下載本文檔

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

文檔簡介

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

2、 船舶與海洋工程 </p><p>  學(xué)生姓名 學(xué)號 </p><p>  指導(dǎo)教師 職稱 </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的語言結(jié)構(gòu)及編譯使用2</p><p>  1.5 課題研究背景、內(nèi)容3</p><p>  1.5.1 研究背景3</p><p>  1.5.2 研究內(nèi)容4</p><p>  2 PCL函數(shù)及

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

6、置參數(shù)界面13</p><p>  3.2 加載函數(shù)文件48</p><p>  3.3 實例計算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語言,開發(fā)了錨機(jī)基座有限元分析系統(tǒng),實現(xiàn)了螺栓分布力的自動加載,開發(fā)有限元后處理系統(tǒng)界面,大大提高了螺栓分布力

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

28、ry.plb3.library:加載和組織PATRAN庫文件??梢约虞d任意個庫文件,也可以組織管理,包括合并,刪除程序類庫。 常用的使用說明格式為:    !!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é)合船舶的整體進(jìn)行考慮. 起錨機(jī)結(jié)構(gòu)除了承受自身的重力荷載外,還要承受繩索

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

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

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

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

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

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

36、</b></p><p>  ——摩擦系數(shù),取0.5;</p><p>  ——錨機(jī)和絞車總重量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ī)形心與各個螺栓,直接將載荷施加于錨機(jī)形心處。</p><p>  2 PCL函數(shù)及語法規(guī)則</p><p><b>  2.1 概 述</b></p><p>  所有的MSC.Patran 命令首先是由PCL編譯器所編譯過的,PCL表達(dá)式是由C語言程序所編譯的。PCL函數(shù)能

38、被編譯到庫函數(shù)中,與MSC.Patran文件相聯(lián)系。MSC.Patran的內(nèi)置函數(shù)是由C或FORTRAN所編寫的。其邏輯圖如圖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ù)解釋:</b></p><p>  callback:活動窗口中的事件響應(yīng)函數(shù),由于該窗口并沒有聲明事件,所以該值設(shè)置為“”。</p><p>  X:相對于屏幕的橫坐標(biāo)。</p><p>  Y:相對于屏幕的縱坐標(biāo)。</p><p> 

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

41、eate ( parent, callback, x, y, label )。該函數(shù)用于創(chuàng)建當(dāng)前活動窗口的名字,但是并不能被修改和選擇,用于提供一些附加的說明信息。如圖3。</p><p>  Parent:新創(chuàng)建的父類窗口,只能是已經(jī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)建的父類窗口,只能是已經(jī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)簽的長度。</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ù)庫只能接受一行信息,但是這個信息卻可以很長,該函

45、數(shù)用于建立參數(shù)輸入框。</p><p>  Parent:父類地址。</p><p>  Callback:PCL函數(shù)名字,這個函數(shù)要事先在類聲明中定義。</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)容,如果不分配按鈕名字,用“”來代替該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è)定為TRUE,標(biāo)題被設(shè)置在數(shù)據(jù)框的底部,則該值被設(shè)定FALSE。</p><p>  4.ui_wid_get (widget, parm, value)。該函數(shù)用于接收窗口參數(shù)的初始值。</p><p>  widget:其數(shù)值是被詢問是否接收。</p><p&g

48、t;<b>  Parm:參數(shù)名。</b></p><p>  Value:參數(shù)值。</p><p>  5.sys_allocate_string ( string, size )。該函數(shù)用于對PCL虛擬串變量分配儲存空間。</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)建表格時,需要創(chuàng)建后臺數(shù)據(jù)處理函數(shù)。也就是說,該函數(shù)只是給數(shù)據(jù)造了一個房子,但是我們需要這些數(shù)據(jù)在房子里被加工,這時就需要創(chuàng)建一個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>  /***********這個命令即為當(dāng)點(diǎn)中spread中的任何一個時,顯示在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)建下拉菜單選項,其

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

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

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

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

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

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

63、L的語法規(guī)則與C語言的規(guī)則較為相近,實際上在開發(fā)MSC.Patran的過程中,C,RORTRAN和PCL源代碼是同時運(yùn)用的,換句話說,Patran的源文件是通過C語言開發(fā)出來的。運(yùn)用C語言有許多優(yōu)點(diǎn),包括交互性,兼容性等,這樣就增加了源代碼開發(fā)的可讀性,特別是借助C語言的宏定義,這樣會大大提高程序的運(yùn)行效率。例如下面的選擇語句的編寫:</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包含文件中,通過#define定義聲明。通過集中定義可以使程序簡潔,代碼簡單。需要注意的是,一般C語言會自動進(jìn)行預(yù)編譯,如果被嵌入FORTRAN或PCL中,這

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

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

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

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

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

72、加載分析計算,后處理系統(tǒng),程序一開始獲取錨機(jī)參數(shù)值,設(shè)置參數(shù)界面,獲取錨機(jī)自重、破斷載荷等。要實現(xiàn)人機(jī)互動,提高錨機(jī)螺栓分布力自動加載,要設(shè)置合理的界面,易于操作,并且符合MSC.Patran的操作規(guī)則。</p><p>  程序的開始,進(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ù)編寫文件,創(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>  /*********類函數(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ù)類型*********/</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>  /*相對于screen而言的x坐標(biāo)*/ FORM_X_LOC_SML, @</p><p>

78、  /*相對于screen而言的y坐標(biāo)*/ FORM_Y_LOC, @</p><p>  /*相對于哪個角落,本文選用左上角*/ "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ù)的名稱*/ "function_type", @</p><p>  /*x坐標(biāo)*/ x_loc, @</p><p>  /*y坐標(biāo)*/ y_loc,

82、@</p><p>  /*標(biāo)簽的長度*/ 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ù)的實參*/ "", @</p><p>  /*標(biāo)簽*/ "請選擇", @</p><p>  /*這個選項只有一個值*/ FALSE)該函數(shù)所創(chuàng)建的控制鍵為圖9。</p><p>  ui_item_create(loads_type,&qu

84、ot;concertratedforces","集中力MPC加載",FALSE)</p><p>  /****************這里的concertratedforces為實參,即當(dāng)執(zhí)行該命令時,將以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ù)界面的實參,當(dāng)執(zhí)行不同的任務(wù)時,工作窗口將進(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ī)特點(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)建一個書簽隔頁**************************</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>  "錨(絞)計算寬度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>  "錨(絞)長度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)閉頁面函數(shù)***************/</p><p>  /*****************建立選擇新頁面函數(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>  /*****************建立選擇新頁面函數(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é)束選擇新頁面函數(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>  /*相對于screen而言的x坐標(biāo)*/ FORM_X_LOC_SML, @</p><p>  

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

117、錨機(jī)螺栓特點(diǎn)", @ “”)。該函數(shù)所創(chuà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>  /******注意包含了一個按鈕,所以要足夠高******/</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. 本站所有資源如無特殊說明,都需要本地電腦安裝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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論