仿真通常情况是基于几何模型,生成网格模型。有时候我们拿到的只有离散的计算模型,也就是网格模型。但是我们又希望在几何模型进行操作,这就涉及到一些逆向建模技术。
本文简单介绍一下从网格模型到BREP几何模型一些算法。
第一种方法根据网格面的法向量创建几何面。其实在FasFluid中已经部分用到了该方法。应用场景如下:
导入一个没有分组的STL文件,对其进行内流场分析。
因为没有分组,所以无法识别边界条件需要加在哪些三角面上。利用三角面片的法向量的对面片进行分组,设定一个阈值,阈值内的三角面片归为同一个面上,再设置边界边界条件。进一步扩展,将同一组三角面片进行边界提取,就可以构建基于BREP的拓扑EDGE和几何,再自底向上就可以建立出完整的基于BREP的面结构。该方法计算量小,适应性好,缺点是阈值取决于模型的特点,当离散的模型质量不高的时候,在梯度大的地方容易出现错误,需要设置局部参数微调。
第二种方法是将网格模型直接转成BREP格式,也就是面片的三角形转成基于BREP的三角形面。这种构建方式直接,不会出错,但缺点也很明显:数据量庞大。原先的面片数据只有点的信息,但是转成BREP之后,加上了复杂的拓扑,数据上升一个数量级。有朋友反映在FasFluid中,导入STL非常慢,原因就在此。对于大模型的导入,不推荐使用该方法。而是使用第一种方法。
一些前处理器中提供了有限元模型到几何模型的创建,但是只支持面片的转换。其实三维实体网格单元也能转换,只不过实现稍微复杂点。以四面体单元为例,流程如下:
提取相同材料和属性的四面体单元成组;
分离不相交的同属性组
提取组的边界面,双面的为内部面,单面的为边界面
根据第一种方法构建边界面
利用封闭BREP面,自底向上构建完整的BREP实体
一些需要进一步完善的内容:
进行特征识别,生成参数模型。比如原始模型是圆柱体,但通过逆向转换生成的只可能是等边多面体,圆的特征需要重新识别
如果网格模型中出现相交,破损,重叠等单元,需要提前清理,否则几何模型容易出现拓扑错误。对于无法在网格端进行的清理的错误,可以进行几何清理
有些网格模型精度较高,转换成几何时候需注意容差问题
4. 网格单元的所有附加属性需要完整的保留到几何上
5. 对于由三维实体生成的SHELL,BEAM单元等,全自动转换有困难
现在很多三维扫描仪已经有完善的从网格到几何的功能,即物理扫描几何实体,生成点云,网格重建,几何重建,精度可以达到0.01毫米级,模型可以导出标准的包含BREP信息的STEP文件格式。