您的位置:首页 > 其它

HyperWorks 集成桌面环境下二次开发【四】----脚本实例

2013-05-30 10:39 691 查看

实例一 载入模型并查看模型应力

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 "--------------------------------------------"

}


实例二 在当前窗口中为每条曲线添加时间轴向量

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

}


实例三 获取应力与位移的JEPG图像

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

}


参考HyperWorks Desktop 手册,12.0版本。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: