您的当前位置:首页正文

用MSC_Patran的PCL二次开发用户界面

来源:化拓教育网
船海工程 2002年第3期(总第146期)

 文章编号:167127953(2002)03220203

用MSC.Patran的PCL二次开发用户界面

唐友宏 陈宾康

(武汉理工大学交通学院,武汉430063)

摘 要:在对MSC.Patran进行二次开发时,通常要自己编写自定义的图形界面,以实现开发者所需的一些特殊功能,结合某些用户界面,说明利用PCL语言进行二次开发用户界面的过程和应注意的问题。

关键词:MSC.Patran;PCL语言;用户界面;二次开发中图分类号:U662.9   文献标识码:A

Abstract:WhenyouuseMSC.Patranto,youusuallyneedtocompileself-definedgraphicalinterfaces,inordertoachievesomespecialfunctionneededbydeveloper.ThispapershowstheprocessofusingPCLlanguagetodevelopuserin2terfaceandtheproblemsneededtobeattentionbyusingtheexampleofsomeuserinterface.Keywords:MSC.Patran;PatranCommandLanguage;Userinterface;Redevelopment1 引言

MSC.Patran是世界公认最佳的集几何访问、

有限元建模、分析求解及数据可视化于一体的新一代框架式软件系统,通过其全新的“并行工程概

念”和无与伦比的工程应用模块,将世界所有著名的CAD/CAE/CAM/CAT(测试)软件系统及用户自编程序自然地融为一体。MSC.Patran独有的SGM(单一几何模型)技术可直接在几何模型一级访问各类CAD软件数据库系统,包括UG、Pro/ENGI2NEER、CATIA、CADDSS、Euclid、SoildEdge、Solid2works、AutoDeskMDT及I2DEAS等各类CAD/CAM

言和用户自定义工具,类似于C语言和FORTRAN

语言。PCL语言提供了丰富的表格和菜单库,供开发用户自编分析程序或者特定的图形界面。同时,PCL语言提供的表格生成功能使得用户自编的PCL函数能够通过菜单选项来执行。为了利用MSC.Patran的前后处理功能,编写了一系列的PCL函数,用来从MSC.Patran的数据库中读取数据并生成计算时所需的数据输入文件,以及将结果文件的数据写入MSC.Patran的数据库中,供MSC.Patran进行前后处理。开发用户界面的目的是为了将这些自编译的函数集中起来,通过直观的图形界面进行交互,方便使用。

软件数据库。

除了框架系统外,MSC.Patran还拥有功能强大的各种专用分析应用模块,主要包括:

1)MSC.PatranFEA(提供了静力、动力、热传导、非线型及优化灵敏度分析等功能);

2)MSC.PatranTHERMAL(专用工程自动热分析软件系统,可处理各种复杂的传递问题,并提供了丰富的与温度相关的材料库、对流关系库及与时间和温度相关的专业函数库);

3)MSC.PatranLAMINATEMODELER(集复合材料设计、分析、制造于一体的软件系统)。

PCL(MSC.PatranCommandLanguage)语言是MSC.Patran的一个高级的、模块化结构的编程语

收稿日期:2002203228

作者简介:唐友宏(19802),男,硕士在读

2 预备知识

2.1 PCL类(CLASS)的结构

PCL类专门用于编制用户界面,它实际上是

一组PCL函数的组合。类的结构如下:

CLASSclassname  /3类名3/

CLASSWIDEdeclarations... /3定义可以在整个类

的范围中使用的变量3/

FUNCTIONinit() /3初始化,该函数必须包括在类

中3/

  Functions

ENDFUNCTION

FUNCTIONdisplay() /3显示表格,该函数必须包

括在类中3/

  Function

ENDFUNCTION

20

用MSC.Patran的PCL二次开发用户界面———唐友宏 陈宾康

ENDCLASS  /3结束该类3/

在PCL语言中,用classname.functionname的方式来调用类中的某一函数。2.2 用户函数库

PCL提供了大量的库函数,这些函数包含在库文件p3patran.plb中,在MSC.Patran的环境下可随意调用。对于用户来讲,有时希望可以象PCL提供的库函数那样随意地调用自己编写的函

而FORM-WID-SML表示表格的宽度为MSC.Patran中一个标准列的宽度。用户不需要知道表格位置及大小的具体数值,便可以制定出符合MSC.Patran风格的界面。这些参数都包含在PCL语言的头文件“appforms.p”中。因此,在程序的开始必须增加语句:include“appforms.p”。

在程序编译时,首先要在C预编译器中将含有该语句的“.pcl”文件编译为“ .cpp”文件,然后在MSC.Patran的命令行中编译“ .cpp”文件。以MSC.Patran的WindowsNT版本为例,编译Coil2tank-loadcase.pcl文件。

1)进入DOS状态,在Coiltank-loadcase.pcl文

数。在MSC.Patran中,可以通过建立用户自己的函数库来实现这一目的。其步骤如下。

1)建立用户函数库

如想要创建一个名为oiltank的库函数,则在MSC.Patran的命令行中键入:!!librarycreateoil2tank.结果是在当前的用户目录下的新oiltank文件。

2)编函数加入到用户函数库中比如在Coiltank-loadcase.pcl中,编写了计算油船的货舱内压力的函数inner-pressure(),若想将该函数加入到oiltank函数库中,则在MSC.Pa2tran的命令行中键入:!!compileinner-pressureoiltank。MSC.Patran先对Coiltank-loadcase.pcl文件进行编译,编译通过后,函数inner-pressure()就会自动加载到oiltank函数库中。如果在MSC.Pa2tran的命令行中键入:!!librarylistoiltank,就会看到inner-pressure()函数。

3)修改init.pcl文件

MSC.Patran在每次运行时首先要执行init.pcl文件,该文件在MSC.Patran的安装目录下。在init.pcl文件中,增加下列两行语句:

!!LIBRARYoiltank.plb

!!LIBRARYKEEPOPENoiltank.plb

下次运行时,MSC.Patran就会自动加载oil2tank.plb的函数库。在MSC.Patran的命令行中键入:!!Library,就会显示除了PCL自带的函数库p3patran.plb外,新加了用户函数库oiltank.plb.2.3 参数化表格

在开发用户界面时,PCL提供了一系列的与表格位置及大小有关的参数和用户界面函数,如ui-form-create(创建一个用户界面):

ui-botton-create(创建一个按钮):ui-listbox-create(创建一个list框):

ui-optionmenu-create(创建一个优选菜单)。

件所在的目录下键入:CppCoiltank-loadcase.pclCoiltank-loadcase.cpp,如果出错,就检查是否包含了cpp.exe文件所在目录的路径。

2)在MSC.Patran的命令行中键入:!!inputCoiltank-loadcase.cpp

若编译通过,则可以调用Coiltank-loadcase.pcl中的函数。2.4 事件与响应

在MSC.Patran的用户界面中,当用户在某一选项或按钮上单击鼠标时,就会产生一个所谓的事件(Event)。如果该事件意味着要进行某项特定的操作,那么MSC.Patran就会对其产生响应(Callback)。例如:单击用户图形界面“TransverseWebGeometryDefinition”中的“DefineverticalGird2eronBHD”按钮(如图1所示),其响应是显示一个

名为“VerticalGirderonLongitudinalBulkhead”的Di2alog(如图2所示)。

图1 用户界面之一

响应实际是调用函数,在MSC.Patran中实现

对事件的响应需要进行两方面的工作:

1)在init()函数中定义响应在本例中,单击“DefineverticalGirderonBHD”按钮,其响应为调用“vertical-cb”函数。

ui-button-create

@

这些函数都可以直接调用

21

船海工程 2002年第3期(总第146期)

/3parent3/ form-id,/3callback3/ “vertical-cb”,/3X  3/ FORM-L-MARGIN,/3Y  3/  y-loc,

/3width  3/BUTTON-WID-FULL,

@@@@@

/3labelinside3/ TRUE ,/3highlight3/   FALSE)/3height  3/0.0,

@@@

/3label  3/ “DefineverticalGirderonBHD”,

图2 输入数据对话框  2)编写响应函数

“vertical-cb”函数与init()函数同于类“Ctransverse-web-dialog”.其“vertical-cb”函数如下:

FUNCTIONvertical-cb()

(Cvertical-dialog”ui-exec-function“,“dis2)play”

/3执行类Cvertical-dialog(该类包含图2的

所有界面函数)中的函数,(其函数略)3/ENDFUNCTION

中一个按钮“DefineverticalGirderonBHD”时,就会弹出“VerticalGirderonLongitudinalBulkhead”的对话框(用户自定义图形界面),如图2所示,该框内有两个数据框(ui-databox-create创建),一个用于向表中输入数据,另一个为灰色,显示transversewebNo.(由程序读入);一个list框(ui-listbox-create创建);一个电子数据表(ui-spread-create创建),用于用户输入数据,控制图形的生成。本用户图框用于读取舱壁上垂直桁的参数,并将所读取的数据写入程序中,供MSC.Patran进行前后处理。

3 生成用户界面

在掌握了开发用户图形界面所需要的一些基本概念后,便可以方便地利用PCL语言来开发用户图形界面。

如用户图形界面“TransverseWebGeometryDefinition”如图1所示:其界面上包含有3个按钮,分别对应着3个响应(Callback)。当鼠标点击其

4 结论

通过以上说明,使得读者对使用MSC.PatranCommandLanguage对用户图形界面的开发的基本

思路和过程有了大致的了解,以及在利用该语言进行二次开发时,应该防止哪些问题的发生有了直接的认识。如果读者能够按以上步骤自己完成一个用户界面的开发,效果会更好。

农业部发布《中国海洋渔业水域图》

  农业部渔业局首次正式向社会发布《中国海洋渔业

(第一批),旨在用地图的方式向社会公布黄渤水域图》

海区、东海区、南海区的渔业水域,让有关方面了解我国

渔业水域的分布情况,保护渔业水域不受污染和破坏。

本刊辑

22

因篇幅问题不能全部显示,请点此查看更多更全内容