摘 要:在對MSC.Patran進行二次開發時,通常需要編寫自定義的圖形界面,以實現開發者所需的一些特殊功能。由于Patran軟件讀取部分格式文件功能比較繁瑣,要通過手動輸入一些參數才能進行數據的讀入。針對這些不足,特進行Patran界面的二次開發,使得預先設置好的參數,通過界面函數與系統調用,可以直接進行數據讀取,大大提高了效率。最后給出開發后的界面實例進行驗證。關鍵詞:MSC.Patran; PCL語言二次開發; 用戶界面; 數據讀取
中圖分類號:TN911-33文獻標識碼:A
文章編號:1004-373X(2010)16-0017-03
PCL Secondary Development Based on MSC Patran Interface
ZHANG Jun-yan, LI Chang-hua, LI Xiao-hui
(Information and Control Engineering College, Xi’an University of Architecture and Technology, Xi’an 710055, China)
Abstract: When MSC Patran is redeveloped, the compiling of the self-defined graphical interfaces are usually needed to achieve some special functions needed by developers. As it is relatively more complicated for Patran software to read the part of the format-file function, some parameters should be input manually for reading into the data. Aming at these shortcomings, the redevelopment for Patran interface is adopted to pre-set the parameters. The data can be directly read by the interface functions and the system calls. It greatly improves the efficiency. The instance of the developed interface is offered for the authentication.Keywords: MSC Patran; PCL redevelopment; user interface; read data
0 引 言
隨著造船技術的發展,船舶建造向大型化和經濟化方向發展。MSC.Patran是MSC公司開發的大型有限元通用軟件,廣泛地應用于航空、航天、船舶、建筑、橋梁等行業的工程設計、工程分析中。Patran可以用來對建筑物進行各種分析,例如:混凝土實體結構有限元分析以及超高層建筑物的氣壓波動分析等。MSC.Patran具有齊全的前、后處理功能,以MSC.Pantran為平臺,應用PCL語言并結合會話文件對MSC.Patran進行二次開發,實現結構建模與分析的參數化。PCL(Patran Command Language)是一個高級、模塊化結構編程語言和用戶自定義工具,類似于C語言和Fortran語言,可用于生成應用程序或特定的用戶界面,顯示自定義圖形、讀寫Patran數據庫,建立新的功能或增強功能。同時通過PCL的二次開發,其他商品化的或自編分析程序可被集成到Patran中。
目前,幾乎所有的分析仿真軟件都采用PCL語言作為工具,它們與Patran建立了直接集成關系或直接將Patran作為分析系統的前后處理器。該PCL語言被業界公認為標準工具。MSC.Patran包括一系列的幾何造型和編輯功能,不但可以編輯讀入的CAD造型,以劃分有限元網格,而且可以創建復雜的幾何造型。
MSC.Patran是一個面向各行業的通用性的前后處理軟件。在某個工程方面,會有某一類具有共同特點的問題反復出現的情形,此時利用PCL語言,并根據特定問題編制相應的程序,集成到Patran中實現程序化,以解決實際工程問題,節省人力投入,提高效率。由于二次開發在讀入文件的時候,需要手動輸入參數和其他屬性才能進行數據的讀入,這種做法費時費力。為此,本文用PCL語言編程,實現Patran軟件二次開發,把參數屬性嵌入到Patran軟件系統中,當讀取文件時直接調用它,就可以進行數據讀取,省去了輸入參數的麻煩,大大提高了效率。
1 語言及設計方法
MSC.Patran可以經過多次開發來實現其軟件的完整性,保證其參數可以被快速調用。為了讓Patran軟件能夠快速讀取Tribon軟件并生成適合自己讀取的格式文件,本文對Patran軟件進行了二次開發,實現數據的快速導入。而PCL語言是Patran軟件專用的開發語言,用PCL實現Patran界面的二次開發,可快速建立有限元模型,縮短時間,提高市場競爭力。
1.1 PCL類的結構
PCL語言中提供類的概念,通過編寫PCL類來實現編制用戶界面和實現具體功能,類由關鍵字CLASS開始,END CLASS結束,類中可以聲明變量與函數,不同于C++中類的概念,PCL的類不具有繼承、派生等功能,它更像C語言里面的結構體。在類中可以定義變量和函數,在類中調用類的函數采用類名加函數名方式,中間用一個點號連接。在PCL語言中,菜單和窗體函數被封裝在用戶定義的界面類中。其一般格式如下:
CLASS menuform/*類名*/
CLASSWIDE WIDGET item2,item3/*定義類范圍*/
FUNCTION init()
…/*產生窗體或菜單*/
END FUNCTION
FUNCTION display()
…/*顯示窗體或菜單*/
END FUNCTION
FUNCTION callback()
…/*菜單或窗體按鈕的響應函數*/
END FUNCTION
END CLASS
從功能上說,PCL語言可以實現一般高級語言所能實現的大部分功能,同時還可提供與Fortran和C的訪問接口;另一方面,由于PCL語言與MSC.Patran的緊密關系,應用PCL語言作為MSC.Patran的開發工具是必然的選擇。應用PCL還可以開發出界面漂亮、功能強大的應用程序。現在,幾乎所有的分析仿真軟件都采用PCL語言作為工具,并建立了與Patran 的集成關系,有的也直接將Patran作為分析系統的前后處理器。在PCL語言中,用classname.functionname的方式來調用類中的某一函數。
1.2 函數庫與數據結構
PCL語言具有強大的函數庫。除了基本的數學函數庫和系統訪問的函數庫外,它還提供了大量與有限元建模有關的函數,如幾何建模函數、網格自動劃分函數和載荷施加、屬性添加及與結果后處理有關的函數。利用這些函數,用戶有時可以像PCL提供的庫函數那樣編寫自己的函數,并用系統命令!!library將其加載到Patran中,建立與NASTRAN的連接,可以在以后的建模中隨時調用。在MSC.Patran中,可以通過建立用戶自己的函數庫來實現這一目的,其步驟如下:
(1) 建立用戶函數庫。如想要創建一個名為read的庫函數,則在MSC.Patran的命令行中鍵入!!library create read。結果是在當前用戶目錄下的新read文件。
(2) 編函數加入到用戶函數庫中。比如在Creadloadcase.pcl中,編寫了計算邊的函數edge(),若將該函數加入到read函數中,則在MSC.Patran的命令行中鍵入!!compile edge read。MSC.Patran先對Creadloadcase.pcl文件進行編譯,編譯通過后,函數edge()就會自動加載到read函數庫中。如果在MSC.Patran的命令行中鍵入!!library list read,就可看到edge()函數。
(3) 修改init.pcl文件。MSC.Patran在每次運行時首先要執行init.pcl文件,該文件在MSC.Patran的安裝目錄下。在init.pcl文件中,增加下列兩行語句:
!!LIBRARYread.plb
!!LIBRARY KEEPOPEN read.plb
下次運行時,MSC.Patran就會自動加載read.plb的函數庫。在MSC.Patran的命令行中鍵入!!Library,就會顯示除了PCL自帶的函數庫外,新加了用戶函數庫read.plb。另外,PCL 語言提供的表格生成功能使得用戶自編的PCL函數能夠通過菜單選項來執行。
2 生成用戶界面
為了利用MSC.Patran的前后處理功能,編寫了一系列的PCL函數,用來從MSC.Patran的數據庫中讀取數據,并生成計算時所需的數據輸入文件,以及將結果文件的數據寫入MSC.Patran的數據庫中,供MSC.Patran進行前后處理。開發用戶界面的目的是為了將這些自編譯的函數集中起來,通過直觀的圖形界面進行交互,方便使用。在開發用戶界面時,PCL提供了一系列與表格位置及大小有關的參數和用戶界面函數,如:
uiformcreate(創建一個用戶界面):
uibottoncreate(創建一個按鈕):
uilistboxcreate (創建一個list框):
ui optionmenu create(創建一個優選菜單)
這些函數都可以直接調用,而FORM-WID-SML表示表格寬度為MSC.Patran中一個標準列的寬度。用戶不需要知道表格位置及大小的具體數值,便可以制定出符合MSC.Patran風格的界面。這些參數都包含在PCL語言的頭文件“appforms.p”中。因此,在程序的開始必須增加語句:include“appforms.p”。在程序編譯時,首先要在C預編譯器中將含有該語句的“.pcl”文件編譯為“.cpp”文件,然后在MSC.Patran的命令行中編譯“.cpp”文件。
在進行參數化建模時,需要不斷地更改參數,以建立新的模型。為此,可以生成相應的界面,使用戶很方便地通過界面的參數,并啟動相關聯的程序。在PCL中提供一系列生成窗體和菜單的函數,如:uimenucreate()生成菜單、uiformctreate()產生窗體、uibuttoncreate()產生按鈕、uidataboxcreate()產生數據輸入對話框等,還有與窗體和菜單外觀有關的函數等。經過編譯后就可以得到符合MSC.Patran風格的界面。在窗體中輸入或選擇參數后,可以用uiwidgetvstring(),uiwidget()等函數得到相應參數,并在關聯的程序中使用。
2.1 事件響應函數
在MSC.Patran的用戶界面中,當用戶在某一選項或按鈕上單擊鼠標時,就會產生一個事件(Event)。如果該事件意味著要進行某項特定的操作時,MSC.Patran就會對其產生響應(Callback)。響應實際是調用函數,在MSC.Patran中實現事件的響應需要進行兩方面的工作,即在init函數中定義響應和編寫響應函數。事件響應函數的內容為程序開發的重點和核心。它由用戶自行編寫,由事件進行驅動,即點擊相關窗體或菜單來完成用戶希望Partan自動的建模功能。該函數的基本結構如下:
FUNCTION functionname(參數變量)
定義變量
程序主題
END FUNCTION
2.2 目錄界面的開發及參數設置
在用PCL對Patran界面進行二次開法時,首先要在界面上創建自己的菜單,通過菜單快捷鍵來調用系統庫函數,而其中的屬性信息并不需要自己再次輸入,經過一次性設置好后就可以被重復利用。具體界面菜單設置函數及語法如下:
syspath( \"ADD\", utilitiespcldirectory )
syspath( \"ADD\", utilitiespcldirectory//\"/icons\" )
syspath( \"ADD\", utilitiespcldirectory//\"/plb\" )
syspath( \"ADD\", utilitiespcldirectory//\"/extrafiles\" )
不同的路徑代表著不同的參數設置及所屬的根目錄,具體如圖1所示。
2.3 根目錄參數設置
該軟件的二次開發主要是從邊界、筋、孔、柱等方面的讀取以及網格的劃分進行的。其主要方法及參數設置分別如下:
FUNCTION readbound(filename)
uilfilenew.go(\"D:\\\\MSC.Software\\\\MSC.Patran\\\\2005\\\emplate.db\",\"F:\\\\110000T.xml\\\est.db\" )
…
uiwrite(\"Readtextrecord completed.\")
END FUNCTION
FUNCTION readrptfile(filename)
UIWRITE(filename//\" file is read completed !!\")
…
END FUNCTION
由以上主體函數、內部參數設置、屬性信息的編寫,將要讀取的文件格式及內部參數直接嵌入到系統的庫函數中,在要調用文件內容時只要找到所要調用的文件名,就可以不經過參數設置直接調用,并且保證數據的正確性及時效性。開發的界面如圖2所示。
圖1 目錄界面
圖2 開發界面
3 結 語
本文是在一個工程實例上基于PCL語言對Patran界面的二次開發,從界面直接設置目錄,同時在目錄中加載各部分的讀取文件類型,對各類型屬性信息及調用方法在系統庫中進行定義,當需要讀取文件時,只要點擊對應的鍵,文件就會快速被調用;而以前讀取文件要先輸入參數,然后針對各部分進行輸入后方可建立幾何模型。相比起來,經過二次開發后,建模的效率大大提高。
參考文獻
[1]何祖平,王德禹.基于MSC.Patran二次開發的結構參數化建模及其集成開發環境[J].航海工程,2005(2):17-20.
[2]馬網扣,林伍雄,孫松琦,等.基于Patran環境的波浪載荷預報程序開發及應用[J].上海造船,2007(3):4-7.
[3]唐友宏,陳賓康.用MSC.Patran的PCL二次開發用戶界面[J].航海工程,2002(3):20-22.
[4]MSC.Patran PCL reference manual[M].[S.l.]: MSC, 1998.
[5]滕春明,湯慶輝,葉彬.在MSC.Patran中機翼有限元模型加載模塊的二次開發[J].洪都科技,2005(4):6-10.
[6]黃海,陶騫,柯文.基于MSC/Patran的結構優化系統前后置開發與應用[J].北京航空航天大學學報,1999,25(6):639-642.
[7]陳文亮,張勝,金修寶.有限元網格的孔洞修補算法研究[J].計算機學報,2005,28(6):1068-1071.
[8]MSC.Patran user′s manuanl[M]. [S.l.]: MSC, 1998.
[9]MSC.Patran PCL and customization[M]. [S.l.]: MSC, 1998.
[10]章偉星.基于MSC.ACUMEN和PCL開發船舶快速建模系統[C].2001MSC中國用戶大會論文集,2001.