PCL Expressions
Expressions, Comments, Syntax Tips
?
Sample PCL expressions include:
theta = 360.0 – MTH_ASIND(MyAngle)
IF (radius >= 20.0) THEN radius = 20.0 length = str_length(MyString) build_gear_geometry(30., 56., 3)
?
PCL comments begin with a “/*” and end with a “*/”
/*
This is a comment.
Look Ma, I’m making comments in PCL!
Has anyone seen or heard from Elvis lately? */
a = 2 /* set mysterious factor equal to 2 */
?
Alternatively, single line comments may begin with “$”
$ Don’t you just hate to comment your programs?
?
More than one PCL expression can co-exist on a line using a semi-colon, “;”
alpha = 30.0; beta = 120.0
?
PCL expressions can be continued on subsequent lines by using the “@” symbol
ui_wid_set(main_form, @ “HEIGHT”, @ NewHeight)
ui_wid_set( /* widget_id */ main_form, @ /* parameter */ “HEIGHT”, @ /* value */ NewHeight)
MSC.Patran PCL Workshop Notes 04/13/16 26/236
PCL Expressions
?
Don?t break expressions in the middle of a keyword, constant, or identifier
Multiple blanks are the same as a single blank space Lines beginning with “!” (bang operator) are echoed to the xterm (UNIX) or command window (NT), but are not executed
? ?
In MSC.Patran type: !`i` nodes created In the xterm you see: ' nodes created
?
PCL expressions beginning with “>” are echoed to the session file
PCL expressions can be typed directly into MSC.Patran at the command line
?
?
PCL expressions may also be created with an editor in a text file and directed into MSC.Patran as a session file or by using the PCL directive !!INPUT
MSC.Patran PCL Workshop Notes 04/13/16 27/236
Identifiers
Naming Conventions
? ? ? ? ? ?
Function names and/or variable names are called identifiers Can be up to 32 characters long Must begin with a non-digit Case insensitive (as is all of PCL)
Cannot be a reserved keyword, i.e., FOR, IF, etc. Valid identifiers
current_group CurrentGroup MyString
?
Invalid identifiers
a_very_very_very_very_very_very_very_very_long_name 95abc list
MSC.Patran PCL Workshop Notes 04/13/16 28/236
Identifiers
Variable / Function Scope
?
Global variable names and functions share the same name space
When two function names or two variable names conflict, the most recent addition supercedes the previous
When function names and variable names conflict, the variable name takes precedence
When compiling functions, PCL will indicate if a function name is superceded by writing “Cleared memory function” to the history window
Hint: Use a unique prefix to keep function definitions separate, i.e au_do_this_and_that.pcl
?
?
?
?
MSC.Patran PCL Workshop Notes 04/13/16 29/236
Structure of a PCL Function
Function Basics
?
PCL functions begin with a FUNCTION statement and end with an END FUNCTION statement.
The FUNCTION statement may contain an argument list to be passed in or out of the function.
An optional RETURN statement can be used to return a calculated value from the function to the calling statement. Processing of the function terminates at either the END FUNCTION statement or a RETURN statement.
There may be multiple RETURN statements within a single function.
?
?
?
?
MSC.Patran PCL Workshop Notes 04/13/16 30/236