最近在做一个箱梁实体模型的时候,遇到了布尔运算错误,提示:
The following entities do not support booleans.
Use the SPLOT command to examine bad surfaces/areas
Format for SPLOT is SPLOT,NA1,NA2,NINC,MESHSIZE.
这是一个“老大难”的问题,其“难处”主要有二:
- 布尔运算错误不会经常发生,一旦发生却经常不好找原因。最后往往需要改变建模策略,但为什么改变建模策略之后就可行了呢?这事儿有时候又说不清楚。。。
- splot命令很鸡肋,程序告诉你用这个命令查看一下出错的面吧,结果当你真的用这个命令去查看的时候,它又不能给用户提供太有价值的信息,也就是“查不查看一个样”。。。
找了一圈这类问题的解决方案,绝大多数是只有提问没有后续,对于splot命令则只见过一篇吐槽的论坛帖子。如今看来,这么多个版本升上去了,这个命令的功能还是没有改善。
先说同类问题的解决方案吧,
- 查看模型是否存在缝隙、重复关键点等问题,尤其是对于那些直接以*.iges等格式导入的模型;
- 设置容差,利用btol命令进行设置。ansys默认容差是1e-5,可以考虑适当放宽容差看看;
- 改变建模策略(思路),这意味着在一定程度上需要部分返工;
- 查看那些“自动拟合”出来的截面;
- ……
对于我遇到的问题,单箱三室截面不算复杂,但其斜腹板实体建立过程中多次出现需程序“自动拟合”的提示,像下面这样:
出现这种提示的原因是,我要建立的平面原本是一个平面,我也是利用a命令去创建,但由于坐标的有效数字取值,以及变截面等问题,导致有些平面在模型中“实际上是不平的”,因此程序自动将其转换成曲面。
在出现了布尔运算报错后,我手动修改了一些关键点坐标。这一步操作对于计算精度没有影响,坐标变动非常微小,但会有效控制住自动拟合曲面的数量。
当时,在我这样操作之后,问题“竟然”解决了。难以置信,因为曲面应当也同样可以用布尔运算的啊,而且我在后续的测试中再也没有重复出来这个错误。下面我把做的一些测试命令放上来,欢迎探讨。
测试1 切割“扩展”生成的实体
finish
/clear
/title,Testing1
/prep7
/view,1,1,1,1
rectng,-10,10,-10,10
vext,all,,,,,10
wprota,,,90
vsbw,all
结果当然是很容易就可进行布尔运算的。
测试2 关键点→平面→实体的建模策略
finish
/clear
/title,Testing2
/prep7
/pnum,kp,1
/view,1,1,1,1
k,1,-10,10,0
k,2,10,-10,0
k,3,10,10,0
k,4,-10,-10,0
k,5,-10,-10,10
k,6,10,-10,10
k,7,10,10,10
k,8,-10,10,10
a,1,3,2,4
a,7,8,5,6
a,3,7,6,2
a,6,5,4,2
a,5,8,1,4
a,1,8,7,3
va,all
wprota,,,90
vsbw,all
在直接用关键点生成平面的过程中,需要注意的是根据右手定则判断平面的法向。在这个建模策略中,标准做法是使组成实体的各平面法向都向内或者都向外,保持一致。
测试3 关键点→平面→实体的建模策略,法线方向不一致
finish
/clear
/title,Testing3
/prep7
/pnum,kp,1
/view,1,1,1,1
k,1,-10,10,0
k,2,10,-10,0
k,3,10,10,0
k,4,-10,-10,0
k,5,-10,-10,10
k,6,10,-10,10
k,7,10,10,10
k,8,-10,10,10
a,1,3,2,4
a,7,8,5,6
a,3,7,6,2
a,6,5,4,2
a,5,8,1,4
a,8,1,3,7
va,all
wprota,,,90
vsbw,all
通过本例证明:组成实体的平面,其法线方向不需要一定都指向实体内部,布尔运算对法线方向不敏感。
测试4 自动拟合平面
finish
/clear
/title,Testing4
/prep7
/pnum,kp,1
/view,1,1,1,1
k,1,-10,10,0
k,2,10,-10,0
k,3,10,10,0
k,4,-10,-10,0
k,5,-9,-10.4,10
k,6,11.5,-10,10
k,7,10,3.7,10
k,8,-12.1,11.65,10
a,1,3,2,4
a,7,8,5,6
a,3,7,6,2
a,6,5,4,2
a,5,8,1,4
a,8,1,3,7
va,all
wprota,,,90
vsbw,all
和我在箱梁里遇到的应用场景相同,但在本例测试中并没有出现无法进行布尔运算的错误。说明程序自动拟合出来的曲面进行布尔运算是没问题的。或者说,理论上只要是能建立实体,该实体内部就一定是闭合空间,那么布尔运算本应该也是没问题的。
也就是说,被我解决的箱梁建模过程中布尔运算错误,在小样模型中并没有重复出来。未免有所遗憾,始终未能找到导致错误产生的真正原因。
关于splot命令
话又说回来,真的遇到报错时,splot命令又能有啥用呢?
根据splot命令的格式,对上述测试4的实体进行分析。对于15号曲面而言:
splot,15,,,10
splot,13,,,10
从以上对两个面施加splot命令可以看出,网格密度可以调整,当前查看的平(曲)面是在白色网格线组成的平(曲)面范围之内。白色网格线应该就是官方文档中提到的底面underlying surface,其范围与实体在其方向上的投影范围有关。
然而, 还是没想明白splot有什么意义,难道是需要逐一关键点处观察,看看有没有关键点“跑到”新的位置上,所以,还是没想好这个命令最终有啥用
暂无评论