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
}