system: [SYSTEM]

user: 3. 系统功能的设计与实现 3.1. 图纸报审 按照上述需求功能分析，图纸报审功能就是设计人员在图纸设计完成后，提出图纸审核请求，在请求中输入相关信息。本系统提供两种方式报审： 1) 在图纸管理系统界面下报审 从已经设计完成的图纸中选择报审，需要报审人员输入图纸的相关信息。在Visual C++2010下，基于MFC开发输入界面。图纸报审界面对话框包括图纸信息组、报审信息组，图纸审核信息组。其中图纸信息组应包括：产品编号、产品型号、图纸编号、图纸名称等；报审信息组应包括：报审人、报审部门、报审日期信息；图纸审核信息组应包括：设计和设计日期、工艺和工艺日期等，如图2所示。 2) 在AutoCAD图纸设计界面下报审 在图纸设计完成后，在设计平台上报审是一个很自然和效率高的方式。本文基于AutoCAD平台，利用ObjectARX技术 [ 4 ] 对其进行二次开发，将系统功能嵌入AutoCAD中实现图纸报审。主要包括两方面工作： a) 菜单设计。利用CUIX功能对AutoCAD进行菜单设计，设计效果见图3。 b) 图纸报审。系统首先对当前图纸标题栏框进行信息搜寻，自动提取图纸相关信息，例如产品型号、图纸图号、图纸名称、设计者、设计时间等；将自动提取的信息自动写入如图2所示图纸报审对话框中。 报审确认后，系统首先要检查是否有相同图纸已经在审核。如果存在，提示不能重复报审。图纸检查实际上是打开数据库服务器中图纸报审信息表，以图纸图号作为关键字检索，如果存在，则不能重复报审。此外，图纸报审后，由于各种原因，存在撤销(或者删除)报审、修改报审等需求，同样也需要打开数据库服务器中图纸审核状态信息表，以图纸图号作为关键字检索，如果图纸还未进入审核状态，即还未发生任何审核操作，可以执行报审撤销、修改操作，否则禁止操作，需要将图纸审核状态退回到修改状态。 如果是一个新的图纸报审，则将图纸的报审信息作为一条数据库记录添加到图纸报审表中，将图纸属性信息和审核需求信息作为一条数据库记录添加到图纸审核状态表中；审核的图纸以文件形式上传到 图2. 上传图纸报审对话框 图3. AutoCAD图纸审核菜单 文件服务器中图纸审核区中。整个图纸报审流程如图4所示。 3.2. 图纸审核 经过之前的上传报审图纸流程，相应的图纸信息和对应的图纸状态已经写入数据库，其中图纸状态在没有经过任何审核流程的时候，状态皆为“待审”。经过系统管理员给相关用户分配权限之后，用户就可以利用自己的账号登录图纸管理系统，在系统里会有通知消息，这样审核人员就会知道自己需要完成的审核任务。通过将图纸文件和CAD程序关联，审核人员可以将图纸从文件服务器中直接下载，进入CAD环境中进行图纸的审核。审核的过程中，审核人员可以给出审核意见，以及是否通过该审核环节。不通过则将图纸返回给设计人员，设计人员可以本系统了解图纸的审核状态，及时修改。如果通过，则继续剩下的审核过程，如果图纸审核批准完成，则该图纸从文件服务器转移进入到图纸库中，相应的图纸信息也写入数据库，这样图纸就可以用于指导生产实践。图纸审核流程见图5。 本系统按照设计、制图、工艺、标准化、审核、批准的审核流程完成图纸的审核功能。在拥有审核权限的用户登录系统之后，系统会通过检索报审信息数据库，将对应的审核任务提醒显示出来，这样该用户就知道他需要完成的审核内容。逐级审核，如果特定审核环节出现问题，则不能进行下一个审核任务。在用户下载报审图纸之后，系统会自动将图纸的信息提取到图纸审核处理对话框，且用户在自己的权限范围内进行操作，其他属性全部以不可编辑状态显示。如图6图纸审核处理对话框中显示的状态。 在图纸完成设计制图之后，能够进行工艺审核的用户可以对图纸进行审核，填写审核意见，并且判定该图纸是否通过工艺审核。在完成该审核环节之后，数据库中的报审图纸信息的工艺属性状态就会从 图4. 上传报审图纸流程图 图5. 图纸审核流程图 图6. 图纸审核处理对话框 “待审”变为“已审”。如果图纸不能通过工艺审核，则报审图纸信息的工艺属性状态仍为“待审”且审核意见属性会出现相应的内容。这样，设计人员在登录系统之后就会看到自己负责的图纸的审核状态，及时进行修改。直到所有的审核任务全部完成，则表明该图纸符合各个环节的要求，可以入库存档，进而用于直到生产。 3.3. 图纸报审系统实现的关键技术 1) 报审信息数据服务 采用SQL server数据库服务实现报审信息和图纸信息共享。本系统在工程图纸管理数据库系统中建立如下两个数据表： a) 报审信息表 报审信息表建立图纸编号、图纸名称、产品编号、产品型号、报审人、报审时间、报审部门和各审核流程节点人员、审核完成时间、审核意见等24个字段，图纸编号作为关键字段。 b) 待审图纸信息表 待审图纸信息表记录图纸编号、图纸名称、图纸用途、产品型号、和已完成的各审核流程节点人员、审核完成的时间、图纸预览缩略图等24个字段，图纸编号作为关键字段。 利用ADO (ActiveX Data Object)技术连接数据库服务器，通过SQL语言完成数据库的访问，存取数据。ADO的三个核心对象Connection对象表示了到数据库的连接，它管理应用程序和数据库之间的通信。 Recordset和Command对象都有一个ActiveConnection属性，该属性用来引用Connection对象。Command对象被用来处理重复执行的查询，或处理需要检查在存储过程调用中的输出或返回参数的值的查询。Recordset对象被用来获取数据。Recordset对象存放查询的结果，这些结果由数据的行(称为记录)和列(称为字段)组成。每一列都存放在Recordset的Fields集合中的一个Field对象中。本方法将访问数据库的程序进行封装，其中包括连接数据库智能指针对象m_pConnection，存放返回字符集的记录集对m_pRecordset，数据库初始化方法，执行查询并返回记录集方法，SQL语句执行方法等。 2) 审核图纸文件服务 报审确认后，上传待审图纸保存在文件服务器的图纸审核区，图纸以图号作为文件名存储。前面已介绍，采用Serv-U V7.3作为文件服务程序，使用UploadFile (ServerIp， LocalFile， RemoteFile)和GetFile (RName， SName)方法实现图纸文件的上传、下载。 客户端应用程序采用FTP (File Transfer Protocol)协议实现与文件服务器的连接和文件的传输，目前实现FTP协议，有两种方式，WinInet API和Winsock，WinInet效率更高，而且简单。本系统采用MFC的WinInet API实现FTP连接。 要连接到FTP服务器，需要两个步骤，首先必须创建一个CInternetSession对象，用类CInternetSession创建并初始化一个或几个Internet会话(session)，并描述与代理服务器的连接，然后利用CInternetsession对象获取CFtpConnection对象。MFC中的类CFtpConnection管理与Internet服务器的连接，并直接操作服务器上的目录和文件。 3) 基于ObjectArx开发工具实现工程图纸信息提取 AutoCAD图是一个存储在数据库中的对象的集合，这些对象不仅表示图形实体，而且也表示内部结构，如符号表和词典等，ObjectARX提供了访问这种数据库的功能。利用ObjectARX这种功能，将AutoCAD图形数据库中的字符串数据信息检索出来 [ 5 ] 。通过使用AcDbTable类，建立块表对象，构建read Table (pt 1，pt 2)函数(其中形参pt 1， pt2均为AcGePoint3d类型)，返回值为给定位置的字符串。因此，可以获得图纸的标题栏及明细表信息。