AutoCAD环境下作业拷贝检测系统的实现与应用

2013-07-05 01:06王继东赵瑞斌
滁州学院学报 2013年2期
关键词:序列号拷贝绘图

王继东,赵瑞斌

随着教育改革的不断深化,大多数本科院校都逐步转型为应用型高校。应用型本科高校的培养目标是培养具备较强实践动手能力的应用型人才,而实践动手能力的培养需要科学合理的实践教学体系[1]。实验类课程是实践教学体系的重要组成部分,目前,计算机绘图已成为工科类本科学生应该掌握的基本技能之一[2]。AutoCAD是常用的工程绘图软件之一,其不但具有强大的二维、三维制图功能而且还提供了多种二次开发方式,大多数高校工程类绘图课程都使用它作为主要的绘图工具进行讲解[3]。因此,开展AutoCAD环境下的计算机绘图实验教学研究对于提高教学质量培养应用型人才具有一定的意义和价值。

在教学过程中,AutoCAD绘图实验课程既存在一般实验教学的不足,也具有自身独特的问题。首先,实验教学管理不完善,主要体现在实验室管理制度不健全、不能严格地执行管理制度、没有较为有效地监控措施等多个方面。其次,实验项目与理论内容不能有机融合。一方面,实验与理论的知识点相互独立,不能紧密互补;另一方面,实验课程与理论课程的时间安排不合理,造成内容上的脱节。最后,监管学生的力度不够。由于计算机上机人数相对较多且计算机绘图作业容易拷贝,导致实验教师无法同时顾及所有学生,部分学生仅仅通过拷贝他人作业来应付实验任务。为了解决AutoCAD绘图实验课程中存在的问题,已有文献给出了一些值得借鉴的教学改革措施和手段[4-7],本文在广大教育工作者研究成果的基础上,针对AutoCAD环境下学生互相拷贝作业的问题提出了更加完善的解决方法,并把该方法应用到实际的实验教学中,取得了一定的教学效果。

1 加密的作业拷贝检测系统的设计与实现

AutoCAD绘图实验中所有学生的项目任务相同,少数学生可能会使用网络或U盘进行互相拷贝。由于AutoCAD一般要求精确绘制,每个学生最终正确完成的实验作业一模一样,因此辅导教师很难判断作业是否为拷贝而得。为了杜绝学生拷贝作业的行为,本文利用ActiveX Automation技术和 VBA(Visual Basic for Applications)语言实现了作业拷贝检测功能,并通过DDL(Dynamic Link Library)技术对VBA代码进行了封装加密[8]。

1.1 拷贝检测系统的设计原理

检测AutoCAD绘图作业是否拷贝的方法一般包括:文件属性检测法、图元信息比较法和微机硬件信息记录法。文件属性检测法主要是比较文件的大小和创建时间,该方法简单但精确性较差;图元信息比较法根据文件中的图元信息(如图元的位置、错误处等)进行检测,但如果拷贝后对图元进行稍微的修改就很难判断了;微机硬件信息记录法是通过记录计算机中硬件的唯一标识符来进行拷贝检测,其缺点是某些硬件标识符容易被修改。使用IP地址和网卡MAC地址作为硬件标识符,在 Windows 2000以上版本的操作系统环境下,学生就可以很容易地修改IP和MAC地址值,从而使作业拷贝检测系统不能发挥作用。

本文同样使用微机硬件信息记录法进行拷贝检测,但为了避免学生随意修改硬件标识符,这里不再使用IP和MAC地址,而是通过记录每块主板中不能改变的序列号进行比较检测。

1.2 拷贝检测系统的实现

检测系统主要包括主板序列号记录和判断两个模块,在AutoCAD软件中使用VBA语言实现了具体的代码。

1.2.1 记录模块

学生完成AutoCAD绘图作业的过程中,必然要进行若干次“保存”操作,此操作会触发Auto-CAD文档的BeginSave事件。记录模块的主要VBA代码就编写在BeginSave事件过程中,每次保存时记录模块就会把计算机主板序列号以文本对象的形式写入AutoCAD文档中并加以隐藏,如果文档是在同一台计算机上完成,则多次记录的主板序列号就是相同的,反之则不同。假如有学生从其他学生的计算机中拷贝作业,那么教师在检查时只需再保存一次,AutoCAD文档中就会记录不同的主板序列号。记录模块的主要代码如下:

1.2.2 判断模块

判断模块的主要功能是查找和比较Auto-CAD文档中被记录模块写入的所有主板序列号文本对象,如果发现有两个以上的主板序列号,则就认为文档是拷贝而得的。主要代码如下:

为了方便教师的作业检查,把判断模块的VBA代码编写在BeginDocClose事件中,当教师检查完作业情况后关闭AutoCAD文档时就会触发BeginDocClose事件进行拷贝判断。在判断过程中,如果发现有不同的主板序列号存在,则弹出“作业可能为拷贝而得!”对话框。

1.3 拷贝检测系统的加密

使用VBA进行AutoCAD二次开发简单实用,文献[4]和[7]都给出了具体的作业拷贝检测方法,但这些方法都没有对VBA代码进行加密,学生可以通过修改VBA代码轻易逃避拷贝检测。VBA本身没有提供加密功能,本文使用DDL封装技术对VBA代码进行加密,具体步骤如下:

(1)在VB开发环境中引用AutoCAD库,并创建ActiveX DLL;

(2)在VB代码区中创建子过程BeginSave()和BeginDocClose(),将AutoCAD文档中的记录和判断模块代码分别拷贝到这两个子过程中;

(3)把函数GetBaseBoardSN()也拷贝到VB代码区中,并将代码区所有“ThisDrawing”全部替换为“acadDoc”;

(4)选择VB文件菜单中的“生成DLL”选项,创建DLL文件;

(5)在AutoCAD文档的VBA开发环境中,通过工具菜单中的“引用”选项引用步骤4生成的DLL文件;

(6)在AutoCAD文档的BeginSave和Begin-DocClose事件过程中调用DLL文件中的Begin-Save()和 BeginDocClose(),如图1所示,DLLClass是DLL文件中定义的类名,Detection是DLLClass类型的变量,DLLClass中的方法Be-ginSave和BeginDocClose分别完成主板序列号的记录和判断功能。

图1 DLL文件的引用

通过以上六个步骤可以把VBA中的事件代码封装到DLL文件中,杜绝了学生对关键代码的修改,实现了作业拷贝检测系统的加密。

2 实验教学中作业拷贝检测系统的应用

在AutoCAD 2008程序环境下,使用VBA语言实现了作业拷贝检测系统,图2是检测系统运行时的截图。

图2 作业拷贝检测系统

为了验证该检测系统的有效性和实用性,在本科网络工程专业《工程制图》实验课中进行了一次比较性试验。首先把班级的学生随机平分为A组和B组,要求两组学生在给定的AutoCAD文档中完成绘图作业,A组学生被告知“AutoCAD文档中内嵌了拷贝检测系统,如果发现拷贝他人作业,则本次实验成绩为不及格”,B组学生仅被告知“如果发现拷贝他人作业,则本次实验成绩为不及格”,试验结果如表1所示。

表1 比较性试验结果

从表1中可以看出,使用作业拷贝检测系统能够很好地减少学生的抄袭行为,提高了学生的实验成绩。当然,绘图实验课中也不能完全依赖作业拷贝检测系统,辅导教师还要从实验项目设置、教学方法、教学手段等多个方面入手才能全面提高实验课教学质量。

3 结束语

为了解决AutoCAD环境下学生互相拷贝绘图作业的问题,实现了一个加密的基于VBA的作业拷贝检测系统,并在实际的实验教学中进行了比较性的试验。实践应用表明,该测试系统能够较好地改进AutoCAD课程实验方法,提高学生实验成绩。

[1] 许志才,诸立新.应用型本科院校实践教学体系的构建与探索[J].滁州学院学报,2010,12(3):80-84.

[2] 焦永和.我国高校图学教育的现状与发展[J].工程图学学报,2004(4):125-127.

[3] 张瑞雪,贾慧献.AutoCAD在建筑绘图中的教学研究与应用[J].煤炭技术,2012,31(2):266-267.

[4] 李迎春,申 晨.基于VB的AutoCAD绘图作业拷贝智能检测系统[J].计算机应用,2008,27(11):39-41.

[5] 许秀云,张玉梁.依托现代信息技术 提高实验教学质量[J].实验室研究与探索,2011,30(5):130-139.

[6] 朱湘萍,熊文元,包本刚.高校实验教学质量保障及监控的探讨[J].实验技术与管理,2011,28(6):185-187.

[7] 谢来福,王志萍.防止CAD作业拷贝方法的研究[J].机械管理开发,2012(1):183-184.

[8] 张 帆.AutoCAD VBA二次开发教程[M].北京:清华大学出版社,2006.

猜你喜欢
序列号拷贝绘图
来自河流的你
“禾下乘凉图”绘图人
一种离线电子钱包交易的双向容错控制方法
关于《国家税务总局 工业和信息化部关于加强车辆配置序列号管理有关事项的公告》的解读
垂涎三尺
recALL
唐氏综合征是因为“拷贝”走样了
文化拷贝应该如何“拷”
Surfer和ArcView结合在气象绘图中的应用
PP助手教你辨别翻新iPhone5小白不再中招