ImageVerifierCode 换一换
格式:DOCX , 页数:8 ,大小:577.04KB ,
资源ID:27244008      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/27244008.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(最近在学HYPERMESH二次开发.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

最近在学HYPERMESH二次开发.docx

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

2、方法测量任何2d单元的面积,不管它有没有单元类型呢?这就是本二次开发的一个目的。 首先,要创要创建一个名称空间,名字 InquireArea,如下namespace eval :Ansys:oolKit:InquireArea set elem_ids_list set area_sum 0 该名称空间创建了两个变量,其中elem_ids_list 用存放选取的单元ID值,area_sum用来存放最后总的面积,并且作为结果输出。下一步,创建一个计算单元面积的过程:proc :Ansys:oolKit:InquireArea:CalculateArea args #声名变量为该名称空间的变量va

3、riable elem_ids_list variable 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 + $area_sum #这句语句是算完面积清空单元列表,以便下一次求面积set :Ansys:oolKit:InquireArea:elem_ids_list 有了计

4、算单元的过程,下一步我们要做什么呢?当然我们要做是把要求面积的单选取出来,下面这个过程就是选取单元的过程 proc :Ansys:oolKit:InquireArea:AddElems args if lindex $args 0 = typechangenotify return; switch lindex $args 0 getadvselmethods *entityhighlighting 1*clearmark elems 1 wm withdraw .inquireAreaWindow;*createmarkpanel elems 1 Select elements:wm dei

5、conify .inquireAreaWindow;eval lappend :Ansys:oolKit:InquireArea:elem_ids_list hm_getmark elems 1 *clearmark elems 1 *entityhighlighting 0 if llength $:Ansys:ToolKit:InquireArea:elem_ids_list = 0 tk_messageBox -message No elements were selected. n Please select elements to inquire area -title Altair

6、 HyperMeshreturn;return;reset set :Ansys:ToolKit:InquireArea:elem_ids_list return;default return 1; 这个过程看起来有点复杂,其实是比较简单的,下面拆解分析下它,首先,这个proc中部分语句是为gui服务的,GUI编写放在后面,你也可以联合起来看,现在我们只看单元选取的,很简单,就一句语句 *createmarkpanel elems 1 Select elements: ,找到了没呢?有了这条语句,当TCL运行到它时,就会弹出选择面板了 在它下面的一条语句是 eval lappend :Ansy

7、s:ToolKit:InquireArea:elem_ids_list hm_getmark elems 1 ,这条语句的作用取得刚选取的单元ID值并把它们附到elem_ids_list 中去,到这一步为止,elem_ids_list 列表已经有东西了,也就是,我们已经把单元选出来了,此时只调用proc :Ansys:ToolKit:InquireArea:CalculateArea 过程,就可以算出面积来了。那么下步做什么呢,那当然是要把我们的结果显示出来,有很多种方法,其中最简单的是调用TCL语言TK语句:tk_messageBox -message Area is: $:Ansys:To

8、olKit:InquireArea:area_sum-title Inquire Area -icon info这个东西有个坏处,就是你不能复制里面的面积信息,也就是说,你只能看。那么我们可以做一简单的GUI,通过entry(输入框)来取得面积信息上面那个选取单元的过程提到过,那里部分语句是为GUI 服务,下面写这个GUI首先,这个GUI用到hypermesh hwt toolkit,因此第上步加入下面语句 package require hwt;这样我们就可以大胆用hwt里面的一些控件了此外还用到hypermesh软件包自带的一过程,我们也要把它SOURCE进来SourceFile file

9、 join hm_info -appinfo SPECIFIEDPATH hw_tcl_common hw collector hwcollector.tcl好了,下面可能是读者最心的,如何创建一个窗口,通常还是把它放在一个过程里面proc :Ansys:ToolKit:InquireArea:InquireAreaWindow args :Ansys:ToolKit:InquireArea:esroyhwt:CreateWindow .inquireAreaWindow -windowtitle Inquire Area -noGeometrySaving -cancelButton Can

10、cel -helpButton help destroyOnUnpost -post;#设置窗口最大与最小值 wm minsize .inquireAreaWindow 400 140;wm maxsize .inquireAreaWindow 400 140;#如果置顶窗口,加上它吧wm attribute .inquireAreaWindow -topmost true#取得空腔,也就窗口里面放控件的地方吧,这是个pathset base hwt:WindowRecess .inquireAreaWindow #创建一个框架,然后我们才能往里放东西set fra1 frame $base.

11、fra1 #创建了框架,还要把它显示出来吧,下面这语句就是把它显示出来pack $fra1 -side top -anchor nw -fill x -expand false#一个框架是不够的,多创建一个吧,反正不用钱的set fra2 frame $base.fra2 pack $fra2 -side top -anchor nw -fill x -expand false #创建一个标签,set elem_label label $fra1.elem_label -text Select elements : -font hwt:AppFont -justify center #显示这个

12、标签 ,至于里面的选项,不懂可以看TCL的参考书pack $elem_label -side left -anchor nw -fill none -expand 0 -padx 4 -ipady 3#创建选取单元按钮set elems_button Collector $fra1.addelems entity 1 HmMarkCol -types elements -withtype 0 -withReset 1 -callback :Ansys:ToolKit:InquireArea:AddElems#显示它pack $fra1.addelems -side left -padx 3 -

13、pady 5#这里创建一个输入框,你可以从这里复制面积set area_entry AddEntry $fra2.areaentry -label Area = -labelWidth 15 -entryWidth 24 -validate real -state normal -textVariable :Ansys:ToolKit:InquireArea:area_sum pack $area_entry -side left -anchor nw -padx 4 -pady 5 #这里计算面积的按钮,-command 调用了我们之前创建的过:Ansys:ToolKit:InquireAr

14、ea: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,估计不看效果也很头痛的QQ截图20130106194501.jpg(14.36 K)2013/1/15

15、 10:36:57很简,两个entry ,两个按钮好吧,下面我们分析一下吧:Ansys:ToolKit:InquireArea:esroy 调用一个Desroy 的过程,现在还没有写这个过程,接下来就写它吧 proc :Ansys:ToolKit:InquireArea:esroy destroy .inquireAreaWindow 就一条语句,其中.inquireAreaWindow叫做窗口路径,通过destroy语句,我们把窗口毁了,这样每次我们创建一新的窗口之前,都会先毁一下窗口,保证只有一.inquireAreaWindow显示出来 通过这条语句,我们就可以创建下个窗口了hwt:Cr

16、eateWindow .inquireAreaWindow -windowtitle Inquire Area -noGeometrySaving -cancelButton Cancel -helpButton help destroyOnUnpost -post;有兴趣的可以把这段语句与 package require hwt 一起放到复制到txt文档,保存为tcl运行一下吧 其中的选项我就不说,已经很很啰嗦啦,可以查看帮助,其它的请看注释最后,加上这条语句::Ansys:ToolKit:InquireArea:InquireAreaWindow各个过程就串接起来了到现在为止,整个开发就完

17、成了,,当然还有许多细节说不到的,请大家原谅 下面给出完整脚本: namespace eval :Ansys:ToolKit:InquireArea set elem_ids_list set area_sum 0 package require hwt;SourceFile file join hm_info -appinfo SPECIFIEDPATH hw_tcl_common hw collector hwcollector.tcl proc :Ansys:ToolKit:InquireArea:CalculateArea args variable elem_ids_list var

18、iable area_sum 0 foreach elem_id $elem_ids_list set current_elem_area hm_getentityvalue elems $elem_id area 0 set area_sum expr $current_elem_area + $area_sum set :Ansys:ToolKit:InquireArea:elem_ids_list proc :Ansys:ToolKit:InquireArea:esroy destroy .inquireAreaWindow proc :Ansys:ToolKit:InquireArea

19、:InquireAreaWindow args package require hwt:Ansys:ToolKit:InquireArea:esroyhwt:CreateWindow .inquireAreaWindow -windowtitle Inquire Area -noGeometrySaving -cancelButton Cancel -helpButton help destroyOnUnpost -post;wm minsize .inquireAreaWindow 400 140;wm maxsize .inquireAreaWindow 400 140;wm attrib

20、ute .inquireAreaWindow -topmost trueset base hwt:WindowRecess .inquireAreaWindow set fra1 frame $base.fra1 pack $fra1 -side top -anchor nw -fill x -expand falseset fra2 frame $base.fra2 pack $fra2 -side top -anchor nw -fill x -expand false set elem_label label $fra1.elem_label -text Select elements

21、: -font hwt:AppFont -justify center pack $elem_label -side left -anchor nw -fill none -expand 0 -padx 4 -ipady 3set elems_button Collector $fra1.addelems entity 1 HmMarkCol -types elements -withtype 0 -withReset 1 -callback :Ansys:ToolKit:InquireArea:AddElemspack $fra1.addelems -side left -padx 3 -p

22、ady 5set area_entry AddEntry $fra2.areaentry -label Area = -labelWidth 15 -entryWidth 24 -validate real -state normal -textVariable :Ansys:ToolKit:InquireArea:area_sum pack $area_entry -side left -anchor nw -padx 4 -pady 5 set get_area_but button $fra2.getareabut -text Calculate -command :Ansys:Tool

23、Kit:InquireArea:CalculateAreapack $get_area_but -side left -anchor nw -padx 10 -pady 5 -ipadx 10 -ipady 3 proc :Ansys:ToolKit:InquireArea:AddElems args if lindex $args 0 = typechangenotify return; switch lindex $args 0 getadvselmethods *entityhighlighting 1*clearmark elems 1 wm withdraw .inquireArea

24、Window;*createmarkpanel elems 1 Select elements:wm deiconify .inquireAreaWindow;eval lappend :Ansys:ToolKit:InquireArea:elem_ids_list hm_getmark elems 1 *clearmark elems 1 *entityhighlighting 0 if llength $:Ansys:ToolKit:InquireArea:elem_ids_list = 0 tk_messageBox -message No elements were selected.

25、 n Please select elements to inquire area -title Altair HyperMeshreturn;return;reset set :Ansys:ToolKit:InquireArea:elem_ids_list return;default return 1; :Ansys:ToolKit:InquireArea:InquireAreaWindow下面是运行过程: 首先,你总得要创建一个TCL文件吧 用文本编辑器把上述代码复制进去,保存为file_name.TCL就可以了 然后在hypermesh 菜单File- run-tclscript然后打开那个文件就OK了弹出:QQ截图20130106201953.jpg(14.61 K)2013/1/15 10:36:57双击elementsQQ截图20130106202038.jpg(140.23 K)2013/1/15 10:36:57选择单元(图中白色显示)QQ截图20130106202058.jpg(15.34 K)2013/1/15 10:36:57单击Calculate按钮就可以计算面积了,共同学习,共同进步!

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1