基于VBA技术的AutoCAD智能自动评分系统的设计
2023-03-11聊城大学机械与汽车工程学院廖瑞雪李凯龙许亚辉赵传哲徐立鹏
◇聊城大学机械与汽车工程学院 廖瑞雪 李凯龙 许亚辉 赵传哲 徐立鹏
自动评分技术就是借助于计算机来辅助人工评分的一项技术。自动评分系统可以帮助阅卷者快速、准确、公平公正的评分,以达到减少人力、物力、财力的目的,因此需要设计一种可自动评分的系统,以便减轻教师的工作量。该系统以VBA为开发语言,通过对AutoCAD的二次开发,具备读取标准图纸,输入评分标准,自动评卷,统计成绩以及成绩管理功能。
1 引言
工程图学是工科类学生必修的一门技术基础课,在工程图学的考试中一直沿用教师手动阅卷、成绩统计,在这种考察模式下教师需要付出大量的时间和精力[1]。目前,在针对填空、选择、判断等客观题型的CAD系统中,自动测评技术已经相当完善,如判断题只需将考生所选的内容与正确答案进行匹配对比即可,填空中文字录入内容的评判则可通过在一定字数范围内从某一个字开始进行精准对比来实现[2]。相对于客观题型的考试,AutoCAD课程的测评的目的则在于考查学生操作的熟练程度正确性和熟练性,所以题目类型多是图形的绘制、尺寸的标注、图形的编辑、块类型的标注等主观题[3]。在AutoCAD自动评分系统中对于图元数据的提取和属性的表达以及自动测评功能是该系统开发的核心所在。
2 智能评分的实现原理
VBA是Visual Basic for Application的简写,它是基于Visual Basic发展而来的,它寄生于AutoCAD模块中,它不但继承了VB的开发机制,而且还具有与VB相似的语言结构[4]。AutoCADVBA提供了访问AutoCAD文档的接口,在AutoCAD绘图过程中,每一个图元的绘制和格式的设置均作为不同对象的属性保存在文档中。在自动评分系统中只需要读取每个学生的图纸中图元的属性与标准图对比即可得出成绩,并利用Excel打印出成绩。
3 智能评分的实现过程
3.1 标准图纸的输入设计
利用选择集对标准图纸的读取,读取方式采用手动选取需要评分的图元并输入对应的分数,见图1。
图1 建立标准图形数据库流程图
(1)选择集的初始化与建立。删除图纸中可能包含的选择集,以免影响新的选择集的建立。初始化程序如下:
(2)圆属性的读取实例。判断选择的图元是否为圆,然后再读取标准图纸中圆的圆心坐标、半径、线宽、颜色等参数,并把得到的属性参数进行储存,程序如下:
其它图元属性的读取也是可以借鉴以上图元属性读取的方法进行,最主要的是知道每个图元在VBA中的表示方法才能判断是否为所需要的图元,再根据每个图元的特点提取图元属性,并储存起来,以便于需要评分的图纸进行对比,图元的表示方法主要参考VBA中对象模型库[5],见图2。
图2 CAD对象模型库
(3)标准图纸分数的输入。标准图纸的分数的输入,应该在图元属性的读取后进行,同一个图元的分数与属性的读取应该在同一个过程中进行,以便一一对应。对于图元分数的输入首先需要判断图元再输入分数,分输入的输入可以采用InputBox函数进行。以直线图元的分数输入为例进行说明:
ElseIf StrComp(objEntity(0).EntityName,"AcDbline",vbTextCompare)=0 Then
ScoreL(a)=InputBox("请输入该图元的分数(默认每个1分):","标准评分标准的输入:",1)
a=a+1
3.2 评分图纸的评分系统设计
(1)新图纸的打开与关闭。在对需要评分的图纸评分时,首先需要打开新的图纸,并在评完分数后关闭该图纸。以下以打开“学生A”的图纸为例,程序如下:
在该程序中首先打开新图纸,新图纸应该放在指定的文件夹中,才能被读取,打开新图纸后调用评分程序进行评分并得出最后分数储存在数组Score(m)中,以便在最后以Excel输出是读取该图纸的分数。在得到该图纸分后,图纸需要关闭,以减少电脑的卡顿,关闭程序为ThisDrawing.Close,但值得注意的是关闭程序一定在另一个新图纸打开前,否则可能造成下一个新图纸的评分为0或者出现错误导致程序无法进行。
(2)对新图纸进行遍历评分。第一步对新图纸进行遍历取出该图纸中的全部图元[6],第二步对所有图元按类进行筛选,如在所有图元中筛选出圆这个图元,在对所有圆与前边标准图中所取出的标准圆进行对比评分,最终得出分数,见图3。
图3 CAD图形判别流程图
(3)对圆图元进行评分。在上一步中对图纸进行遍历时,已经提取了图纸中所有图元的属性,所以在该过程中只需要调出圆图元的属性并与标准图对比即可,调取该图元的圆心、半径径等进行评分。
在该程序中首先判断哪个图元是圆,使用程序StrComp(objEntity.EntityName,"AcDbcircle",vbTextCompare)=0,再用ptCen=objEntity.Center提取圆的圆心坐标,并储存在数组ptCen中,用radius=objEntity.radius提取圆的半径,并储存在radius中,下面对该图元属性与标准图元属性进行对比得出正误,对比程序为ptCen(0)=P1(d) And ptCen(1)=P2(d) And radius=r(d),再利用IF函数进行对比,值得注意的是,在对比过程中一定保证数组的对应,判断出正误后,对分数进行读取ScoreC(s),与原分数相加,得出最后分数。
(4)对其他图元进行评分。在对其他图元的评分时,需要知道该图元的一些属性,该属性也可以在VBA中的本地窗口中看到,便于对图元属性的确定和程序的调试。
3.3 成绩的输出设计
(1)学生信息的采集。本系统最终分数以Excel表格的形式输出。该系统需要学生把做好的图纸放在指定的文件夹中,读取“2021级车辆工程3班”该文件下的所有后缀为.dwg的图纸,并读取图纸名称,程序如下:
该程序把读取的图纸名称放在输入j2(j1)中以遍输入excel中。
(2)分数的输入。把前期得到的学生分数,以Excel形式输出,见图4。
图4 评分结果对比
4 结束语
本课题设计一种AutoCAD的自动评分系统,并利用VBA和EXCEL进行设计,可进行标准图纸的读取,分数的输入,自动测评,输出分数等功能。本课题在对评分系统的设计中,对于标准图纸的输入采用单个图元的手动输入和单个图元的分数输入,这样可以做到根据图元的重要性进行评分,得到的评分结果更加具代表性。同时,已经对评分系统的开发过程进行了完整设计。该系统已经具备了基础图纸的完整评分,有一定的实用价值,在一定程度上弥补了国内高校对工程图自动评分系统需求的不足。