引 言
目前 许多cad软件厂商都注重于完善面向专业领域的具体设计的功能.以机械cad软件为例,autocad,pro/e等注重于相应的二维、三维的设计,有些还集成了cae、cam等,但是对于 网络 协同的支持方面还比较薄弱.本文介绍的网络cad系统利用网络技术,通过分布协同的工作方式使产品设计合理有序,设计资源广泛共享,从而保证cad产品的低成本和短周期。
1 系统的构成
系统采用客户机/服务器模式(c/s模式).将各个用户的cad部件设计以cad文件(后缀为dwg)的形式传输到网络平台上,在网络平台上将各个cad文件组合到一起,然后把组合后的cad文件传输给各个用户,从而实现cad设计的整体共享.图1为系统设计示意图。

图1
2 数据传输部分的实现
在网络平台与用户机上都建立起两种程序,即服务器程序和客户机程序.在cad文件的传输过程中,利用w indows sockets实现了文件在服务器和客户端之间的无差错快速传输,使用了mfc的csocket类来实现两台机器之间的文件传输过程。
2.1 服务器程序的实现过程
图2是服务器程序的示意图。

图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是整体组合的实现过程。

图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的操作中采用命令行的方式,为将来实现整体组合的半自动化、自动化奠定了基础。