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 t [expr rand()];
set proc_name "jpeg_capture"
hwi GetSessionHandle sess$t
# Get a post object handle
sess$t GetProjectHandle proj$t
proj$t GetPageHandle page$t [proj$t GetActivePage]
page$t GetWindowHandle win$t [page$t GetActiveWindow]
win$t SetClientType "Animation"
win$t GetClientHandle client$t
# Load model
set myfile "[ sess$t GetSystemVariable ALTAIR_HOME ]/demos/mv_hv_hg/animation/dyna/bumper/d3plot"
set model_id [client$t AddModel $myfile]
client$t GetModelHandle mod$t $model_id
mod$t SetResult $myfile
# Advance to last frame.
page$t GetAnimatorHandle animator$t
animator$t SetAnimationMode "transient"
animator$t SetCurrentStep [expr [animator$t GetNumberOfSteps]-1]
# Enable contour state and visibility
mod$t GetResultCtrlHandle res$t
mod$t ReleaseHandle
res$t GetContourCtrlHandle contour_ctrl$t
res$t ReleaseHandle
contour_ctrl$t SetEnableState true
client$t SetDisplayOptions "contour" true
client$t SetDisplayOptions "legend" true
# Set to stress datatype
set datatype "stress"
contour_ctrl$t SetDataType $datatype
contour_ctrl$t SetShellLayer "max"
contour_ctrl$t SetDimensionEnabled shell true
contour_ctrl$t SetDataComponent shell "P1"
contour_ctrl$t SetDimensionEnabled solid true
contour_ctrl$t SetDataComponent solid "P1"
client$t Draw
sess$t CaptureScreen "jpeg" "$datatype.jpg"
# Set to displacement datatype
set datatype "displacement"
contour_ctrl$t SetDataType $datatype
client$t Draw
sess$t CaptureScreen "jpeg" "$datatype.jpg"
# Cleanup handles to avoid leaks and handle name collisions.
contour_ctrl$t ReleaseHandle
client$t ReleaseHandle
page$t ReleaseHandle
sess$t ReleaseHandle