首页/文章/ 详情

TCL语言对hypermesh二次开发:搜索指定线line

3小时前浏览2

在有限元模型前处理中,常常遇到网格划分质量不过关,仔细检查会发现模型中存在尺寸非常小的线(直线或曲线),有些尺寸在0.1mm以下,很难发现,在HyperMesh中使用Tcl进行二次开发,可以编写一个脚本来查找距离小于用户输入的判定值的线,并在这些线的两端增加临时节点,方便后续查找处理。

以下是一个示例代码,展示了如何实现这一功能:  

#获取用户输入的判定值  

set threshold [hwi GetValue "UserInput.Threshold"]  

#获取所有线的ID  

set lines [hm_getlines]  

#遍历所有线,检查距离  

foreach line_id $lines {  

#获取线的两个端点  

set nodes [hm_getline_nodes $line_id]  

set node1 [lindex $nodes 0]  

set node2 [lindex $nodes 1]  

#获取两个节点的坐标  

set coord1 [hm_getnode $node1]  

set coord2 [hm_getnode $node2]  

#计算两点之间的距离  

set distance [expr {sqrt(pow([lindex $coord1 0] - [lindex $coord2 0], 2) + pow([lindex $coord1 1] - [lindex $coord2 1], 2) + pow([lindex $coord1 2] - [lindex $coord2 2], 2))}]  

#如果距离小于判定值,则在两端增加临时节点  

if {$distance < $threshold} {  

#在节点1和节点2的位置增加临时节点  

set temp_node1 [hm_createnode [lindex $coord1 0] [lindex $coord1 1] [lindex $coord1 2]]  

set temp_node2 [hm_createnode [lindex $coord2 0] [lindex $coord2 1] [lindex $coord2 2]]  

 

#输出临时节点的ID  

puts "Created temporary nodes: $temp_node1 and $temp_node2 for line $line_id"  

}  

}  


 

代码说明:  

1. 获取用户输入的判定值:使用`hwi GetValue`命令获取用户输入的阈值。  

2. 获取所有线的ID:使用`hm_getlines`命令获取当前模型中所有线的ID  

3. 遍历所有线:使用`foreach`循环遍历每一条线。  

4. 获取线的端点:使用`hm_getline_nodes`命令获取线的两个端点节点ID  

5. 获取节点坐标:使用`hm_getnode`命令获取每个节点的坐标。  

6. 计算距离:使用欧几里得距离公式计算两个节点之间的距离。  

7. 判断距离:如果计算出的距离小于用户输入的判定值,则在这两个节点的位置创建临时节点。  

8. 输出结果:输出创建的临时节点的ID  

以上代码仅供参考,每个人编写思路不同,欢迎交流。



来源:仿真老兵
HyperMeshAbaqus疲劳断裂非线性二次开发试验螺栓
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-12-13
最近编辑:3小时前
无情浪子
硕士 签名征集中
获赞 22粉丝 10文章 57课程 0
点赞
收藏
作者推荐

Abaqus扭转仿真案例

结构载荷中常见的拉压载荷,扭转载荷,弯曲载荷等,其中扭转载荷在现实中很常见,如转动门把手,转轴承受扭转载荷,如何在abaqus中模拟扭转载荷呢。本例模拟转动门把手,一端固定约束,另一端施加转矩材料用常见的钢,弹性模量210GPa,泊松比0.3,模型比较简单,用实体网格模拟,因此创建实体属性。本例仅演示扭转载荷施加过程,创建线性静强度工况,不用考虑非线性,不需要打开Nlgeom开关,静强度工况如下图。扭矩施加在转轴末端,需要对末端创建刚性连接,首先创建耦合中心点RP,用interaction里的coupling创建耦合(RBE2),耦合类型为kinematic(运动耦合),表示耦合面的运动和参考点的刚体运动是耦合的。如果是distributing类型的话,也是把一组节点的运动和参考点的刚体运动联系在一起,但是它传递力的时候是按特定节点的权重系数来平均分配的,权重系数的确定对于分布耦合类型的约束,权重系数是自动计算的,如果选择的面是基于单元的面,这种情况下,权重系数是基于每一个耦合节点所附属的面积来确定的,除了位于边缘的面,这样的情况权重系数是根据附属的边的长度来确定的,此外,权重系数可以通过集中加权方式之一来修改,这种加权方式可以让力从参考点传递到耦合点时正好与径向距离成反比。约束一端自由度,另一端施加My扭矩,施加参考点选择前面创建的RP,施加方式见下图计算结果如下:来源:仿真老兵

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈