我们在日常中面抽取过程中,有时会产生一些不可预测的极小面积surface,在生成网格后会极大降低整体单元质量,改变结构原本的几何关系,甚至在提交计算时就会发生报错等负面影响,对于工程应用是决不允许存在这类瑕疵。
如下图,会产生细长的面和拐角处极小的面,如果不仔细巡查,通常难以找到这些问题。

在寻找这些小面积的surface时却是令人感到费时费力,即便是逐个查找还是可能产生遗漏,只能通过不断反复查找网格质量来修复模型,以保证模型的基础离散化达到计算要求。
虽说小面积surface用肉眼搜寻不容易,但它有属于自己的属性,即面积大小。通过以面积大小为判断依据将这些极小surface提取到一个component,然后自行观察或直接删除(此处看个人操作经验而定),这也就能极大程度降低小面积surface带来的网格划分问题。
set area {150.0}*createmark surfs 1 "displayed"set mysurf [hm_getmark surfs 1]*createentity comps name=linshifor {set i 0} {$i < [llength $mysurf]} {incr i} {set id [lindex $mysurf $i]set s_area [hm_getareaofsurface surfs $id]if {$s_area <= [expr {$area + 5}]} {*createmark surfs i $id*createmark surfs i $id}}
执行完的效果如下所示,目的是将这些小面移动到一个名为linshi的component中,这样方便我们查看移动的面是否符合我们的要求,如果有偏差可以调整area的数值来控制过滤的面积大小。
PS:在这个简短的脚本上可以增加一些条件如:短边、体积等,通过多个约束条件可以更加精准过滤目标,但需注意的是,条件越多脚本执行速度越慢,因此建议根据个人需求适当进行一些变换从而降低前处理中的一些操作难度。