本帖最后由 fridecailei 于 2013-8-19 19:15 编辑
set Connector_Comp "Connector"
*collectorcreateonly components $Connector_Comp "" 32
*createmarkpanel comps 2 "select comps"
set complist [hm_getmark comps 2]
set holelist [hm_ce_gethmholes 2 20 0.0 0 1 0];
#生成孔圆心
set L [llength $holelist]
for {set i 0} {$i<$L} {incr i} {
set W [llength [lindex $holelist $i]];
for {set j 1} {$j<$W} {incr j 1} {
set center_cordinate [lindex $holelist $i $j 0];
*createpoint [lindex $center_cordinate 0] [lindex $center_cordinate 1] [lindex $center_cordinate 2];
}
}
#生成螺栓
*createmark surfaces 1 "displayed"
*maskentitymark surfaces 1 0
for {set layer 3} {$layer>=2} {incr layer -1} {
*CE_GlobalSetInt "g_ce_spotvis" 0
*CE_GlobalSetInt "g_ce_seamvis" 0
*CE_GlobalSetInt "g_ce_areavis" 0
*CE_GlobalSetInt "g_ce_boltvis" 1
*CE_GlobalSetInt "g_ce_applymassvis" 0
*createmark points 1 displayed
*createstringarray 5 "link_elems_geom=elems" "link_rule=at_fe_realize" "relink_rule=none" "tol_flag=0" "tol=30.000000"
*CE_ConnectorCreateByMark points 1 "bolt" $layer components 2 1 5
*createmark connectors 1 displayed
*createstringarray 7 "ce_configfile=D:/Program Files/Altair/12.0/hm/bin/win64/feconfig.cfg"\
"ce_propertyscript=" "ce_notuseijk=1" "ce_connectivity=0" "ce_boltmindiameter=1.000000"\
"ce_boltmaxdiameter=50.000000" "ce_systems=0"
*CE_FE_RealizeWithDetails 1 "bolt" "nastran" 1001 52 0 30 1 7
*CE_GlobalSetInt "g_ce_spotvis" 1
*CE_GlobalSetInt "g_ce_seamvis" 1
*CE_GlobalSetInt "g_ce_areavis" 1
*CE_GlobalSetInt "g_ce_boltvis" 1
*CE_GlobalSetInt "g_ce_applymassvis" 1
#合并节点
*createmark elements 1 "by collector name" $Connector_Comp
*equivalence elements 1 0.1 0 0 0
*createmark elements 1 "by collector name" $Connector_Comp
*equivalence elements 1 0.1 1 0 0
#删除重复单元
*createmark elements 1 "displayed"
*createmark elements 2
*elementtestduplicates elements 1 2 1
*deletemark elements 2
#删除未realized单元
*createmark connectors 2 displayed
set ce_list [ hm_getmark connectors 2 ];
foreach ce_id $ce_list {
#set ce_fes [ hm_ce_getallfe $ce_id ];
set ce_state [ hm_ce_info $ce_id "state"];
if {$ce_state !="realized" } {
*createmark connectors 1 $ce_id
*deletemark connectors 1
}
}
}
###
这是以前写的一个小程序,批量处理螺栓连接,只是个人的想法,有其他方法的可以交流交流;请批评与指正!
以一个示例说明:
首先建立三个COMPS(nastran模板)和如下的网格:
第二步:file----run----tcl/tk scripts,选择相应的tcl程序 注意:在运行程序之前必须确认一下几方面的内容: 然后选择上述三个COMPS 最后螺栓生成
注意:此例连接单元为RBE2,所有连接孔必须在不同的component中,否者会报错!
图中的模型文件(*****必须用HM12才行*********)
|