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