本公開涉及工程數字化,尤其是涉及一種基于服務消息傳遞機制的cad前后端交互方法及系統。
背景技術:
1、cad(computer?aided?design,計算機輔助設計)作為現代工程設計的核心數字化工具,通過計算機圖形學與數值計算技術的深度融合,為設計人員提供幾何建模、參數分析、方案優化及圖紙生成等全流程支持。
2、cad是現代工程設計領域中重要的技術手段,當前主流的cad軟件,如autocad、revit、microstation、catia等,均為重型桌面軟件,需要性能較強的電腦以及體量較大的軟件安裝包,隨著對設計工作效率要求的提高,其對客戶端電腦性能要求高、使用不方便、不易協同、數據不易管理、軟件升級繁瑣等缺點逐漸顯現出來,而針對這些問題,也衍生出一些云端cad的解決方案。
3、但目前的階段,客戶端cad軟件仍然是主流,與此同時,云端cad平臺也正在漸漸被設計師接受。然而,現有的cad平臺架構存在以下問題:(1)現有cad軟件的前后端邏輯高度耦合,導致代碼維護困難、功能擴展受限;(2)現有cad軟件難以同時適配web端、桌面端等多種前端類型。
技術實現思路
1、本公開提供一種基于服務消息傳遞機制的cad前后端交互方法及系統,能夠在cad平臺端、云共存的應用中,實現前后端解耦,并通過一套代碼支持多前端運行,從而在多前端環境下實現交互式工程建模設計。
2、第一方面,本公開提供一種基于服務消息傳遞機制的cad前后端交互方法,包括:
3、步驟s1:系統初始化時,根據前端類型,啟動該前端類型對應的進程,包括:加載所有工具,注冊公共消息處理類對象,啟動消息管理器及工具設置管理器,注冊該前端類型對應的擴展消息處理類對象、工具設置視圖,并啟動該前端類型對應的工具設置視圖管理器;
4、其中,前端類型包括web端和桌面端;公共消息處理類包括命令消息處理類;擴展消息處理類包括web端工具設置視圖消息處理類和桌面端工具設置視圖消息處理類;
5、步驟s2:響應用戶操作,在前端與云端cad服務之間傳遞并處理消息,執行建模操作,包括:啟動工具;
6、其中,啟動工具,包括如下步驟:用戶通過前端啟動工具,前端觸發命令消息,將命令消息發送到云端cad服務,云端cad服務接收到命令消息,通過消息管理器將該消息分發到命令消息處理類對象進行處理,運行消息中的命令,啟動一個具體工具;
7、構造具體工具時,通過調用工具設置管理器的獲取工具設置數據方法,創建或查詢具體工具的工具設置數據類對象,并負責維護該工具設置數據類對象;
8、具體工具裝載過程中,創建該前端類型對應的工具設置視圖消息,由該前端類型對應的工具設置視圖消息處理類對象將該前端類型對應的工具設置視圖消息發送到前端;
9、前端類型對應的工具設置視圖管理器接收工具設置視圖消息,查詢到對應的視圖,并顯示。
10、在一些實施例中,當前端類型是web端,由web端工具設置視圖消息處理類對象將工具設置視圖消息格式化,通過數據通道發送到前端,web端工具設置視圖管理器接收并解析格式化的工具設置視圖消息;當前端類型是桌面端,由桌面端工具設置視圖消息處理類對象通過進程內通信與內存共享實現前后端消息傳遞。
11、在一些實施例中,公共消息處理類還包括鼠標消息處理類和鍵盤消息處理類;
12、步驟s2:響應用戶操作,在前端與云端cad服務之間傳遞并處理消息,執行建模操作,還包括:運行工具;
13、其中,運行工具,包括如下步驟:
14、在啟動工具之后,系統進入工具狀態,通過用戶交互進行工具運行過程,具體包括:運行工具時,接收用戶輸入的鼠標消息,由鼠標消息處理類對象處理并響應;接收用戶輸入的鍵盤消息,由鍵盤消息處理類對象處理并響應,并將響應結果傳遞至具體工具;
15、具體工具通過對鼠標消息、鍵盤消息的監聽,并根據該具體工具的工具設置數據類對象,繪制模型。
16、在一些實施例中,命令消息包括通過ui界面中的菜單和工具條組件啟動/關閉指定工具的指令。
17、在一些實施例中,在步驟s1中,所述擴展消息處理類還包括工具設置數據改變消息處理類;
18、在步驟s2中,在啟動工具之后,系統進入工具狀態,通過用戶交互進行工具運行過程,還包括:
19、當用戶通過鼠標操作和鍵盤操作進行模型繪制操作,在云端cad服務觸發工具設置數據類對象屬性值改變時,該前端類型對應的工具設置數據改變消息處理類對象將變化量發送到該前端類型對應的工具設置視圖,并更新該前端類型對應的工具設置視圖。
20、在一些實施例中,在步驟s2中,在啟動工具之后,系統進入工具狀態,通過用戶交互進行工具運行過程,還包括:
21、當用戶在該前端類型對應的工具設置視圖進行工具設置數據類對象屬性值修改操作,該前端類型對應的工具設置視圖將變化量發送到云端cad服務,由該前端類型對應的工具設置數據改變消息處理類對象處理,更新對應工具的工具設置數據類對象;
22、具體工具根據修改后的工具設置數據類對象屬性值,繪制模型。
23、在一些實施例中,在前端與云端cad服務之間,當前端類型是web端,web端工具設置數據改變消息處理類對象將變化量序列化后通過數據通道發送到web端工具設置視圖,并更新視圖;web端工具設置視圖將變化量序列化后通過數據通道發送到云端cad服務,由web端工具設置數據改變消息處理類對象處理,通過反序列化解析變化量,更新工具設置數據類對象;
24、當前端類型是桌面端,桌面端工具設置數據改變消息處理類對象和桌面端工具設置視圖通過進程內通信與內存共享實現前后端數據同步。
25、在一些實施例中,工具設置數據類繼承可觀測對象基類,所述可觀測對象基類是消息接口的實現類,用于監聽其子類對象的屬性值變化,在前端或云端cad服務的其中一端操作引起子類對象的屬性值變化時,觸發可觀測對象消息,通知另一端,實現前端和云端cad服務數據同步。
26、在一些實施例中,web端或桌面端工具設置數據改變消息處理類依賴于可觀測對象消息實現前端與云端cad服務工具設置數據類對象屬性值變化量的傳送與同步。
27、第二方面,本公開提供一種基于服務消息傳遞機制的cad前后端交互系統,用于執行所述的基于服務消息傳遞機制的cad前后端交互方法,所述系統包括:
28、初始化模塊,用于系統初始化時,根據前端類型,啟動該前端類型對應的進程,包括:加載所有工具,注冊公共消息處理類對象,啟動消息管理器及工具設置管理器,注冊該前端類型對應的擴展消息處理類對象、工具設置視圖,并啟動該前端類型對應的工具設置視圖管理器。
29、系統運行模塊,用于響應用戶操作,在前端與云端cad服務之間傳遞并處理消息,執行建模操作。
30、本公開的有益效果在于,與現有技術相比,本公開具有以下優點:
31、1)本公開的技術方案中,通過綜合考慮cad平臺中端、云共存的情況,將cad桌面端應用saas化,實現前后端分離,并在統一框架中創建公共類和針對不同前端的特定類,實現一套代碼支持多前端運行。具體而言,網頁端(web端)應用與桌面端應用采用同一套代碼,系統在初始化時判斷前端類型,并動態加載對應的實現方式。如此,一方面,能夠最大限度地減少重復代碼,提升系統代碼的高可用性和復用性;另一方面,能夠實現多端適配,完美融合網頁端(web端)應用與桌面端應用,確保一套代碼支持多前端運行,從而實現多前端環境下的交互式工程建模設計。
32、2)?通過定義多種消息類和消息處理類,并創建工具設置數據類及具體工具類,確保前后端之間不同類型消息和數據的高效處理與傳遞。通過這種分類和專業化的處理機制,實現前后端在多種交互場景下的高效通信和操作。
33、3)?本公開方案中,前后端基于可觀測對象實現數據同步,任何一端的數據變化均能實時觸發另一端同步,減少手動編碼與數據不一致風險;同時,由于界面(view)與業務邏輯的徹底解耦,為多前端融合框架提供了技術基礎,使得平臺能夠靈活適配多種前端應用。