基于網絡環境的CAD系統的設計與實現
未知
目前許多CAD軟件廠商都注重于完善面向專業領域的具體設計的功能.以機械CAD軟件為例,AutoCAD,Pro/E等注重于相應的二維、三維的設計,有些還集成了CAE、CAM等,但是對于網絡協同的支持方面還比較薄弱.本文介紹的網絡CAD系統利用網絡技術,通過分布協同的工作方式使產品設計合理有序,設計資源廣泛共享,從而保證CAD產品的低成本和短周期。
1 系統的構成
系統采用客戶機/服務器模式(C/S模式).將各個用戶的CAD部件設計以CAD文件(后綴為dwg)的形式傳輸到網絡平臺上,在網絡平臺上將各個CAD文件組合到一起,然后把組合后的CAD文件傳輸給各個用戶,從而實現CAD設計的整體共享.圖1為系統設計示意圖。
2 數據傳輸部分的實現
在網絡平臺與用戶機上都建立起兩種程序,即服務器程序和客戶機程序.在CAD文件的傳輸過程中,利用W indows Sockets實現了文件在服務器和客戶端之間的無差錯快速傳輸,使用了MFC的CSocket類來實現兩臺機器之間的文件傳輸過程。
2.1 服務器程序的實現過程
圖2是服務器程序的示意圖。
1)創建套接字.首先調用CSocket的構造函數來創建一個CSocket的對象;其次調用Create()函數來創建底層套接字.Create函數的調用方法如下:
BOOL C reate(U INT nSocketPort=0,int nSocket Type=SOCK_STREAM,
long lEvent=FD_READ|FD_WR ITE|FD_OOB|FD_ACCEPT|FD_CONNECT|FD_CLOSE,
LPCTSTR lp szSocketAddress=NULL);
2)套接字的監聽與連接.對于服務器應用程序,為了能夠獲得客戶機的請求,必須創建一個專門的服務器套接字來監聽是否有連接請求.在創建了套接字對象后,可以調用listen()成員函數來監聽是否有連接請求。
當服務器監聽到客戶機的請求時,服務器可以調用Accept()成員函數來接受客戶機的請求,建立服務器與客戶機之間的連接。
virtual BOOL Accep t(CA syncSocket&rConnectedSocket,SOCKADDR* lpSockAddr=NULL,
int* lpSockAddrLen=NULL);
3)接收數據.當服務器和客戶機之間建立起連接后,數據就可以通過套接字傳遞了.服務器接收數據時使用CAsynSocket類的Receive()成員函數:
virtual int Receive(void* lpBuf,int nB ufLen,int nFlags=0);
4)關閉套接字.數據傳輸結束后,在關閉應用程序之前,調用Close()成員函數來釋放與套接字有關的系統資源。
2.2 客戶端程序的實現過程
1)創建套接字.首先調用CSocket的構造函數來創建一個CSocket的對象;其次調用Create()函數來創建底層套接字,為該套接字綁定一個地址。
2)套接字請求連接.客戶機應用程序的流式套接字使用Connect()成員函數向服務器發出連接請求.如果被服務器接受,則建立連接;如果連接請求得不到響應,那么連接就無法建立.如果在發出連接請求后服務器接受了請求,即調用函數成功,它將返回TRUE。
3)發送數據.服務器和客戶機之間建立連接后,數據就可以通過套接字傳遞了.發送數據使用CA synSocket類的Send()成員函數:
virtual int Send(const vo id*lpBuf,int nB ufLen,int nFlags=0);
4)關閉套接字.數據傳輸結束后,應該調用Close()成員函數來釋放與套接字有關的系統資源。
3 整體組合部分的實現
網絡平臺接收到用戶傳輸過來的CAD部件文件,利用AutoCAD軟件加載ObjectARX程序,實現CAD文件的整體組合.AutoCAD提供的二次開發平臺ObjectARX,是以VC++為開發語言,采用了面向對象的編程方法,并支持MFC編程的強有力的開發工具[7].利用ObjectARX編程可以將面向對象的程序設計方法引入到CAD軟件的二次開發中,實現網絡平臺上CAD部件的整體組合.圖3是整體組合的實現過程。
1)在AutoCAD中加載ObjectARX.在AutoCAD2000環境下打開一個空文件,在菜單中選擇“Tools”,在其中選擇“Load Applications.”項,彈出“Load/Unload Applications”對話框,在文件的選擇框中選中ARX文件,單擊Load按鈕,在左下角的屬性會出現載入成功的ARX文件路徑名。
2)打開CAD文件.在命令提示行中鍵入open1命令,選擇一個后綴名為dwg的文件,將其打開并顯示在AutoCAD 2000的窗口中。
3)CAD文件的插入.在命令提示行中鍵入insert1命令,選擇并打開待插入的dwg文件,通過調用acdbCurDwg()函數完成插入操作.在插入的過程中,通過調用AcGe庫中的AcGeMatrix3d::kIdentity,來自動獲取插入圖形的坐標.只要將原來的圖形坐標調整好,就能在組合的圖形中保持原位置的不變.。
4)CAD文件的保存.以圖形的方式完成兩個CAD文件的整體組合后,需要對文件進行保存.在命令提示行中鍵入save命令,將文件保存為dwg的格式,以便以后的修改.然后通過打印的命令,將文件輸出為dwg的格式。
5)文件的共享.整體組合后的CAD圖形可以在網上發布,并用IE瀏覽器打開.也可以利用文件傳輸程序,將組合后的dwg文件傳輸到各個用戶來實現文件的共享.在對AutoCAD的操作過程中采用命令行的方式,不調用AutoCAD的菜單命令,使操作更加簡單,也更容易實現集成化的功能。
4結 論
本文針對CAD系統的特點和要求,提出了網絡傳輸的設計模式,通過W indows Sockets傳輸文件,并使用ObjectARX編程,對文件進行整體組合.并通過文件傳輸的功能,實現組合后CAD文件的整體共享.目前在AutoCAD的操作中采用命令行的方式,為將來實現整體組合的半自動化、自動化奠定了基礎。