◇聊城大學(xué)機(jī)械與汽車(chē)工程學(xué)院 廖瑞雪 李凱龍 許亞輝 趙傳哲 徐立鵬
自動(dòng)評(píng)分技術(shù)就是借助于計(jì)算機(jī)來(lái)輔助人工評(píng)分的一項(xiàng)技術(shù)。自動(dòng)評(píng)分系統(tǒng)可以幫助閱卷者快速、準(zhǔn)確、公平公正的評(píng)分,以達(dá)到減少人力、物力、財(cái)力的目的,因此需要設(shè)計(jì)一種可自動(dòng)評(píng)分的系統(tǒng),以便減輕教師的工作量。該系統(tǒng)以VBA為開(kāi)發(fā)語(yǔ)言,通過(guò)對(duì)AutoCAD的二次開(kāi)發(fā),具備讀取標(biāo)準(zhǔn)圖紙,輸入評(píng)分標(biāo)準(zhǔn),自動(dòng)評(píng)卷,統(tǒng)計(jì)成績(jī)以及成績(jī)管理功能。
工程圖學(xué)是工科類(lèi)學(xué)生必修的一門(mén)技術(shù)基礎(chǔ)課,在工程圖學(xué)的考試中一直沿用教師手動(dòng)閱卷、成績(jī)統(tǒng)計(jì),在這種考察模式下教師需要付出大量的時(shí)間和精力[1]。目前,在針對(duì)填空、選擇、判斷等客觀題型的CAD系統(tǒng)中,自動(dòng)測(cè)評(píng)技術(shù)已經(jīng)相當(dāng)完善,如判斷題只需將考生所選的內(nèi)容與正確答案進(jìn)行匹配對(duì)比即可,填空中文字錄入內(nèi)容的評(píng)判則可通過(guò)在一定字?jǐn)?shù)范圍內(nèi)從某一個(gè)字開(kāi)始進(jìn)行精準(zhǔn)對(duì)比來(lái)實(shí)現(xiàn)[2]。相對(duì)于客觀題型的考試,AutoCAD課程的測(cè)評(píng)的目的則在于考查學(xué)生操作的熟練程度正確性和熟練性,所以題目類(lèi)型多是圖形的繪制、尺寸的標(biāo)注、圖形的編輯、塊類(lèi)型的標(biāo)注等主觀題[3]。在AutoCAD自動(dòng)評(píng)分系統(tǒng)中對(duì)于圖元數(shù)據(jù)的提取和屬性的表達(dá)以及自動(dòng)測(cè)評(píng)功能是該系統(tǒng)開(kāi)發(fā)的核心所在。
VBA是Visual Basic for Application的簡(jiǎn)寫(xiě),它是基于Visual Basic發(fā)展而來(lái)的,它寄生于AutoCAD模塊中,它不但繼承了VB的開(kāi)發(fā)機(jī)制,而且還具有與VB相似的語(yǔ)言結(jié)構(gòu)[4]。AutoCADVBA提供了訪問(wèn)AutoCAD文檔的接口,在AutoCAD繪圖過(guò)程中,每一個(gè)圖元的繪制和格式的設(shè)置均作為不同對(duì)象的屬性保存在文檔中。在自動(dòng)評(píng)分系統(tǒng)中只需要讀取每個(gè)學(xué)生的圖紙中圖元的屬性與標(biāo)準(zhǔn)圖對(duì)比即可得出成績(jī),并利用Excel打印出成績(jī)。
利用選擇集對(duì)標(biāo)準(zhǔn)圖紙的讀取,讀取方式采用手動(dòng)選取需要評(píng)分的圖元并輸入對(duì)應(yīng)的分?jǐn)?shù),見(jiàn)圖1。
圖1 建立標(biāo)準(zhǔn)圖形數(shù)據(jù)庫(kù)流程圖
(1)選擇集的初始化與建立。刪除圖紙中可能包含的選擇集,以免影響新的選擇集的建立。初始化程序如下:
(2)圓屬性的讀取實(shí)例。判斷選擇的圖元是否為圓,然后再讀取標(biāo)準(zhǔn)圖紙中圓的圓心坐標(biāo)、半徑、線寬、顏色等參數(shù),并把得到的屬性參數(shù)進(jìn)行儲(chǔ)存,程序如下:
其它圖元屬性的讀取也是可以借鑒以上圖元屬性讀取的方法進(jìn)行,最主要的是知道每個(gè)圖元在VBA中的表示方法才能判斷是否為所需要的圖元,再根據(jù)每個(gè)圖元的特點(diǎn)提取圖元屬性,并儲(chǔ)存起來(lái),以便于需要評(píng)分的圖紙進(jìn)行對(duì)比,圖元的表示方法主要參考VBA中對(duì)象模型庫(kù)[5],見(jiàn)圖2。
圖2 CAD對(duì)象模型庫(kù)
(3)標(biāo)準(zhǔn)圖紙分?jǐn)?shù)的輸入。標(biāo)準(zhǔn)圖紙的分?jǐn)?shù)的輸入,應(yīng)該在圖元屬性的讀取后進(jìn)行,同一個(gè)圖元的分?jǐn)?shù)與屬性的讀取應(yīng)該在同一個(gè)過(guò)程中進(jìn)行,以便一一對(duì)應(yīng)。對(duì)于圖元分?jǐn)?shù)的輸入首先需要判斷圖元再輸入分?jǐn)?shù),分輸入的輸入可以采用InputBox函數(shù)進(jìn)行。以直線圖元的分?jǐn)?shù)輸入為例進(jìn)行說(shuō)明:
ElseIf StrComp(objEntity(0).EntityName,"AcDbline",vbTextCompare)=0 Then
ScoreL(a)=InputBox("請(qǐng)輸入該圖元的分?jǐn)?shù)(默認(rèn)每個(gè)1分):","標(biāo)準(zhǔn)評(píng)分標(biāo)準(zhǔn)的輸入:",1)
a=a+1
(1)新圖紙的打開(kāi)與關(guān)閉。在對(duì)需要評(píng)分的圖紙?jiān)u分時(shí),首先需要打開(kāi)新的圖紙,并在評(píng)完分?jǐn)?shù)后關(guān)閉該圖紙。以下以打開(kāi)“學(xué)生A”的圖紙為例,程序如下:
在該程序中首先打開(kāi)新圖紙,新圖紙應(yīng)該放在指定的文件夾中,才能被讀取,打開(kāi)新圖紙后調(diào)用評(píng)分程序進(jìn)行評(píng)分并得出最后分?jǐn)?shù)儲(chǔ)存在數(shù)組Score(m)中,以便在最后以Excel輸出是讀取該圖紙的分?jǐn)?shù)。在得到該圖紙分后,圖紙需要關(guān)閉,以減少電腦的卡頓,關(guān)閉程序?yàn)門(mén)hisDrawing.Close,但值得注意的是關(guān)閉程序一定在另一個(gè)新圖紙打開(kāi)前,否則可能造成下一個(gè)新圖紙的評(píng)分為0或者出現(xiàn)錯(cuò)誤導(dǎo)致程序無(wú)法進(jìn)行。
(2)對(duì)新圖紙進(jìn)行遍歷評(píng)分。第一步對(duì)新圖紙進(jìn)行遍歷取出該圖紙中的全部圖元[6],第二步對(duì)所有圖元按類(lèi)進(jìn)行篩選,如在所有圖元中篩選出圓這個(gè)圖元,在對(duì)所有圓與前邊標(biāo)準(zhǔn)圖中所取出的標(biāo)準(zhǔn)圓進(jìn)行對(duì)比評(píng)分,最終得出分?jǐn)?shù),見(jiàn)圖3。
圖3 CAD圖形判別流程圖
(3)對(duì)圓圖元進(jìn)行評(píng)分。在上一步中對(duì)圖紙進(jìn)行遍歷時(shí),已經(jīng)提取了圖紙中所有圖元的屬性,所以在該過(guò)程中只需要調(diào)出圓圖元的屬性并與標(biāo)準(zhǔn)圖對(duì)比即可,調(diào)取該圖元的圓心、半徑徑等進(jìn)行評(píng)分。
在該程序中首先判斷哪個(gè)圖元是圓,使用程序StrComp(objEntity.EntityName,"AcDbcircle",vbTextCompare)=0,再用ptCen=objEntity.Center提取圓的圓心坐標(biāo),并儲(chǔ)存在數(shù)組ptCen中,用radius=objEntity.radius提取圓的半徑,并儲(chǔ)存在radius中,下面對(duì)該圖元屬性與標(biāo)準(zhǔn)圖元屬性進(jìn)行對(duì)比得出正誤,對(duì)比程序?yàn)閜tCen(0)=P1(d) And ptCen(1)=P2(d) And radius=r(d),再利用IF函數(shù)進(jìn)行對(duì)比,值得注意的是,在對(duì)比過(guò)程中一定保證數(shù)組的對(duì)應(yīng),判斷出正誤后,對(duì)分?jǐn)?shù)進(jìn)行讀取ScoreC(s),與原分?jǐn)?shù)相加,得出最后分?jǐn)?shù)。
(4)對(duì)其他圖元進(jìn)行評(píng)分。在對(duì)其他圖元的評(píng)分時(shí),需要知道該圖元的一些屬性,該屬性也可以在VBA中的本地窗口中看到,便于對(duì)圖元屬性的確定和程序的調(diào)試。
(1)學(xué)生信息的采集。本系統(tǒng)最終分?jǐn)?shù)以Excel表格的形式輸出。該系統(tǒng)需要學(xué)生把做好的圖紙放在指定的文件夾中,讀取“2021級(jí)車(chē)輛工程3班”該文件下的所有后綴為.dwg的圖紙,并讀取圖紙名稱(chēng),程序如下:
該程序把讀取的圖紙名稱(chēng)放在輸入j2(j1)中以遍輸入excel中。
(2)分?jǐn)?shù)的輸入。把前期得到的學(xué)生分?jǐn)?shù),以Excel形式輸出,見(jiàn)圖4。
圖4 評(píng)分結(jié)果對(duì)比
本課題設(shè)計(jì)一種AutoCAD的自動(dòng)評(píng)分系統(tǒng),并利用VBA和EXCEL進(jìn)行設(shè)計(jì),可進(jìn)行標(biāo)準(zhǔn)圖紙的讀取,分?jǐn)?shù)的輸入,自動(dòng)測(cè)評(píng),輸出分?jǐn)?shù)等功能。本課題在對(duì)評(píng)分系統(tǒng)的設(shè)計(jì)中,對(duì)于標(biāo)準(zhǔn)圖紙的輸入采用單個(gè)圖元的手動(dòng)輸入和單個(gè)圖元的分?jǐn)?shù)輸入,這樣可以做到根據(jù)圖元的重要性進(jìn)行評(píng)分,得到的評(píng)分結(jié)果更加具代表性。同時(shí),已經(jīng)對(duì)評(píng)分系統(tǒng)的開(kāi)發(fā)過(guò)程進(jìn)行了完整設(shè)計(jì)。該系統(tǒng)已經(jīng)具備了基礎(chǔ)圖紙的完整評(píng)分,有一定的實(shí)用價(jià)值,在一定程度上彌補(bǔ)了國(guó)內(nèi)高校對(duì)工程圖自動(dòng)評(píng)分系統(tǒng)需求的不足。