甲方的具體需求如下:
甲方需要將有限元分析后生成的msh文件和res文件,解析成3D網(wǎng)格化數(shù)據(jù),在PC端顯示。顯示可以進(jìn)行放大縮小旋轉(zhuǎn)。
根據(jù)甲方提供的msh文件,分析文件中是已經(jīng)經(jīng)過(guò)有限元分析軟件處理后的mesh數(shù)據(jù)。數(shù)據(jù)使用六面體格式存儲(chǔ),可能也會(huì)有四面體、線性格式文件。Res文件中,保存有熱、力等數(shù)據(jù),根據(jù)這些數(shù)據(jù),可以為網(wǎng)格渲染著色。
在顯示時(shí),甲方希望將圖形顯示模塊嵌入到目前甲方的系統(tǒng)中。甲方系統(tǒng)為Web系統(tǒng)。
針對(duì)以上甲方需求分析,我們提出了整體的解決方案。
整體方案分為前端和服務(wù)端。
服務(wù)端分為web服務(wù)端和轉(zhuǎn)換服務(wù)端。
web服務(wù)端負(fù)責(zé)文件的上傳下載。
轉(zhuǎn)換服務(wù)端負(fù)責(zé)對(duì)mesh文件進(jìn)行解析,轉(zhuǎn)換。
1.用戶在web后臺(tái)上傳msh文件、res文件
2.web服務(wù)端接收文件,保存文件到文件服務(wù)器(或者某個(gè)文件夾),同時(shí)將信息落表,記錄狀態(tài)為待轉(zhuǎn)換。
3.轉(zhuǎn)換服務(wù)器實(shí)時(shí)掃描數(shù)據(jù)庫(kù)表。發(fā)現(xiàn)有狀態(tài)為待轉(zhuǎn)換的記錄時(shí),啟動(dòng)轉(zhuǎn)換進(jìn)程,根據(jù)表記錄,讀取文件信息,轉(zhuǎn)換為OBJ格式,轉(zhuǎn)換好的文件繼續(xù)保存到文件服務(wù)器,同時(shí)將路徑更新到數(shù)據(jù)庫(kù)表,狀態(tài)更新為已轉(zhuǎn)換。(轉(zhuǎn)換后的數(shù)據(jù),不一定只是OBJ,也可以是其他ThreeJS可以識(shí)別的格式,例如STL,FBX等)
4。前端顯示時(shí),獲取數(shù)據(jù)庫(kù)表中的OBJ文件,通過(guò)ThreeJS顯示到Web端。
1. 用戶服務(wù)端為Linux系統(tǒng)(centos或ubuntu),CPU為x64。
2. 實(shí)現(xiàn)轉(zhuǎn)換服務(wù)端。轉(zhuǎn)換服務(wù)端語(yǔ)言為C++,調(diào)用了第三方庫(kù)Poco、boost。
轉(zhuǎn)換服務(wù)端為后臺(tái)常駐進(jìn)程。轉(zhuǎn)換的過(guò)程是:
(1) 掃描后臺(tái)數(shù)據(jù)庫(kù)文件表(t_msh_file),取其中狀態(tài)為 待轉(zhuǎn)換 的 進(jìn)行轉(zhuǎn)換操作。掃描頻率為每1分鐘掃描一次。為避免數(shù)據(jù)量大時(shí),存在較多積壓數(shù)據(jù),轉(zhuǎn)換服務(wù)端支持多通道部署,每通道按文件ID取模分配。
(2) 數(shù)據(jù)庫(kù)文件表應(yīng)至少包含以下字段:
① ID、轉(zhuǎn)換前msh文件路徑、轉(zhuǎn)換前res文件路徑、轉(zhuǎn)換狀態(tài)、轉(zhuǎn)換后文件路徑、轉(zhuǎn)換后res文件路徑、
② 轉(zhuǎn)換日志記錄表 t_convert_log 至少包含以下字段 ID、轉(zhuǎn)換的文件ID、轉(zhuǎn)換結(jié)果、轉(zhuǎn)換開始時(shí)間、轉(zhuǎn)換結(jié)束時(shí)間
(3)讀取并解析Mesh文件。Mesh文件為六面體(暫不考慮四面體)。讀取res文件,res文件為每個(gè)面片的顏色,格式為 索引 顏色。
(4)讀取后,轉(zhuǎn)換為四角面片或三角面片的頂點(diǎn)、方向、面片的索引保存為OBJ格式。Res文件根據(jù)需要,轉(zhuǎn)換為OBJ支持的材質(zhì)格式文件(如mtl)。OBJ格式文件保存到數(shù)據(jù)庫(kù)的轉(zhuǎn)換后文件字段,材質(zhì)格式保存到轉(zhuǎn)換后res文件路徑。
3. 實(shí)現(xiàn)顯示端。
顯示端為Web端示例代碼,采用javascript+html的方式提供。支持Firefox、Google瀏覽器。Web端主要使用ThreeJS實(shí)現(xiàn)3D網(wǎng)格的展示。展示的內(nèi)容包括網(wǎng)格面、網(wǎng)格邊界線、渲染著色、色卡。展示過(guò)程中允許縮放、平移、旋轉(zhuǎn)操作。
4. 轉(zhuǎn)換效率。
轉(zhuǎn)換的時(shí)間需要根據(jù)文件大小以及服務(wù)器配置來(lái)看。
5. 有限元功能:
1.后臺(tái)配置需要切面的數(shù)據(jù),變成切面
2.可以在界面選擇溫度、應(yīng)力、位移查看有限元圖形
3.可以在界面上選擇需要材料號(hào),顯示有限元的圖形(如有需要后面協(xié)助開發(fā))
4.鼠標(biāo)點(diǎn)擊某個(gè)節(jié)點(diǎn)顯示值(如有需要后面協(xié)助開發(fā))
5.旋轉(zhuǎn)縮放功能
6.色板根據(jù)最大最小值默認(rèn),可以手動(dòng)輸入
7.選擇線框的模式
8.選擇日期要讀入的文件(MSH網(wǎng)格不變,掛載不同的結(jié)果RES)
9.變形功能,輸入位移的放大系數(shù),(做法:X Y Z 在三個(gè)坐標(biāo)值加上某一個(gè)固定的位移值)
電腦配置 | 轉(zhuǎn)換源文件大小 | 最長(zhǎng)轉(zhuǎn)換時(shí)間 |
系統(tǒng): centos7/ubuntu20.04 CPU:I5-11400 2.6GHz 內(nèi)存:8GB 硬盤:機(jī)械硬盤 | 10MB | 30秒 |
30MB | 60秒 | |
100MB | 180秒 | |
500MB | 300秒 | |
1G | 3000秒 |
上一篇:沒(méi)有了
下一篇:沒(méi)有了