王繼東,趙瑞斌
隨著教育改革的不斷深化,大多數(shù)本科院校都逐步轉(zhuǎn)型為應(yīng)用型高校。應(yīng)用型本科高校的培養(yǎng)目標(biāo)是培養(yǎng)具備較強實踐動手能力的應(yīng)用型人才,而實踐動手能力的培養(yǎng)需要科學(xué)合理的實踐教學(xué)體系[1]。實驗類課程是實踐教學(xué)體系的重要組成部分,目前,計算機繪圖已成為工科類本科學(xué)生應(yīng)該掌握的基本技能之一[2]。AutoCAD是常用的工程繪圖軟件之一,其不但具有強大的二維、三維制圖功能而且還提供了多種二次開發(fā)方式,大多數(shù)高校工程類繪圖課程都使用它作為主要的繪圖工具進行講解[3]。因此,開展AutoCAD環(huán)境下的計算機繪圖實驗教學(xué)研究對于提高教學(xué)質(zhì)量培養(yǎng)應(yīng)用型人才具有一定的意義和價值。
在教學(xué)過程中,AutoCAD繪圖實驗課程既存在一般實驗教學(xué)的不足,也具有自身獨特的問題。首先,實驗教學(xué)管理不完善,主要體現(xiàn)在實驗室管理制度不健全、不能嚴格地執(zhí)行管理制度、沒有較為有效地監(jiān)控措施等多個方面。其次,實驗項目與理論內(nèi)容不能有機融合。一方面,實驗與理論的知識點相互獨立,不能緊密互補;另一方面,實驗課程與理論課程的時間安排不合理,造成內(nèi)容上的脫節(jié)。最后,監(jiān)管學(xué)生的力度不夠。由于計算機上機人數(shù)相對較多且計算機繪圖作業(yè)容易拷貝,導(dǎo)致實驗教師無法同時顧及所有學(xué)生,部分學(xué)生僅僅通過拷貝他人作業(yè)來應(yīng)付實驗任務(wù)。為了解決AutoCAD繪圖實驗課程中存在的問題,已有文獻給出了一些值得借鑒的教學(xué)改革措施和手段[4-7],本文在廣大教育工作者研究成果的基礎(chǔ)上,針對AutoCAD環(huán)境下學(xué)生互相拷貝作業(yè)的問題提出了更加完善的解決方法,并把該方法應(yīng)用到實際的實驗教學(xué)中,取得了一定的教學(xué)效果。
AutoCAD繪圖實驗中所有學(xué)生的項目任務(wù)相同,少數(shù)學(xué)生可能會使用網(wǎng)絡(luò)或U盤進行互相拷貝。由于AutoCAD一般要求精確繪制,每個學(xué)生最終正確完成的實驗作業(yè)一模一樣,因此輔導(dǎo)教師很難判斷作業(yè)是否為拷貝而得。為了杜絕學(xué)生拷貝作業(yè)的行為,本文利用ActiveX Automation技術(shù)和 VBA(Visual Basic for Applications)語言實現(xiàn)了作業(yè)拷貝檢測功能,并通過DDL(Dynamic Link Library)技術(shù)對VBA代碼進行了封裝加密[8]。
檢測AutoCAD繪圖作業(yè)是否拷貝的方法一般包括:文件屬性檢測法、圖元信息比較法和微機硬件信息記錄法。文件屬性檢測法主要是比較文件的大小和創(chuàng)建時間,該方法簡單但精確性較差;圖元信息比較法根據(jù)文件中的圖元信息(如圖元的位置、錯誤處等)進行檢測,但如果拷貝后對圖元進行稍微的修改就很難判斷了;微機硬件信息記錄法是通過記錄計算機中硬件的唯一標(biāo)識符來進行拷貝檢測,其缺點是某些硬件標(biāo)識符容易被修改。使用IP地址和網(wǎng)卡MAC地址作為硬件標(biāo)識符,在 Windows 2000以上版本的操作系統(tǒng)環(huán)境下,學(xué)生就可以很容易地修改IP和MAC地址值,從而使作業(yè)拷貝檢測系統(tǒng)不能發(fā)揮作用。
本文同樣使用微機硬件信息記錄法進行拷貝檢測,但為了避免學(xué)生隨意修改硬件標(biāo)識符,這里不再使用IP和MAC地址,而是通過記錄每塊主板中不能改變的序列號進行比較檢測。
檢測系統(tǒng)主要包括主板序列號記錄和判斷兩個模塊,在AutoCAD軟件中使用VBA語言實現(xiàn)了具體的代碼。
1.2.1 記錄模塊
學(xué)生完成AutoCAD繪圖作業(yè)的過程中,必然要進行若干次“保存”操作,此操作會觸發(fā)Auto-CAD文檔的BeginSave事件。記錄模塊的主要VBA代碼就編寫在BeginSave事件過程中,每次保存時記錄模塊就會把計算機主板序列號以文本對象的形式寫入AutoCAD文檔中并加以隱藏,如果文檔是在同一臺計算機上完成,則多次記錄的主板序列號就是相同的,反之則不同。假如有學(xué)生從其他學(xué)生的計算機中拷貝作業(yè),那么教師在檢查時只需再保存一次,AutoCAD文檔中就會記錄不同的主板序列號。記錄模塊的主要代碼如下:
1.2.2 判斷模塊
判斷模塊的主要功能是查找和比較Auto-CAD文檔中被記錄模塊寫入的所有主板序列號文本對象,如果發(fā)現(xiàn)有兩個以上的主板序列號,則就認為文檔是拷貝而得的。主要代碼如下:
為了方便教師的作業(yè)檢查,把判斷模塊的VBA代碼編寫在BeginDocClose事件中,當(dāng)教師檢查完作業(yè)情況后關(guān)閉AutoCAD文檔時就會觸發(fā)BeginDocClose事件進行拷貝判斷。在判斷過程中,如果發(fā)現(xiàn)有不同的主板序列號存在,則彈出“作業(yè)可能為拷貝而得!”對話框。
使用VBA進行AutoCAD二次開發(fā)簡單實用,文獻[4]和[7]都給出了具體的作業(yè)拷貝檢測方法,但這些方法都沒有對VBA代碼進行加密,學(xué)生可以通過修改VBA代碼輕易逃避拷貝檢測。VBA本身沒有提供加密功能,本文使用DDL封裝技術(shù)對VBA代碼進行加密,具體步驟如下:
(1)在VB開發(fā)環(huán)境中引用AutoCAD庫,并創(chuàng)建ActiveX DLL;
(2)在VB代碼區(qū)中創(chuàng)建子過程BeginSave()和BeginDocClose(),將AutoCAD文檔中的記錄和判斷模塊代碼分別拷貝到這兩個子過程中;
(3)把函數(shù)GetBaseBoardSN()也拷貝到VB代碼區(qū)中,并將代碼區(qū)所有“ThisDrawing”全部替換為“acadDoc”;
(4)選擇VB文件菜單中的“生成DLL”選項,創(chuàng)建DLL文件;
(5)在AutoCAD文檔的VBA開發(fā)環(huán)境中,通過工具菜單中的“引用”選項引用步驟4生成的DLL文件;
(6)在AutoCAD文檔的BeginSave和Begin-DocClose事件過程中調(diào)用DLL文件中的Begin-Save()和 BeginDocClose(),如圖1所示,DLLClass是DLL文件中定義的類名,Detection是DLLClass類型的變量,DLLClass中的方法Be-ginSave和BeginDocClose分別完成主板序列號的記錄和判斷功能。
圖1 DLL文件的引用
通過以上六個步驟可以把VBA中的事件代碼封裝到DLL文件中,杜絕了學(xué)生對關(guān)鍵代碼的修改,實現(xiàn)了作業(yè)拷貝檢測系統(tǒng)的加密。
在AutoCAD 2008程序環(huán)境下,使用VBA語言實現(xiàn)了作業(yè)拷貝檢測系統(tǒng),圖2是檢測系統(tǒng)運行時的截圖。
圖2 作業(yè)拷貝檢測系統(tǒng)
為了驗證該檢測系統(tǒng)的有效性和實用性,在本科網(wǎng)絡(luò)工程專業(yè)《工程制圖》實驗課中進行了一次比較性試驗。首先把班級的學(xué)生隨機平分為A組和B組,要求兩組學(xué)生在給定的AutoCAD文檔中完成繪圖作業(yè),A組學(xué)生被告知“AutoCAD文檔中內(nèi)嵌了拷貝檢測系統(tǒng),如果發(fā)現(xiàn)拷貝他人作業(yè),則本次實驗成績?yōu)椴患案瘛保珺組學(xué)生僅被告知“如果發(fā)現(xiàn)拷貝他人作業(yè),則本次實驗成績?yōu)椴患案瘛保囼灲Y(jié)果如表1所示。
表1 比較性試驗結(jié)果
從表1中可以看出,使用作業(yè)拷貝檢測系統(tǒng)能夠很好地減少學(xué)生的抄襲行為,提高了學(xué)生的實驗成績。當(dāng)然,繪圖實驗課中也不能完全依賴作業(yè)拷貝檢測系統(tǒng),輔導(dǎo)教師還要從實驗項目設(shè)置、教學(xué)方法、教學(xué)手段等多個方面入手才能全面提高實驗課教學(xué)質(zhì)量。
為了解決AutoCAD環(huán)境下學(xué)生互相拷貝繪圖作業(yè)的問題,實現(xiàn)了一個加密的基于VBA的作業(yè)拷貝檢測系統(tǒng),并在實際的實驗教學(xué)中進行了比較性的試驗。實踐應(yīng)用表明,該測試系統(tǒng)能夠較好地改進AutoCAD課程實驗方法,提高學(xué)生實驗成績。
[1] 許志才,諸立新.應(yīng)用型本科院校實踐教學(xué)體系的構(gòu)建與探索[J].滁州學(xué)院學(xué)報,2010,12(3):80-84.
[2] 焦永和.我國高校圖學(xué)教育的現(xiàn)狀與發(fā)展[J].工程圖學(xué)學(xué)報,2004(4):125-127.
[3] 張瑞雪,賈慧獻.AutoCAD在建筑繪圖中的教學(xué)研究與應(yīng)用[J].煤炭技術(shù),2012,31(2):266-267.
[4] 李迎春,申 晨.基于VB的AutoCAD繪圖作業(yè)拷貝智能檢測系統(tǒng)[J].計算機應(yīng)用,2008,27(11):39-41.
[5] 許秀云,張玉梁.依托現(xiàn)代信息技術(shù) 提高實驗教學(xué)質(zhì)量[J].實驗室研究與探索,2011,30(5):130-139.
[6] 朱湘萍,熊文元,包本剛.高校實驗教學(xué)質(zhì)量保障及監(jiān)控的探討[J].實驗技術(shù)與管理,2011,28(6):185-187.
[7] 謝來福,王志萍.防止CAD作業(yè)拷貝方法的研究[J].機械管理開發(fā),2012(1):183-184.
[8] 張 帆.AutoCAD VBA二次開發(fā)教程[M].北京:清華大學(xué)出版社,2006.