王克虎 李曉輝 賈 杰 謝少朋 朗坤飛
(河北省地礦局國土資源勘查中心 河北石探機(jī)械制造有限責(zé)任公司 河北石家莊 050081)
近年來,板式家具在現(xiàn)代家具中占有越來越大的比例,板材連接是制造板式家具關(guān)鍵環(huán)節(jié),板式家具[1-2]主要是通過三合一連接件將多個木板連接起來組合而成,三合一連接件是由預(yù)埋件、螺桿、偏心輪三部分組成。三合一連接件的使用步驟為:首先需要將膨脹預(yù)埋件安裝至板材的預(yù)留孔內(nèi),其次將螺桿安裝在預(yù)埋件上并擰緊,同時將板二的孔對準(zhǔn)螺桿并垂直放于板一上,最后把偏心輪擰緊從而拉緊螺桿,三合一連接件安裝完成。如圖1所示為三合一連接件安裝示意圖。
圖1 三合一連接件安裝工藝圖
本文章提出了一種基于板材設(shè)計圖紙, 在AutoCAD中進(jìn)行二次開發(fā),實現(xiàn)定位出板材上特定直徑的預(yù)留孔的坐標(biāo)信息的功能。對于孔的定位,我國現(xiàn)在主要采用圖像視覺定位技術(shù),但是由于在定位板材預(yù)留孔的過程中,板材表面上會存在木渣等雜物較多以及在板材表面會有其他的工藝孔,都會對這種技術(shù)在圖像識別和提取過程中造成干擾。所以圖像視覺識別技術(shù)不能應(yīng)用于膨脹預(yù)埋件填充工作。本文介紹一種基于 CAD二次開發(fā)進(jìn)行識別不同直徑的預(yù)埋中心孔方法。
AutoCAD作為一個通用的繪圖軟件而設(shè)計開發(fā)的,但是各行各業(yè)都有自己的繪圖規(guī)則,很多單位也有自己的企業(yè)標(biāo)準(zhǔn),因此 AutoCAD不可能滿足任意的具體應(yīng)用要求[3]。值得慶幸的是AutoCAD的開發(fā)手段很多,如C++、Java、Vbsic、AutoLisp等。AutoLisp語言是AutoCAD專用的二次開發(fā)的工具[4]。AutoLisp語言是嵌于AutoCAD內(nèi)部的計算機(jī)語言,它是 AutoCAD開放式體系結(jié)構(gòu)的具體表現(xiàn)[5],已經(jīng)被完整地集成到 AutoCAD中,為開發(fā)者提供了嶄新的、增強(qiáng)的集成開發(fā)環(huán)境,這樣開發(fā)者可以直接使用AutoCAD中的對象和反應(yīng)器,進(jìn)行更底層的開發(fā)[6]。本文就使用了AutoLisp語言調(diào)用了AutoCAD中篩選指定半徑的圓圖元功能、指定誤差范圍和自動計算圓圖元的圓心坐標(biāo)指令,進(jìn)行功能擴(kuò)展。AutoLisp 的程序文件代碼的儲存方式是通過ASCII文本文件的格式進(jìn)行儲存的,它的文件擴(kuò)展名為“*.MNL”或 “*.LSP”,所以,AutoLisp 的編寫適應(yīng)性很強(qiáng),可以對任何一種文本進(jìn)行編寫和導(dǎo)出,例如,Excel等文本[7]。
本次基于 AutoCAD二次開發(fā)的定位板材預(yù)留孔篩選、識別過程主要步驟包括:前期準(zhǔn)備、設(shè)置Excel表格屬性、設(shè)置篩選條件、將數(shù)據(jù)以 Excel格式輸出。如圖2所示為二次開發(fā)步驟框圖。
圖2 該功能二次開發(fā)步驟框圖
前期準(zhǔn)備包括定義調(diào)用二次開發(fā)程序的指令,以及加載程序。使操作者更加方便地執(zhí)行命令。
(1)定義新命令:
(defun c:tyx ( / *doc *th e i l1 lst pt ss x dxf xbgh 3d2d ayOSMode)
(2)加載Visual LISP擴(kuò)展功能:
(vl-load-com)
(defun xbgh (lst / a appxls hh lh x initexcel endexcel datacell)
創(chuàng)建、設(shè)置Excel表格屬性,包括設(shè)置工作簿、單元格格式,并設(shè)定使表格格式能適應(yīng)導(dǎo)出的數(shù)據(jù),避免數(shù)據(jù)存儲格式錯誤。
(1)創(chuàng)建Excel程序?qū)ο螅?/p>
(2)調(diào)用 ActiveX方法設(shè)定 Excel程序:newbook(vlax-invoke-methodxlsworkbooks "add")
(3)設(shè)置Excel程序:
(4)釋放Excel程序?qū)ο螅?/p>
(5)設(shè)定Excel單元格返回以lisp數(shù)據(jù)的字符串表示、設(shè)定輸出的各個元素的運(yùn)算結(jié)果構(gòu)成表形式、自動調(diào)整Excel的行列寬高以適應(yīng)文字與數(shù)字。具體程序如下:
(1)設(shè)定AutoCAD系統(tǒng)參數(shù)
重新設(shè)定AutoCAD系統(tǒng)變量osmode數(shù)值,將AutoCAD系統(tǒng)變量osmode設(shè)定為16384,這個附加值有助于開發(fā)人員編寫 AutoCAD 應(yīng)用程序,并將此模式與“繪圖設(shè)置”對話框關(guān)閉的對象捕捉模式區(qū)別開來。設(shè)置此位碼值將關(guān)閉對象捕捉。在該位碼值關(guān)閉時將OSMODE 設(shè)置為其他值可以打開對象捕捉[8-9],并檢索和取得當(dāng)前圖形文件。具體程序段如下:
(1)進(jìn)入二次開發(fā)程序編程工作環(huán)境:如圖 3所示為AutoLisp開發(fā)工具示意圖。本次二次開發(fā)是在visual lisp語言編輯器內(nèi)進(jìn)行程序的編輯和運(yùn)行的。如圖4所示為visual lisp語言編輯器加載程序后示意圖。
(2)加載二次開發(fā)程序:在 AutoCAD主界面,在命令欄中輸入快捷指令進(jìn)行二次開發(fā)程序的加載。如圖5所示為激活并運(yùn)行二次開發(fā)程序示意圖。
(3)點取原點:操作者手動選取板材原點。
(4)選擇對象:操作者按照提示去框選整個板材二維圖即可。
(5)二次核對:在選擇對象完成后,在命令欄里將會有指定直徑的圓圖元數(shù)量提示,并且二維圖中的圓圖元處于虛線狀態(tài),方便操作者觀察與核對。
(6)操作完成:點擊回車即完成整個二次開發(fā)程序的運(yùn)行,最終所需要的圓心坐標(biāo)的相對位置數(shù)據(jù)會以Excel形式直接展示出來。如圖5所示為二次開發(fā)最終生成數(shù)據(jù)示意圖。
圖3 AutoLisp開發(fā)工具示意圖
圖4 visual lisp語言編輯器加載程序后示意圖
圖5 二次開發(fā)最終生成數(shù)據(jù)示意圖
目前,進(jìn)行板材預(yù)埋孔定位來實現(xiàn)膨脹預(yù)埋件的安裝工作都是由人工完成,容易造成視覺疲勞,加工效率低,所以自動安裝預(yù)埋件的瓶頸問題,就是預(yù)埋件孔的自動定位問題。本程序彌補(bǔ)了圖像識別定位技術(shù)的不足,在干擾因素較大的情況下,仍舊能準(zhǔn)確地定位預(yù)留孔的中心位置,并自動計算出中心孔距原點的坐標(biāo)信息,得出的結(jié)果自動導(dǎo)入至Excel表格中,避免人工測量的誤差。該程序除了這些基本功能外,還可以在程序中設(shè)置識別孔的誤差,使程序可以篩選出直徑在誤差范圍內(nèi)的預(yù)留孔,使本次二次開發(fā)的功能更加適應(yīng)工業(yè)現(xiàn)場環(huán)境。本程序運(yùn)行需要的硬件和軟件要求較低:在AutoCAD2013下驗證運(yùn)轉(zhuǎn)正常,該程序也可以在AutoCAD2006簡體中文版及AutoCAD2013以上版本運(yùn)行。AutoCAD2006簡體中文版運(yùn)行系統(tǒng):win7、win8系統(tǒng);其余每個版本運(yùn)行環(huán)境相同,包括:win8以及win10系統(tǒng),適合普遍推廣,操作簡單,識別速度快、識別精度高的優(yōu)點。