- HyperWorks GUI Toolkit
- 几个控件函数
- 一个简单的例子
HyperWorks的二次开发是基于tcltk语言,其中tk语言主要是进行GUI的开发。除了tk语言,HyperWorks也提供了HWTK GUI Toolkit控件包用于GUI的开发,下面简单介绍几个HWTK GUI Toolkit控件包中较为常用的控件函数,并编写一个简单的脚本实例。
几个控件函数hwtk::button 创建一个按钮,按下时执行命令
hwtk::entry 创建一个可编辑的文本
hwtk::combobox 创建一个下拉选择列表
hwtk::label 显示文本字符串或者图像
一个简单的例子利用上面几个控件函数编写了一个简单GUI,如下图,主要是实现Hypermesh前处理批量创建材料、属性和属性的赋予。选择要操作的部件,通过下拉菜单选择单元属性,输入材料,如果是壳单元则输入厚度,螺栓单元则输入半径。这样便提高了在属性方面的操作效率。
#创建窗口,定义尺寸
destroy .createprop
set win .createprop
toplevel $win -width 120m -height 60m
#置顶窗口
wm attribute $win -topmost 1
#创建“Select comps”按钮
set Select_Comp [hwtk::button $win.scb -text "Select comps" -command {set compname [SelectProp]}]
#创建显示部件名字的文本框
set Display_Name [hwtk::entry $win.dne -state [string tolower onlyread] -textvariable compname -width 20]
#创建“Select prop”文本框
set Prop_Name [label $win.pnl -text "Select prop"]
#创建单元属性的下拉菜单,选择不同的选项会显示不同的InputData文本框,在Inputpropdata函数中实现
set Proplist [list PSHELL PSOLID PBARL]
set Select_Prop [hwtk::combobox $win.spc -values $Proplist -textvariable proptype -selcommand {Inputpropdata $proptype $win}]
#创建“Input Mat”文本框
set Input_Mat [label $win.iml -text "Input Mat"]
set Mat_Name [hwtk::entry $win.mne -textvariable matname]
#初始化输入数据
set inputdata 0
#创建 “Create”按钮
set Create_Button [hwtk::button $win.cbb -text "Create" -command {Create_Prop $matname $proptype $compname $matname $inputdata}]
#栅格摆放布局
grid $Select_Comp -row 0 -column 1 -padx 2m -pady 1m
grid $Display_Name -row 1 -column 1 -padx 2m -pady 1m
grid $Prop_Name -row 0 -column 3 -padx 2m -pady 1m
grid $Select_Prop -row 1 -column 3 -padx 2m -pady 1m
grid $Input_Mat -row 0 -column 5 -padx 2m -pady 1m
grid $Mat_Name -row 1 -column 5 -padx 2m -pady 1m
grid $Create_Button -row 5 -column 3 -padx 2m -pady 1m
Inputpropdata函数
proc Inputpropdata {propname window} {
#判断下拉菜单选中的是否为PSHELL
if {[string equal $propname "PSHELL"]} {
#删除PSOLID和PBARL的输入数据文本框
destroy $window.dnl
destroy $window.ide
set inputdata "0.00"
#PSHELL属性显示的是“Thickness”
set Data_Name [label $window.dnl -text "Thickness"]
set Input_Data [hwtk::entry $window.ide -textvariable inputdata]
grid $Data_Name -row 0 -column 7 -padx 2m -pady 1m
grid $Input_Data -row 1 -column 7 -padx 2m -pady 1m
return $inputdata
}
#判断下拉菜单选中的是否为PBARL
elseif {[string equal $propname "PBARL"]} {
destroy $window.dnl
destroy $window.ide
set inputdata "0.00"
#PBARL属性显示的是“Raduis”
set Data_Name [label $window.dnl -text "Raduis"]
set Input_Data [hwtk::entry $window.ide -textvariable inputdata]
grid $Data_Name -row 0 -column 7 -padx 2m -pady 1m
grid $Input_Data -row 1 -column 7 -padx 2m -pady 1m
return $inputdata
} else {
destroy $window.dnl
destroy $window.ide
#PSOLID属性显示的是“NO DATA”
set Data_Name [label $window.dnl -text "NO DATA"]
set Input_Data [hwtk::entry $window.ide -state [string tolower disabled]]
grid $Data_Name -row 0 -column 7 -padx 2m -pady 1m
grid $Input_Data -row 1 -column 7 -padx 2m -pady 1m
set inputdata 0
return $inputdata
}
}



