APP下载

基于CAXA的机械课程自动组卷软件

2012-03-21代美泉

图学学报 2012年3期
关键词:试题库机械类二次开发

代美泉

(西安职业技术学院机电工程系,陕西 西安 710032)

在各种计算机辅助教学软件的研制中,机械类试题自动组卷软件的开发一直是一个非常活跃的课题,近年来,众多学者围绕自动组卷、智能排版、试卷分析等关键技术以及图形试题处理、CAD软件二次开发等问题作了大量创新性的研究工作[1-2]。机械制图、机械设计、工程力学等机械类课程,属于作者所在学院工科专业所必需掌握的专业基础课,课堂授课及能力考核以图形对象为主,规范正规的图形是必须保证的重要内容,因此从90年代末,我院就开始以CAXA为辅助设计软件对学生进行授课。CAXA电子图板是北京北航海尔软件有限公司推出的功能齐全的通用计算机辅助设计CAD软件,由于具有易学易用的优点,它已经在机械、电子、航空、航天、汽车、船舶、建筑及工程建设等领域得到广泛的应用,并在众多院校的机械类课程授课中成为主要的辅助设计CAD软件。CAXA为用户提供了二次开发接口,允许用户根据自己的需求,通过在电子图板开发平台基础之上进行二次开发,扩充电子图板的功能,实现用户化、专业化。国内许多大学以及科研院所也针对该技术做了一些研究和应用,并取得了一定成果。浙江大学张宏基于CAXA电子图版开发了企业定制的EBCAM系统,实现了企业信息集成[3]。沈阳航空工业学院邢艳秋基于CAXA电子图板开发了功能完善的CAPP系统,实现了工艺文件的定制与自动生成[4]。CAXA软件在我院教学与科研中的广泛应用大大提高了我院的办学质量,也为基于CAXA进行计算机辅助软件开发奠定了基础。

目前国内院校的机械类课程试卷命题主要采用手动组卷、半自动组卷、自动组卷3种方式,应用的组卷软件大多以位图文件为处理对象,题库维护是一个相对繁杂的过程,对考教分离的施行带来了不便[5]。为解决我院目前机械类试题组卷方式的不足,作者对开发机械类试题组卷软件的关键技术进行了充分调研和深入分析,提出了一个以VC++6.0为开发工具,CAXA电子图板2005为图形平台,SQLServer2000为数据库服务平台,建立一个界面友好、使用简便、与CAXA电子图板无缝集成的机械类试题自动组卷软件研究方案,从而进一步提高我院机械类试题组卷水平,推动我院计算机辅助教学CAI的进步和发展。

1 软件模块设计

软件设计中一个非常重要的步骤就是设计软件的结构,合理的软件结构应该是分块的结构,即软件应该分解为可以单独命名的且可以访问的模块,所有这些模块集成到一起可以满足软件的需求。论文根据软件需求从功能上把自动组卷软件划分为试题库管理、试卷生成与管理两大模块,并对各模块进行了细分,如图1所示。

1)试题库管理功能模块

试题库管理包含的主要功能子模块有:用户登录子模块、试题库设置子模块、试题库管理子模块。用户登录子模块为授权用户提供登录入口,增强系统安全性;试题库设置子模块实现试题库的初始化;试题库管理子模块主要实现试题添加、修改、删除等维护功能,及CAXA矢量图的存储、浏览与即时修改等处理。

2)试卷生成与管理功能模块

试卷生成与管理包含的主要功能子模块有:试卷生成子模块、试卷管理子模块、智能排版子模块。试卷生成子模块主要实现手动组卷与自动组卷功能;试卷管理模块主要实现试卷的保存与删除等管理功能;智能排版模块可以在CAXA绘图软件中规范迅速的实现机械类图形试题的自动排版。

图1 软件功能模块

2 CAXA二次开发技术分析

CAXA电子图板的二次开发是在电子图板开发平台基础之上,使用C/C++作为二次开发语言,编译、连接和调试均在Visual C++6.0环境下进行,添加菜单、对话框、快捷键等资源均使用可视化编辑。

2.1 CAXA二次开发步骤

用户进行CAXA二次开发可以参考如下步骤[6]:

1)安装、设置二次开发平台;

2)创建用户二次开发程序;

3)添加应用程序实现代码;

4)应用程序的编译、连接;

5)应用程序的运行、调试。

2.2 数据库访问与管理

项目采用ADO技术来访问和管理数据库,实现自动组卷软件应用程序对SQL Server试题库的访问。VC中使用预编译指令#import来告诉编译器将此指令中指定的动态链接库引入工程中,在工程文件stdafx.h中加入如下语句:

#pragma warning (disable: 4146)

#import "c:program filescommon filessystemadomsado15.dll" no_namespace

rename("EOF","adoEOF")

rename("LockTypeEnum","newLockTypeEnum") ename("DataTypeEnum","newDataTypeEnum") ename("FieldAttributeEnum","newFieldAttributeE num")

rename("EditModeEnum","newEditModeEnum") ename("RecordStatusEnum","newRecordStatusEn um")

rename("ParameterDirectionEnum","newParameter DirectionEnum")

2.3 CAXA矢量图处理

如何实现CAXA电子图版与VC++6.0客户程序及SQLServer2000数据库的无缝集成,是软件开发的主要难点之一。作者在充分研究应用CAXA二次开发接口API函数的基础上,快捷方便地实现了试题库管理过程中CAXA矢量图的存储、浏览与即时修改。

1)CAXA二次开发的数据类型与API函数

用户在进行二次开发过程中,可以使用所有C/C++支持的数据类型,如int、UINT、double、char、BOOL等,或使用MFC提供的类如CString、Cdialog等来声明对象及指针、引用,也可以使用 EB_POINT、EB_BOX、EB_NODE、EB_SELECT来定义点、矩形边界、结点、选择集,以便于进一步结合API函数高效的处理CAXA电子图板中所有的图形元素。

用户可使用的库函数包括:Windows API函数、OPENGL库函数、VC++提供的MFC类、运行库函数以及CAXA电子图板提供的应用程序接口API函数。其中电子图板提供的API函数大大简化了用户编程,使用户简单的调用一个或几个函数就可以实现图形预显、图形编辑、数据管理及系统操作等复杂的二次开发问题。

2)CAXA矢量图的存储

将试题添加到试题库时,CAXA图形文件的存储有两种方式:其一是数据库存储,即图形文件直接存储到SQLServer数据库;其二是目录存储,先将文件复制到指定目录,然后把目录加文件名作为该文件的访问路径并存储到SQLServer数据库。考虑到方式二易于实现且可以大大降低SQLServer数据库的数据存储量,因此自动组卷软件所涉及的CAXA矢量图均存储到指定目录,编程上通过调用Windows API函数CopyFile来完成,代码如下:

// m_editFilepath:CAXA文件当前存储路径;strFileCopyPath:CAXA文件目标存储路径+文件名

CopyFile(m_editFilepath, strFileCopyPath,FALSE);

3)CAXA矢量图的浏览与即时修改

首先在试题库管理窗体中添加一个Picture控件,并设置控件ID为IDC_PICTURE_PREVIEW。CAXA矢量图的浏览与即时修改需调用电子图板提供的API函数,主要调用参考如下:

CRect m_prevRect; // 添加成员变量,用于获得预显框的大小

EB_SELECT select; // 添加成员变量,用于选择集的操作

// 得到预显框大小并将其转化为客户区大小

GetDlgItem(IDC_PICTURE_PREVIEW)->Ge tWindowRect(&m_prevRect);

ScreenToClient(&m_prevRect);

// 初始化用户窗口预显图形

ebInitDlgPrev(m_hWnd);

// 结束用户窗口预显图形

ebDestroyDlgPrev(m_hWnd)

// 将预显框设定为所需的逻辑大小

EB_BOX box={-100.0,-100.0,100.0,100.0};

ebSetDlgPrevWin(box,m_prevRect,&dc,this);

//打开选择集

ebFilePartOpen(select,m_editFilepath);

//绘制选择集

if (ebIfSelectEmpty(select)) {return;}

ebDrawSelect(select,NORMAL);

//选择集发送到CAXA电子图版客户区

ebInsSelectToSys (select,False);

//释放不再使用的选择集

ebFreeSelect(select);

3 自动组卷与智能排版

高质量的自动组卷软件应该能根据教师输入的命题决策信息,科学高效的自动生成试卷。试卷生成算法是自动组卷软件的关键和核心,算法的优劣直接决定了所生成试卷的质量。如何设计一个算法来抽出满足要求的试题, 是一个非常复杂的问题,需要综合考虑对各个知识点所要求掌握的层次、题型、题量以及章节分布等因素。同时,机械类试题自动组卷软件以图形为主,与一般试卷生成软件在排版输出方面有着较大的差异。如何在技术上实现自动排版,使其既合理又迅速,并符合人工出卷情况,是一个值得研究的问题。

3.1 自动组卷算法

自动组卷在本质上就是利用一定的组卷算法,自动地从题库中抽取合适的试题,使它们组成的试卷既能满足教学要求又能满足用户要求。如何设计一个算法从题库中既快又好地抽出一组最符合考方要求的试题,涉及到一个全局寻优和收敛速度快慢的问题[7]。目前有关组卷算法的实现,主要有随机选取法、回朔试探法、遗传算法等3种方法以及围绕这3种方法的改进。采用哪种方法主要由试卷的相关特征决定,例如题型、题量是由算法自动控制还是组卷时指定;每类题型的分数是由算法确定还是组卷时指定;试卷难度是仅控制各试题的平均难度还是要进一步控制各试题难度的分布等。

组卷算法是自动组卷软件开发的关键技术之一,为了保证组卷效率以及试卷的质量,作者在对历次机械制图试卷进行统计分析的基础上,根据制图课程试卷的特点建立了多方案自动组卷策略,每个组卷方案都由专家组对题型比例做了约束与设置,抽题过程中主要基于选定的自动组卷方案,从题库中找到和这些指标值相符合的试题即可,同时也要考虑到试题的平均难度和抽取次数等问题,这样才能组成一份合格的试卷。

简单的说,本文组卷算法的原理就是:首先将用户要求量化成组卷约束;然后基于组卷约束建立相应的自动组卷方案;最后根据选定的自动组卷方案在题库中找到满足要求的试题即完成了组卷。自动组卷算法流程如图2所示,为实现随机组题必须保证所随机产生的数据不能重复,在进行算法设计及实现的过程中,我们巧妙利用多维数组与随机数进行各题型试题的抽取,并利用试卷的总体难度系数对所组试题进行优化,取得了较好的效率与质量效果。

图2 自动组卷算法流程图

3.2 智能排版技术

以机械制图为主的机械类试题自动组卷与一般试题库在排版输出方面有着很大的差异[8]。一般试题库以文字、公式和表达式为主,情况单一,在Microsoft Word软件中借助回车符,很容易实现自动排版功能;机械制图试题库则以图形为主,而且要求图形规范,绘图软件中对图形的位置处理多以坐标形式定位,与前者相比,其分页及版面布置要复杂得多。试卷内容确定以后,如何在技术上实现自动排版,使其既合理又迅速,并符合人工出卷情况,是一个值得研究的问题。作者在深入分析智能排版约束及科学创建试卷模板的基础上,如图3所示提出了一种简便、高效、实用的算法,使智能排版技术在机械类试题自动组卷软件中得以实现。

图3 智能排版算法流程图

4 结 论

基于CAXA的机械类试题自动组卷软件是作者经过近两年的研究而最后得到的成果,本文则是对软件开发中的关键技术问题的集中阐述。结论如下:

1)论文深入探讨了CACA程序二次开发技术,快捷方便的实现了试题库管理过程中CAXA矢量图的存储、浏览与即时修改,解决了现有试题库管理软件在处理图形试题时不能即时维护的难题;

2)基于多方案自动组卷策略设计了高效的自动组卷算法,巧妙利用多维数组与随机数实现了试题的随机抽取,并利用试卷的总体难度系数对所组试题进行优化,取得了较好的组题质量;

3)基于创建的制图试卷模板设计了一种简便、高效、实用的算法,使智能排版技术在机械类试题自动组卷软件中得以实现。

[1]王 妍, 关丽杰, 郭 凤. 工程制图试题库管理系统的开发[J]. 佳木斯大学学报, 2008, 26(3):340-342.

[2]薛爱文. 工程制图练习和试题库系统的研究与开发[D].太原: 太原理工大学, 2006.

[3]张 宏. 基于CAXA电子图版的EBCAM系统研究与开发[D]. 杭州: 浙江大学, 2006.

[4]邢艳秋. 基于CAXA电子图板下CAPP的二次开发[D].沈阳: 沈阳航空工业学院, 2007.

[5]唐晓初, 张 旭, 张 燕. 工程制图试题库建设使用发展历程[J]. 化工高等教育, 2003, 32(5): 70-71.

[6]代美泉. 机械类课程试题自动组卷软件开发研究[D].西安: 西安理工大学, 2010.

[7]成典勤. 试卷提交与生成系统的设计与实现[D]. 西安: 西安理工大学, 2006.

[8]严绍进. 画法几何及机械制图试题库系统的开发[J].机械管理开发, 2005, 85(4): 40-42.

猜你喜欢

试题库机械类二次开发
石油炼制技术课程试题库建设的探讨
基于OBE理念的机械类专业实践教学改革
西门子Operate高级编程的旋转坐标系二次开发
浅谈Mastercam后处理器的二次开发
职业院校旅游专业试题库建设的实践与反思
——以导游资格笔试科目为例
C语言考试题库在教学中的重要性研究
西门子Easy Screen对倒棱机床界面二次开发
高校试题库建设新探讨
机械类固定资产投资项目节能报告定量分析计算若干问题探讨
机械类“先进制造技术”课程教学研究