電火花線切割實現(xiàn)切割漢字技術解析
怎樣在線切割機床上實現(xiàn)自動編程切割漢字的技術呢?線切割師傅談:只需標識字形的邊界輪廓,因此將其轉(zhuǎn)化為二值圖象即可。將字形輪廓轉(zhuǎn)化為二值圖象,也就是將其轉(zhuǎn)化為一個用矩陣表示的象素點圖象,矩陣中的每一位都是二進制數(shù),當該位為1時表示字符的筆劃經(jīng)過此位,該位為0時表示字符的筆劃不經(jīng)過此位。因為只要分辨出某點為0還是1,因此每個點只要用一位二進制數(shù)表示即可,這樣1個字節(jié)就可以表示8個象素點,但為方便敘述本文采用以1個字節(jié)表示1個點來進行說明。
要將字形輪廓轉(zhuǎn)化為二值圖象,首先根據(jù)需要(如字體、尺寸大小、縱橫比、是否旋轉(zhuǎn)、變形等)在屏幕上繪制出所要切割字符的字形輪廓;然后對圖形進行掃描,將有筆劃通過的點(對應于與字符顏色相同象素的位)的值置為1,而其它的點則置為0,掃描完畢后便將字形輪廓轉(zhuǎn)化為二值圖象了。
生成二值圖象后還需對圖象進行適當?shù)男薷?,以滿足線切割加工的需要。對圖象進行編輯處理,可用一個小方塊代替一個放大了的象素,通過建立網(wǎng)格編輯區(qū),每一網(wǎng)格小方塊都是一個放大了的象素,這樣可對每個象素進行編輯處理,控制鼠標在相應的網(wǎng)格眼內(nèi)填入字符或背景顏色,同時填入字符顏色所對應的位置為1,填入背景顏色所對應的位置為0。
4 切割指令的生成
將漢字的字形輪廓轉(zhuǎn)化為二值圖象且編輯處理后,為生成切割指令須用直線或圓弧對其進行描述,由于漢字字形較適合用直線來對其進行描述,因此采用直線段來實現(xiàn)對漢字字形的描述。
由于線切割機所能切割的圖形具有一定的特殊性(即需能以一筆畫完),因此只需采用某種算法對圖進行一次遍歷便可得到加工軌跡。
要對圖象進行遍歷,首先需確定搜索策略。由于能被切割的圖形具有特殊性,采用改進了的深度優(yōu)先搜索方法來對圖象進行遍歷。主要思想為:先確定圖象的起始點,然后沿逆時針方向在該點周圍尋找下一點,找到后沿著這兩點確定的方向繼續(xù)搜索,直至將該方向上的點搜索完畢,然后回溯,以回溯得到的點為基礎重復以上搜索,直至所有點都被搜索過,在搜索過程中將經(jīng)過的點的值從1置為0,同時記錄所經(jīng)過的直線。
下面介紹一下所要用到的主要數(shù)據(jù)結(jié)構。
記錄直線所用結(jié)構為TLineRecord,它用來記錄每段直線的起點和終點坐標,其定義如下:
TLineRecord=record
StartPoint, EndPoint: TPoint; //直線起始點,終止點
end;
PLineRecord=^TLineRecord;
其中StartPoint, EndPoint分別為直線的起點和終點。
圖象采用二維數(shù)組進行表示,首先按照行、列從小到大的順序找到圖象的起始點,然后再采用逆時針方向來搜索下一點。搜索方向的定義為:
SearchDirection:array[0..7,0..1] ofinterger=((1,0),(1,-1),(0,-1),(-1,-1),(-1,0),(-1,1),(0,1),(1,1));
遍歷算法如下:
(1)掃描圖象尋找起始點,將其坐標記為(k,1);用FirstPointX、FirstPointY記錄第一點橫、縱坐標的值;
(2)初始化記錄直線的指針,建立記錄直線的鏈表;將起始點的k,1值作為直線起點和終點的橫、縱坐標,將該直線加入到直線紀錄的鏈表中去;
(3)以第一點為基準點沿逆時針方向?qū)ふ蚁乱稽c,如果搜索到值為1的點則記搜索方向為i,該點的橫、縱坐標記為(k,1),將記錄直線的終點橫、縱坐標設置為k,1;
(4)置是否搜索完畢標志SearchCompleted為False;
(5)如果SearchCompleted不為True則重復作6-13步;
(6)置SearchCompleted為True;
(7)置是否同一條線標志SameLine為True;
(8)如果SameLine為True則重復作9-12步;
(9)置SameLine為False;
(10)沿i方向進行搜索,即k:=k+SearchDirection [i][0];1:=1+SearchDirection[i][1];
(11)如果點(k,1)為1,則置SameLine為True;將直線的終點坐標設置為(k,1);將點(k,1)的值設置為0;
(12)如果點(k,1)為0,則置SameLine為False;
(13)以點(k,1)為基準點沿逆時針方向?qū)ふ蚁乱稽c,如果搜索到值為1的點,則記搜索方向為i;在直線記錄列表中增加一條新的直線,k,1值作為直線起點的橫、縱坐標;將搜索到的點的橫、縱坐標記為(k,1),將直線終點的橫、縱坐標設置為(k,1);置Searhcompleted為False,置SameLine為True;將點(k,1)的值設置為0;
(14)進行圖形封閉化處理,在直線記錄列表中增加一條直線,將k,1值作為直線起點的橫、縱坐標,F(xiàn)irstPointX、FirstPointY作為直線終點的橫、縱坐標值。
這樣當遍歷完成后,遍歷的軌跡就保存在直線記錄列表中了,也就是說已實現(xiàn)將漢字的字形輪廓用直線段進行描述了。需指出的是,由于漢字字形本身或者編輯處理的原因,在進行圖象遍歷的過程中,可能存在一些不和諧的點,使遍歷不能完成(如存在斷點、尖點及多余點的情況),需在遍歷之前運用圖象處理的技術將這些點補足或者剔除掉,以使遍歷能順利完成,有關這方面的算法不再贅述。
至此要實現(xiàn)切割漢字就只剩下如何生成切割指令的問題了。由于已將漢字的字形輪廓用直線進行描述,且這些直線還首尾相接組成一個封閉輪廓,要生成線切割機的切割指令,只需按切割指令的要求將這些直線進行轉(zhuǎn)換即可。
本文經(jīng)由快走絲,中走絲,線切割機床、電火花線切割,
來源:蘇州中航長風數(shù)控科技有限公司機床分公司