Script Use Cases

Examples of script uses cases.

Use Case 1

Load a model and apply a stress contour.
set proc_name "contour_stress"
hwi GetSessionHandle sess

if {[catch {
 hwi GetSessionHandle sess
 sess GetProjectHandle proj
 proj GetPageHandle page [proj GetActivePage]
 proj ReleaseHandle
 page GetWindowHandle win [page GetActiveWindow]
 win SetClientType "Animation"
 win GetClientHandle post
 win ReleaseHandle

 # Load model
 set model_id [post AddModel d:/samples/dyna/bumper_foam/d3plot"]
 post GetModelHandle mod $model_id
 mod SetResult "d:/samples/dyna/bumper_foam/d3plot"

 # Advance to first frame.
 page GetAnimatorHandle animator
 animator Next

 # Enable contour state and visibility
 mod GetResultCtrlHandle res
 mod ReleaseHandle
 res GetContourCtrlHandle contour_ctrl
 res ReleaseHandle
 contour_ctrl SetEnableState true
 post SetDisplayOptions "contour" true
 
 # Set result state
 contour_ctrl SetDataType "stress"
 contour_ctrl SetShellLayer "max"
 contour_ctrl SetDimensionEnabled shell true
 contour_ctrl SetDataComponent shell "P1"
 contour_ctrl SetDimensionEnabled solid true
 contour_ctrl SetDataComponent solid "P1"

 post Draw
 
 # Cleanup handles to avoid leaks and handle name collisions.
 contour_ctrl ReleaseHandle
 post ReleaseHandle
 page ReleaseHandle
 sess ReleaseHandle

} result]}
 # Error handling
 puts $logfile "----- Error occured running $proc_name -----"
 puts $logfile "[sess GetError]"
 puts $logfile "--------------------------------------------"
}   

Use Case 2

Set time vector for each curve in the current plot window.
set proc_name "setTimeVector"
hwi GetSessionHandle sess

if {[catch {

 sess GetProjectHandle proj
 proj GetPageHandle page [proj GetActivePage]
 page GetWindowHandle win [page GetActiveWindow]
 
 if {[string match [win GetClientType] "Plot"]}
         win GetClientHandle plot

         set numcurves [plot GetNumberOfCurves]
         for {set i 1} {$i <= $numcurves} {incr i}
                 plot GetCurveHandle curve $i
                 curve GetVectorHandle curve_x x
                 curve GetVectorHandle curve_time time
                 if {![string length [curve_time GetValuesList]]}
                         set max_x [lindex [lsort -real [curve_x GetValuesList]] end]
                         curve_time SetType values
                         curve_time SetValues [join [curve_x GetValuesList] ,]
                         if {$max_x >= 1.00}
                                 set scale [expr [string length [expr int($max_x)]] * 10.00]
                                 curve_time SetScaleFactor [expr 1.00 / $scale]
                         }
                 }
                 plot Recalculate
                 plot Draw

                 # Cleanup handles to avoid leaks and handle name collisions.
                 curve_time ReleaseHandle
                 curve_x ReleaseHandle
                 curve ReleaseHandle
         }
 } else
         puts $logfile "Invalid Window Type: requires a plot window."
 }

  # Cleanup handles        
 plot ReleaseHandle
 win ReleaseHandle
 page ReleaseHandle
 proj ReleaseHandle
 sess ReleaseHandle

} result]}
 # Error handling
 set msg "Error occured running $proc_name\n\n[sess GetError]"
 tk_messageBox -title "Error running script" -message $msg
}

Use Case 3

Capture JPEG images for both stress and displacement datatypes.
set proc_name "jpeg_capture"
hwi GetSessionHandle sess

if {[catch {

 # Get a post object handle
 sess GetProjectHandle proj
 proj GetPageHandle page [proj GetActivePage]
 page GetWindowHandle win [page GetActiveWindow]
 win SetClientType "Animation"
 win GetClientHandle post

 # Load model
 set myfile "d:/samples/dyna/bumper_foam/d3plot"
 set model_id [post AddModel $myfile]
 post GetModelHandle mod $model_id
 mod SetResult $myfile

 # Advance to last frame.
 page GetAnimatorHandle animator
 animator SetAnimationMode "transient"
 animator SetCurrentStep [expr [animator GetNumberOfSteps]-1]

 # Enable contour state and visibility
 mod GetResultCtrlHandle res
 mod ReleaseHandle
 res GetContourCtrlHandle contour_ctrl
 res ReleaseHandle
 contour_ctrl SetEnableState true
 post SetDisplayOptions "contour" true
 post SetDisplayOptions "legend" true

 # Set to stress datatype
  set datatype "stress"
 contour_ctrl SetDataType $datatype
 contour_ctrl SetShellLayer "max"
 contour_ctrl SetDimensionEnabled shell true
 contour_ctrl SetDataComponent shell "P1"
 contour_ctrl SetDimensionEnabled solid true
 contour_ctrl SetDataComponent solid "P1"
 post Draw
 sess CaptureScreen "jpeg" "$tag-$datatype.jpg"

 # Set to displacement datatype
  set datatype "displacement"
 contour_ctrl SetDataType $datatype
 post Draw
 sess CaptureScreen "jpeg" "$tag-$datatype.jpg"
 
 # Cleanup handles to avoid leaks and handle name collisions.
 contour_ctrl ReleaseHandle
 post ReleaseHandle
 page ReleaseHandle
 sess ReleaseHandle
        
} result]}
 # Error handling
 set msg "Error occured running $proc_name\n\n[sess GetError]"
 tk_messageBox -title "Error running script" -message $msg
}