我目前正在定制一个宏,以便显示以下结果的“查询”(组件 ID、组件名称、轮廓(应力/应变))。最终目标是使用 TCL 脚本 将这些结果导出到名为 “table.txt” 的文本文件中,如附图所示。
我已附加脚本,虽然我已成功打印组件ID和组件名称,但不是轮廓值(最大值和ID)。
我正在使用 HyperView 2021.2 版本 和 Radioss 求解器。
有人可以帮助我吗?如果需要的话我可以提供更多信息。
还有没有任何其他方法,我可以使用TCL脚本提取每个组件的最大应力/应变值? (功能与 Hyperview 中的交互式“查询”表非常相似,但我想在多个 Hyperview 页面/窗口上执行该操作几次。
我确实联系了Altair 支持,但对我的问题没有令人满意的解决方案(通过使用 TCL 功能),尽管他们建议在 Hyperview 中使用交互式“查询”表并导出结果。我正在寻找一种方法来自动化此步骤。
提前致谢TCL 代码:
mod GetQueryCtrlHandle query1
mod GetSelectionSetHandle mySetName [mod AddSelectionSet component]
mySetName Add all
res SetCurrentSimulation 1
query1 SetDataSourceProperty result datatype Stress
query1 SetDataSourceProperty result shelllayer Max
query1 SetQuery "component.id component.name contour.value result.value"
query1 SetSelectionSet 1
query1 WriteData {C:/Desktop/table.txt};
anim Draw
检查我的下面的代码,它将针对活动窗口运行并将查询的值存储在活动窗口组件的一个列表中。
set ui [expr rand()]
hwi GetActiveClientHandle my_client$ui
my_client$ui GetModelHandle my_model$ui [my_client$ui GetActiveModel]
my_client$ui ReleaseHandle
set set_id [my_model$ui AddSelectionSet part]
my_model$ui GetSelectionSetHandle my_set$ui $set_id
my_set$ui Add all;
# set selection set inside the query ctrl
my_model$ui GetQueryCtrlHandle my_query$ui
my_query$ui SetSelectionSet [ my_set$ui GetID ]
my_model$ui RemoveSelectionSet [my_set$ui GetID]
# create request
my_query$ui SetQuery "component.id component.name contour.max"
#Iterate through all visbile components
my_query$ui GetIteratorHandle my_iterator$ui
my_iterator$ui First
while { [my_iterator$ui Valid] == "true" } {
lappend tmpCompList [my_iterator$ui GetDataList]
my_iterator$ui Next }
set contourdetails ""
for {set i 0} {$i < [llength $tmpCompList]} {incr i} {
set tmpstr [lindex $tmpCompList $i]
lassign [split $tmpstr " "] comp_id comp_name max_contour
if {$max_contour > 0} {
set contourdetails "$comp_id~$comp_name~$max_contour"
}
}