PCL语言入门:Patran的二次开发解析

需积分: 31 8 下载量 83 浏览量 更新于2024-08-05 1 收藏 153KB DOC 举报
"这篇文档是关于有限元软件Patran的二次开发语言PCL(Patran Command Language)的基础教程,适合初学者入门。PCL是一种基于C语言的脚本语言,用于扩展Patran的功能和自动化工作流程。" 在有限元分析中,Patran是一款广泛使用的前处理软件,它允许用户创建、编辑和管理有限元模型。PCL作为Patran的内置脚本语言,可以用于编写自动化脚本,提高工作效率。以下是对PCL语法和常见功能的详细解释: 1. 变量声明: PCL支持多种数据类型,包括Integer(整型)、Real(浮点型)、Logical(布尔型)和String(字符串)。变量声明时可以指定数组,例如: - INTEGER i, j, status, NodeIds(1000):声明4个整型变量,其中NodeIds是包含1000个元素的数组。 - LOGICAL flag:声明一个布尔变量。 - REAL xyz(1000,3), pressure(100), time:声明2D数组xyz和1D数组pressure及单个浮点变量time。 2. 动态数组: 动态数组在运行时可以改变大小。例如: - INTEGER node_ids(VIRTUAL):声明一个虚拟的整型动态数组。 - sys_allocate_array(node_ids,1,n):为node_ids分配大小为n的内存。 - sys_reallocate_array(node_ids,1,m):重新分配大小为m的内存。 - sys_free_array(node_ids):释放内存。 3. 字符串操作: - sys_allocate_string、sys_reallocate_string和sys_free_string分别用于分配、重新分配和释放字符串内存。 4. 常规语法: - 转行继续符:@,用于跨行输入命令。 - 分号分隔符:用于结束语句,类似C++。 - 注释:多行使用/*...*/,单行使用#或$。 - 字符串连接符://用于连接字符串。 5. 计算表达式: - 使用`运算符进行计算,例如`360/5`或WRITE(10+20)。 6. 控制流结构: - 循环语句:for和while循环,可以配合break和continue使用。 - if...then...else...endif判断语句,用于条件执行。 - switch...case...endswitch语句,用于多分支选择。 7. 文件操作: - text_open函数用于打开文件,如text_open(FileName,Option),Option可为读写模式。 - 其他文件操作函数如text_close、text_write等未在描述中列出,但它们通常用于读写文本文件。 8. 函数调用: PCL中可以调用内置函数,如sys_系列函数用于内存管理和字符串操作,以及可能存在的自定义函数。 通过学习和掌握这些基本语法和控制结构,开发者能够编写PCL脚本来自动化Patran中的任务,如模型创建、求解器接口、结果后处理等。这不仅提高了工作效率,也使得复杂的工作流程变得可重复和可定制。
2009-04-17 上传
In a Nutshell 6 What is PCL? 6 What can PCL be used for? 7 How does PCL work? 8 All you really need to know is on this page! 9 Documentation 9 PCL for Everyone 10 Entering Equations 10 Entering Data 11 Session Files 12 Rebuilding Models 13 PCL for the More Adventurous 16 Parametric Modeling 16 Adding a Graphical User Interface, GUI 20 Exercise 1: Session Files 21 PCL Programming Basics 23 Overview 23 PCL Expressions 25 Expressions, Comments, Syntax Tips 25 Identifiers 27 Naming Conventions 27 Variable / Function Scope 28 Structure of a PCL Function 29 Function Basics 29 Simple PCL function Example 30 Exercise 2: Hello World! 32 Exercise 3: Effective PCL 33 PCL Operators 34 String comparisons 34 PCL Variables and Constants 35 Datatypes 35 Variable Scope 36 Directly Allocated Arrays 37 Virtual arrays 38 Virtual strings 40 Loop Control Statements 41 For Loop 41 While Loop 41 Repeat Loop 42 BREAK 43 CONTINUE 44 Exercise 4: Writing Files 45 Exercise 5: Reading Files 47 Conditional Control Statements 48 IF Statement 48 SWITCH Statement 49 Structure of a PCL Function 50 Compiling and Linking PCL Functions 53 Primary PCL Directives 54 Compiling PCL outside of MSC.Patran 58 Linking Compiled Libraries 59 Other PCL Directives 60 Start Up Files 61 Exercise 6: p3epilog.pcl 62 Debugging 63 Debugging Compile Errors 63 Debugging Runtime Errors 64 Accessing PCL Functions 66 From The Command Line 66 From Any MSC.Patran Form 67 PCL Functions with Field Variables 68 MSC.Patran Built-In Functions 69 Naming Conventions for Applications 70 Naming Conventions for Other Operations 71 Exercise 7: Group Elements By Shape 73 Graphical User Interface 74 The PCL Class Statement 75 PCL Widgets 76 Required Functions for Building/Displaying a Form 77 The init() Function 77 The display() Function 78 Widget Callbacks 81 What Are They? 81 What Are They Used For? 82 Callback Arguments (Widget Function Data) 82 Widget Placement 84 Widget Variables 86 Modifying Widgets 87 Getting Data from Widgets 88 Putting it all Together (Example) 89 Exercise 8: Simple Form 91 The C-Preprocessor and Include Files 92 Make Files 93 Exercise 9: Callbacks 95 Handling Errors and Messaging 97 Errors from Built-In Functions 97 Custom Error Messages 98 Using User Messages Database 98 Without a Messages Database 99 Taking Advantage of the UNDO Feature 101 Select Mechanism 102 Select Mechanism GUI Mechanics 102 Select Databoxes, Select Frames, and Select Menus 102 GUI PCL Example 104 List Processor 105 List Processor Mechanics 105 All You Really Need to Know 106 Exercise 10: Form to Group Elms By Shape 109 Executing Programs Outside of MSC.Patran 111 Spawning Remote Processes 111 Locking a database 113 Using C and Fortran executables to access a MSC.Patran database directly. 114 External Access of an MSC.Patran Database 115 Special Widgets 117 File Widget 117 Spreadsheet Widget 120 Exercise 11: File Widget 121 Adding Help/Description to your PCL 122 Percent Complete 123 Functions 123 Example 123 Event Manager 124 General 124 Functions 125 Example 125 Primitive Graphics 126 Graphic Objects 126 Graphic Segments 127 Example 128 Another Example 129 Exercise 12: Primitive Graphics 130 MSC.Patran Customization 131 Adding Utility Programs to the Main Menu 131 Example 132 Example: p3_user_menu.my_menu.def 133 Customizing the MSC.Patran Toolbar 134 Exercise 13: Pulldown Menu 137 Exercise 14: Toolbar 138 Some Final Thoughts 140 Appendix A 143 Built-in Function Examples 143 Documentation for a typical MSC.Patran built-in function. 144 To get all the nodes and their global coordinates 145 To get the topology of every element 146 To get the shape of every element 147 To get all the element connectivity for all elements 148 To get the elements associated to a particular element property set 149 To get an element property value (shell thickness) for a specific element 150 To get a material property value 152 To get a list of all groups 153 To get the nodes and elements associated to the current group 153 To get result values for specified elements 154 Appendix B 163 Strings & String Functions 163 Declaration 164 Initialization 164 String Comparisons 164 Functions 165 Appendix C 173 Noteworthy Functions 173 sys_move_raw(…) 174 mth_array_search(…) 175 mth_sort(…) 176 mth_sort_row(…) 177 mth_sort_column(…) 177 fem_geom_edge_length(…) 178 fem_geom_face_area(…) 178 fem_geom_elem_volume(…) 178 fem_geom_elem_location(…) 179 Appendix D 180 Form Spacing Parameters (appforms.p) 180 * SPACING 181 Appendix E 206 MSC.Patran Architecture 206 Appendix F 208 Shareware Compiling Functions 208 Appendix G 211 Parametric Patran 211 Appendix H 217 Additional List Processor Notes 217 List Processor Mechanics 218 List Processor Functions 219 List Processor Sublist Functions 220 List Processor Attribute Functions 221 Miscellaneous List Processor Functions 222 List Processor Examples 223 Easy to Use List Processor Functions 227 Appendix I 228 Key Mapping 228 Appendix J 231 Widget Classification 231 Appendix K 234 User Defined AOM 234