最近在学HYPERMESH二次开发

上传人:夏** 文档编号:484976182 上传时间:2023-12-24 格式:DOCX 页数:10 大小:161.94KB
返回 下载 相关 举报
最近在学HYPERMESH二次开发_第1页
第1页 / 共10页
最近在学HYPERMESH二次开发_第2页
第2页 / 共10页
最近在学HYPERMESH二次开发_第3页
第3页 / 共10页
最近在学HYPERMESH二次开发_第4页
第4页 / 共10页
最近在学HYPERMESH二次开发_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《最近在学HYPERMESH二次开发》由会员分享,可在线阅读,更多相关《最近在学HYPERMESH二次开发(10页珍藏版)》请在金锄头文库上搜索。

1、最近在学HYPERMESH二次开发,发觉可以用它做很多有用的东西以简化工作.下面例子讲述 的是如何利用hypermesh二次开发在ansys模板下求2d单元面积。问题描述:在Ansys模板下,如果要用下面工具求2d单元面积,则单元必须要有单 元类型,如果没有单元类型,则面积不可求,这就有一个麻烦,当我们须要导出ansys的只是三维模型,那么二维单元相对于后面计算来 说是不须导出的,所以也不须赋与其单类型,但可能计算时又要用到模型某个面的面积,这样又必须赋与其单元,通常做法是为 单元赋与shell 93单元类型,那么有没有一种更直接的方法测量任何2d单元的面积,不管它有没有单元类型呢?这就是本二

2、次开发 的一个目的。亠 d b比赴蠢EM卿“霸魄6 口肃白IdFuni匸 :|dloniH |=Q . D 0DL M注CZ3dD D QDC MiliiJmmn.s5 -rD D 0Df AE.=FC 1W1W.Z irtlE.j.i首先,要创要创建一个名称空间,名字InquireArea,如下namespace eval :Ansys: oolKit:: InquireArea set elem_ids_list 口set area_sum 0 该名称空间创建了两个变量,其中elem_ids_list用存放选取的单元ID值,area_sum 用来存放最后总的面积,并且作为结果输出。下一步,

3、创建一个计算单元面积的过程:proc : :Ansys: oolKit: InquireArea: CalculateArea args #声名变量为该名称空间的变量variable elem_ids_listvariable area_sum 0#计算每一个单元的面积并累加到area_sum中去foreach elem_id $elem_ids_list 廿通过dataname访问每个单元的面积set current_elem_area hm_getentityvalue elems $elem_id area 0 set area_sum expr $ current_elem_area

4、+ $area_sum 廿这句语句是算完面积清空单元列表,以便下一次求面积set : :Ansys:oolKit:InquireArea: elem_ids_list 有了计算单元的过程,下一步我们要做什么呢?当然我们要做是把要求面积的单选取出来,下面这个过程就是选取单元的过程proc:Ansys:J oolKit::InquireArea:AddElems args if lindex $args 0 = typechangenotifyreturn; switch lindex $ args 0 getadvselmethods *entityhighlighting 1*clearmar

5、k elems 1wm withdraw 。 inquireAreaWindow;*createmarkpanel elems 1 Select elements:wm deiconify .inquireAreaWindow;M |eval lappend : Ansys: 呼oolKit: InquireArea::elem_ids_list hm_getmark elems 1 *clearmark elems 1*entityhighlighting 0if llength $: :Ansys: ToolKit::InquireArea: :elem_ids_list = 0 tk_m

6、essageBox message No elements were selec ted。 n Please selec t elemen ts to inquire area title Alt air HyperMesh return;return;reset set : :Ansys: : ToolKit:: InquireArea:: elem_ids_list 口 return;default return 1; 这个过程看起来有点复杂,其实是比较简单的,下面拆解分析下它,首先,这个proc中部分语句是为gui服务的,GUI编写放在后面,你也可以联 合起来看,现在我们只看单元选取的,

7、很简单,就一句语句 *createmarkpanel elems 1 ” Select elements:” ,找到了没呢? 有了这条语句,当TCL运行到它时,就会弹出选择面板了在它下面的一条语句是eval lappend : : Ansys:ToolK it:In quireArea:elem_ids_lis t hm_ge tmark elems 1 ,这条语 句的作用取得刚选取的单元ID值并把它们附到elem_ids_list中去,到这一步为止, elem_ids_list 列表已经有东西了,也就是,我们已经把单元选出来了,此时只调用proc :Ansys:: ToolKit: Inqu

8、ireArea: :CalculateArea 过程,就可以算出面积来了。那么下步做什么呢,那当然是要把我们的结果显示出来,有很多种方法,其中最简单的 是调用TCL语言TK语句:t k_messageBox -message Area is :$: Ansys: :ToolKit: :InquireArea: :area_sum-title Inquire Area ” icon info这个东西有个坏处,就是你不能复制里面的面积信息,也就是说,你只能看。那么我们可以做一简单的GUI,通过entry (输入框)来取得面积信息 上面那个选取单元的过程提到过,那里部分语句是为GUI服务,下面写这个

9、GUI 首先,这个GUI用到hypermesh hwt toolkit,因此第上步加入下面语句package require hwt;这样我们就可以大胆用hwt里面的一些控件了此外还用到hypermesh软件包自带的一过程,我们也要把它SOURCE进来SourceFile file join hm_info appinfo SPECIFIEDPATH hw_tcl_common hw” collector hwcollector。tcl好了,下面可能是读者最心的,如何创建一个窗口,通常还是把它放在一个过程里面 proc : : Ansys: ToolKit:InquireArea:: Inqu

10、ireAreaWindow args Ansys: ToolKit::二 6InquireArea:esroyhwt:CreateWindow .inquireAreaWindow -windowtitle ” Inquire Area ”noGeometrySaving -cancelButton Cancel -helpButton help destroyOnUnpost post;廿设置窗口最大与最小值 wm minsize .inquireAreaWindow 400 140; wm maxsize .inquireAreaWindow 400 140;#如果置顶窗口,加上它吧wm

11、attribute 。 inquireAreaWindow topmost true 廿取得空腔,也就窗口里面放控件的地方吧,这是个path set base hwt: WindowRecess .inquireAreaWindow #创建一个框架,然后我们才能往里放东西 set fra1 frame $base.fra1 #创建了框架,还要把它显示出来吧,下面这语句就是把它显示出来 pack $fra1 side top -anchor nw -fill x expand false 一个框架是不够的,多创建一个吧,反正不用钱的set fra2 frame $base。 fra2 pack

12、fra2 side top -anchor nw fill xexpand false 创建一个标签,set elem_label label $fral。 elem_label text ”Select elements: -font hwt::AppFont -justify center #显示这个标签,至于里面的选项,不懂可以看TCL的参考书pack $elem_labelside left -anchor nw -fill none -expand 0padx 4 ipady 3 创建选取单元按钮set elems_button Collectorfra1.addelems enti

13、ty 1 HmMarkCol -types elements” -withtype 0 withReset 1 -callback”:Ansys::ToolKit:InquireArea::AddElems” 显示它pack $fral。 addelems side left -padx 3 pady 5 #这里创建一个输入框,你可以从这里复制面积 set area_entry AddEntry fra2.areaentry -label”Area = -labelWidth 15 entryWidth 24 -validate real -state normal textVariable

14、:Ansys::ToolKit:InquireArea:area_sum pack area_entry side leftanchor nwpadx 4pady 5廿这里计算面积的按钮,-command调用了我们之前创建的过:Ansys:ToolKit:InquireArea:CalculateArea 这样我们按下它时,就执行这个过程了set get_area_but button fra2.getareabut text Calculate command : :Ansys: :ToolKit:: InquireArea: : CalculateAreapack get_area_but -side left anchor nw -padx 10 -pady 5 -ipadx 10 -ipady 3相对是一个比较长的过程,先看一下效果,如果你是第一次接触GUI,估计不看效果也 很头痛的Select elements:elementsAreahelp=ROV. jlvww. MmWp-rnmE 冋0CalculateEancelCi很简,两个entry,两个按钮 好吧,下面我们分析一下吧:Ansys

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 机械/制造/汽车 > 电气技术

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号