SolidWorks異地協同設計系統的實現
2013-05-21 by:廣州有限元分析、培訓中心-1CAE.COM 來源:仿真在線
為實現SolidWorks的異地協同設計,提出利用Windows消息捕捉機制來實現系統協同模型。介紹了如何利用鉤子函數實現對操作信息的提取,以及主拉端維護模型一致性的方法,同時討論了操作信息捕捉、信息處理、模型生成等系統應用的關鍵技術。最后對該系統的優點與不足進行了簡要的說明。
作者: 侯曉林*顏濤*李婕*寧紀翠*彭作珍 來源: 萬方數據
關鍵字: SolidWorks 協同設計 操作信息 捕捉
近年來,企業中普遍采用三維CAD行設計,特別是中端CAD系統SolidWorks在企業中的大量應用,極大地提高了企業的創新能力。但企業仍然面臨著如何充分利用企業的人力資源,提高設計效率,從而縮短產品開發周期的問題。對于異地協同設計一系統的實現最直接的思想是將三維模型直接傳給處在異地的計算機,但這種方法由于傳輸數據量太大,在實時交互方面總不盡人意,為此采用基于Windows消息機制實現協同的方法,并在此基礎上結合SolidWorks的特點,實現SolidWorks的異地協同。
1系統構架
1.1系統實現思想
SolidWorks是一套具有特征的變量式實體模型機械設計軟件,它具有Windows界面,是真正基于Windows開發的軟件。Windows是一種面向對象的體系結構,W indows環境和應用程序都是通過消息來交互的。所謂消息,就是指Windows發出的一個通知,告訴應用程序某個事情發生了。應用程序要實現的功能由消息來觸發,并靠對消息的響應和處理來完成閉。
Windows系統提供了一組功能強大的被稱作鉤子的API函數,利用這組函數可以輕松地截獲系統的各種消息。使用者可以用在系統注冊鉤子函數的方法來截獲發往本地SolidWorks的消息,實現對操作信息的判斷和識別。因此,本文提出系統的實現思想:利用Windows消息機制,通過截獲驅動本地SolidWorks的操作信息,并將其進行格式化,通過網絡傳遞到其他參與協同的成員,其他成員在接收到信息后,經解析驅動異地的SolidWorks作出相應的反應,其效果就如同在本地對SolidWorks中的模型進行操作一樣。因為在網絡中傳遞的是格式化后的操作信息,而不是模型數據,網絡的傳輸量變得很小,從而達到實時的目的。該系統由客戶端和服務器端兩大部分組成,其協作模型如圖1所示。
1.2客戶端
客戶端是用戶實現異地SolidWorks互操作的主要模塊,它又分為主控客戶端和被控客戶端。客戶端主要是由以下幾部分組成:(1)操作信息捕捉;(2)信息處理;(3)網絡通信;(4)模型生成。其中主控客戶端實現對系統模型的維護。
1.3服務器端
對系統的控制主要在服務器端完成。服務器端主要實現用戶角色管理、用戶發言權控制、共享沖突消解功能。用戶角色管理主要是實現對用戶權限的管理,防止非法用戶的登錄。對于用戶發言權控制,本文采用基于令牌和集中控制相結合的用戶發言權控制模式,當需要發言的協同用戶提出請求,在當前發言者主動釋放令牌之后,即可獲得發言權,同時管理員在服務器端可以直接中斷當前發言者的發言權,并將發一言權授予另一個協同用戶。共享沖突消解主要是通過對主控用戶加鎖的機制減少沖突的產生。
2關鍵技術
該系統的關鍵部分是對SolidWorks有用操作信息的捕捉、處理以及模型的重生成、維護部分。
2.1操作信息的捕捉、處理技術
2.1.1信息捕捉
操作信息的捕捉是通過鉤子函數來實現的。在Windows操作系統中,是一種能在事件(消息、鼠標點擊、鍵盤響應等)到達應用程序前中途截獲事件的機制,它可以通過修改、丟棄等手段來對事件起作用。Windows系統提供了API函數Set Windows HookEx()實現鉤子的安裝,并通過UnhookWindowsHookEx() 函數實現鉤子的釋放。Windows有2種鉤子,一種是特定線程鉤子,一種是全局系統鉤子。特定線程鉤子只是監視指定的線程,而全局系統鉤子則可以監視系統中所有的線程。全局系統鉤子因為要對整個系統所有線程進行監視,會嚴重降低系統性能。為提高系統的響應速度,本系統采用特定線程鉤子。
對于一般操作信息,只需要捕捉鼠標、鍵盤以及菜單發出的WM_COMMAND消息。對一些特定的窗口,比如繪圖區,則需要設置窗口過程鉤子監視所有從系統消息隊列發往該窗口的消息。因此,設置WH_MOUSE HOOK監視輸入到消息隊列中的鼠標消息,設置WH_KEYBOARD HOOK監視輸人到消息隊列中的鍵盤消息,二者主要是實現操作在異地CAD系統的復現。因為WMCOM_MAND消息有2種類型:一種是通過SendMessage發送的;一種是由PeekMessage或PostMessage發送的。前者是需要系統返回值的,后者是不需要的。對于前者,采用WH_ CALLWNDYROCHOOK來捕捉,后者通過WH_GETMESSAGEHOOK來捕捉。利用WM_COMMAND消息主要是對用戶操作進行識別,比如,用戶點擊"文件"菜單,就可以通過WM_COMMAND消息判斷出用戶是在點擊"文件"菜單。在判斷出用戶的操作,在異地的CAD會根據WH_MOUSE捕捉到的鼠標信息移動鼠標到"文件"菜單,然后向主窗口發送WM_COMMAND消息,系統就會產生鼠標單擊"文件"菜單的事件。
2.1.2信息處理
信息處理主要是格式化和解析捕捉到的操作信息,本系統采用XML語言對操作信息進行格式化。
例如:用戶ABC在機器111.111.111.5上點擊了某個菜單,產生消息WM_COMMAND,對其進行格式化后為:
為了保證信息的安全,可以對傳輸信息進行加密。為保證系統的實時性,不采用經服務器轉發的辦法,格式化后的信息向所有的被控客戶端發送。
2.2模型的重生成
異地機在收到發送過來的信息并解析后,并不能直接傳送給本地CAD系統。因為Windows消息都是由各窗口接受的,而各窗口是由句柄(Handle)來標識的,不同機器上的CAD系統,Windows分配給其各窗口的句柄是不同的,因此要對窗口的標題進行識別,從而保證窗口的惟一性。在Windows系統中,應用程序的窗口是按Z Order順序在Desktop窗口(桌面窗口)上放置(Z軸是垂直顯示器向外的假想軸),因此可以對當前所有的窗口標題進行查找,找到相符的窗口后,就可以得到它的句柄,然后將解析的消息與窗口的句柄組合,發往CAD系統,從而驅動CAD系統做出與本地CAD系統一致的動作,實現模型的重生成以及操作的再現。
2.3模型的維護
為了提高系統的實時性,減少傳輸模型數據的次數,將模型的維護放在主控客戶端實現。在被控客戶端出現模型無法生成或由于各種原因生成模型出現延遲時,我們采用對主控客戶端模型進行復制的辦法維持一致性。首先,被控客戶端向主控客戶端發送請求,主控客戶端在接收到請求后,向被控客戶端發送一份標準的模型,該模型是由SolidWorks標準格式記錄的。客戶端在收到該模型數據后將其重生成,從而維持模型的一致。
3系統的實現
根據本文介紹的系統框架,在SolidWorks2005上用VC++2005開發了異地協同設計系統,成功實現了SolidWork、的異地協同設計。圖2為本地機上生成的模型,圖3為異地機在接收本地機的操作信息,并對其進行處理后重生成的模型。從圖中可以看出二者的模型保持了高度的一致性。圖4為客戶端在用戶獲得發言權后開始協同時的界面。圖5是服務器端的界面,服務器端可以自動生成系統日志,以便于發生問題時分析問題產生的原因。目前該系統在lOM帶寬的網絡上運行正常。
4結束語.
本文所介紹的系統具有實時、快速、簡便的特點,很適合于使用SolidWorks的企業進行協同設計,可極大地利用企業的人力資源,解決一些企業資源分散的問題。但該系統的實現需要對Windows消息機制比較熟悉,以保證將有用的操作信息都捕捉到,而且捕捉到的消息向異地系統的轉換也是一個復雜的過程。此外在協同設計中共享沖突的消解本系統沒有過多涉及,也是該系統今后需要完善的地方。
相關標簽搜索:SolidWorks異地協同設計系統的實現 SolidWorks培訓課程 SolidWorks設計教程 SolidWorks視頻教程 SolidWorks軟件下載 SolidWorks在建筑室內設計工業設計的應用 SolidWorks基礎知識 SolidWorks代做 Fluent、CFX流體分析 HFSS電磁分析 Ansys培訓 Abaqus培訓 Autoform培訓