Msc. Patran pcl handbook In a Nutshell 7



Download 1.08 Mb.
Page4/25
Date05.08.2017
Size1.08 Mb.
#26706
1   2   3   4   5   6   7   8   9   ...   25

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)


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: %27 nodes created

  • PCL expressions beginning with “>” are echoed to the session file

  • P
    CL expressions can be typed directly into MSC.Patran at the command line

  • P
    CL 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

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


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


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.

Structure of a PCL Function

S
Function arguments (null)

FUNCTION a_very_simple_function()

/* This is a simple function that writes:

$# My favorite number is 29”



in the MSC.Patran history window using 3 different

write” or “print” statements.



*/

/* This is a comment. */

$ This is also a comment.

INTEGER MyFavoriteNumber

MyFavoriteNumber = 29

ui_writec(“My favorite number is %d \n”, MyFavoriteNumber)

ui_writef(“A21,1X,I3”, “My favorite number is”, MyFavoriteNumber)

ui_write(“My favorite number is “//STR_FROM_INTEGER(MyFavoriteNumber))

END FUNCTION /* a_very_simple_function */


Function declaration

Comments (Who we kidding? We all know that everyone loathes commenting their code!)

Variable declaration

Variable initialization

Statements or expressions

Function terminator






imple PCL function Example


S
tructure of a PCL Function


Sample output. The ui_write functions write text to the history window, the session file (patran.ses.##), and the journal file (model.db.jou)




  • A
    FUNCTION another_simple_function(MyFavoriteNumber)

    INTEGER MyFavoriteNumber

    INTEGER MyLeastFavoriteNumber

    MyLeastFavoriteNumber = 13

    ui_write(“My favorite number is “//str_from_integer(MyFavoriteNumber))

    ui_write(“My least favorite number is “// @

    str_from_integer(MyLeastFavoriteNumber))

    END FUNCTION /* another_simple_function */




    Function argument

    Calling statement



    nother simple PCL function


Note all variables must be declared, including function arguments

Calling statement


another_simple_function(29)

$
Sample output
#My favorite number is 29

$#My least favorite number is 13




Download 1.08 Mb.

Share with your friends:
1   2   3   4   5   6   7   8   9   ...   25




The database is protected by copyright ©ininet.org 2024
send message

    Main page