甲方的具体需求如下:
甲方需要将有限元分析后生成的msh文件和res文件,解析成3D网格化数据,在PC端显示。显示可以进行放大缩小旋转。
根据甲方提供的msh文件,分析文件中是已经经过有限元分析软件处理后的mesh数据。数据使用六面体格式存储,可能也会有四面体、线性格式文件。Res文件中,保存有热、力等数据,根据这些数据,可以为网格渲染着色。
在显示时,甲方希望将图形显示模块嵌入到目前甲方的系统中。甲方系统为Web系统。
针对以上甲方需求分析,我们提出了整体的解决方案。
整体方案分为前端和服务端。
服务端分为web服务端和转换服务端。
web服务端负责文件的上传下载。
转换服务端负责对mesh文件进行解析,转换。
1.用户在web后台上传msh文件、res文件
2.web服务端接收文件,保存文件到文件服务器(或者某个文件夹),同时将信息落表,记录状态为待转换。
3.转换服务器实时扫描数据库表。发现有状态为待转换的记录时,启动转换进程,根据表记录,读取文件信息,转换为OBJ格式,转换好的文件继续保存到文件服务器,同时将路径更新到数据库表,状态更新为已转换。(转换后的数据,不一定只是OBJ,也可以是其他ThreeJS可以识别的格式,例如STL,FBX等)
4。前端显示时,获取数据库表中的OBJ文件,通过ThreeJS显示到Web端。
1. 用户服务端为Linux系统(centos或ubuntu),CPU为x64。
2. 实现转换服务端。转换服务端语言为C++,调用了第三方库Poco、boost。
转换服务端为后台常驻进程。转换的过程是:
(1) 扫描后台数据库文件表(t_msh_file),取其中状态为 待转换 的 进行转换操作。扫描频率为每1分钟扫描一次。为避免数据量大时,存在较多积压数据,转换服务端支持多通道部署,每通道按文件ID取模分配。
(2) 数据库文件表应至少包含以下字段:
① ID、转换前msh文件路径、转换前res文件路径、转换状态、转换后文件路径、转换后res文件路径、
② 转换日志记录表 t_convert_log 至少包含以下字段 ID、转换的文件ID、转换结果、转换开始时间、转换结束时间
(3)读取并解析Mesh文件。Mesh文件为六面体(暂不考虑四面体)。读取res文件,res文件为每个面片的颜色,格式为 索引 颜色。
(4)读取后,转换为四角面片或三角面片的顶点、方向、面片的索引保存为OBJ格式。Res文件根据需要,转换为OBJ支持的材质格式文件(如mtl)。OBJ格式文件保存到数据库的转换后文件字段,材质格式保存到转换后res文件路径。
3. 实现显示端。
显示端为Web端示例代码,采用javascript+html的方式提供。支持Firefox、Google浏览器。Web端主要使用ThreeJS实现3D网格的展示。展示的内容包括网格面、网格边界线、渲染着色、色卡。展示过程中允许缩放、平移、旋转操作。
4. 转换效率。
转换的时间需要根据文件大小以及服务器配置来看。
5. 有限元功能:
1.后台配置需要切面的数据,变成切面
2.可以在界面选择温度、应力、位移查看有限元图形
3.可以在界面上选择需要材料号,显示有限元的图形(如有需要后面协助开发)
4.鼠标点击某个节点显示值(如有需要后面协助开发)
5.旋转缩放功能
6.色板根据最大最小值默认,可以手动输入
7.选择线框的模式
8.选择日期要读入的文件(MSH网格不变,挂载不同的结果RES)
9.变形功能,输入位移的放大系数,(做法:X Y Z 在三个坐标值加上某一个固定的位移值)
电脑配置 | 转换源文件大小 | 最长转换时间 |
系统: centos7/ubuntu20.04 CPU:I5-11400 2.6GHz 内存:8GB 硬盘:机械硬盘 | 10MB | 30秒 |
30MB | 60秒 | |
100MB | 180秒 | |
500MB | 300秒 | |
1G | 3000秒 |
上一篇:没有了
下一篇:没有了