劉紀(jì)凱, 趙慶志, 張林華, 張興武, 王宏甲
(山東理工大學(xué)機(jī)械工程學(xué)院,山東 淄博 255049)
斜面矢量漢字CAD/CAM研究與應(yīng)用
劉紀(jì)凱, 趙慶志, 張林華, 張興武, 王宏甲
(山東理工大學(xué)機(jī)械工程學(xué)院,山東 淄博 255049)
提出了一種斜面矢量漢字的雕刻方法。根據(jù)相關(guān)文獻(xiàn)總結(jié)出水平面上漢字雕刻流程,再結(jié)合空間坐標(biāo)旋轉(zhuǎn)矩陣與 C3連續(xù)的空間七次 Bezier擬合曲線得出斜面上漢字雕刻的流程。引入 OpenGL,實(shí)現(xiàn)圖形的任意旋轉(zhuǎn)、縮放、平移,增強(qiáng)人機(jī)交互。實(shí)驗(yàn)結(jié)果表明,該方法編寫(xiě)的軟件界面友好,具有很好的健壯性,生成的數(shù)控代碼在數(shù)控機(jī)床上運(yùn)行穩(wěn)定,達(dá)到了預(yù)期的效果,提高了斜面漢字的加工效率,降低了加工誤差。
數(shù)控代碼;CAD/CAM;斜面漢字雕刻;truetype字體;開(kāi)放式圖形庫(kù)
漢字的數(shù)控雕刻在工業(yè)中應(yīng)用廣泛,國(guó)內(nèi)學(xué)者對(duì)漢字?jǐn)?shù)控雕刻做了許多研究。由文獻(xiàn)[1-4]可知,學(xué)者們研究了漢字雕刻的許多方面,但大多在水平面域,個(gè)別涉及到曲面域,未涉及空間斜面域。在現(xiàn)實(shí)加工中,遇到在斜面上雕刻漢字時(shí),需要將斜面旋轉(zhuǎn)使之平行于水平面,這極大降低了加工效率,增加了加工誤差,對(duì)于大型或異形工件甚至?xí)霈F(xiàn)裝夾不便的問(wèn)題。鑒于此種情況,便對(duì)斜面上漢字雕刻的CAD/CAM做了研究。
綜合文獻(xiàn)[1-3]來(lái)看,水平面上的漢字雕刻流程(圖1)主要是:①獲取待加工字符,選取合適的矢量字庫(kù),分析字體結(jié)構(gòu),獲取原始輪廓點(diǎn)。②用恰當(dāng)?shù)臄?shù)學(xué)算法擬合出光滑的輪廓曲線,再得到擬合曲線上的點(diǎn),為數(shù)控代碼的生成做準(zhǔn)備。通過(guò)模擬圖形檢查所擬合的圖形是否達(dá)到預(yù)期的效果,若達(dá)到預(yù)期效果,則根據(jù)輪廓信息以及擬合的輪廓點(diǎn)來(lái)生成數(shù)控代碼。③將生成的數(shù)控代碼導(dǎo)入數(shù)控機(jī)床中加工。
圖1 水平面漢字雕刻
根據(jù)水平面矢量漢字雕刻流程,結(jié)合空間坐標(biāo)變換矩陣以及 Bezier曲線擬合,本文研究出了斜面矢量漢字雕刻的流程,如圖2所示。
圖2 斜面矢量漢字雕刻
2.1 分析矢量字體,提取原始輪廓點(diǎn)
由文獻(xiàn)[5]可知,點(diǎn)陣化的漢字是無(wú)法滿足連續(xù)雕刻要求的,故漢字必須是矢量化的。目前存在多種矢量字體,大體上可分為填充矢量字體(如type1、truetype font (TTF)、open type)和不填充矢量字體(如AutoCAD shape entity)。由于TTF字體豐富而美觀在數(shù)控雕刻領(lǐng)域有著廣泛的應(yīng)用需求,所以本文選擇TTF字體為研究對(duì)象,開(kāi)發(fā)工具為VC6.0。
根據(jù)文獻(xiàn)[3,6-7],利用 Microsoft提供的
函數(shù),當(dāng)參數(shù)uFormat的取值為GGO_NATIVE時(shí),結(jié) 合 結(jié) 構(gòu) 體 TTPOLYGONHEADER 與TTPOLYCURVE得到TTF字符的輪廓矢量數(shù)據(jù)。
2.2 將水平面輪廓點(diǎn)映射到空間斜面
規(guī)定在右手坐標(biāo)系中,物體旋轉(zhuǎn)的正方向是右手螺旋方向,即從該軸正半軸向原點(diǎn)看是逆時(shí)針?lè)较颉?x,y,z)繞 X軸旋轉(zhuǎn)θ角得到(x1,y1,z1),即,(x,y,z)繞Z軸旋 轉(zhuǎn) β 角 得 到 (x2,y2,z2), 即。如圖3所示,任意斜面上的點(diǎn)可由水平面上的點(diǎn)通過(guò)以下 3步變換而來(lái):
步驟1. 使X、Y和Z軸繞Z軸旋轉(zhuǎn)Φ角(0≤Φ ≤2π),得到X′、Y′和Z軸。變換矩陣為D:
步驟2. 使X′、Y′和Z軸繞X′軸旋轉(zhuǎn)θ角(0≤θ ≤π),得到X′、Y″和Z′軸。變換矩陣為C:
步驟3. 使X′、Y″和Z′軸繞Z′軸旋轉(zhuǎn)ψ角(0≤ψ≤2π),得到X″、Y′′和Z′軸。變換矩陣為B:
設(shè)點(diǎn)(x,y,z)映射后的坐標(biāo)為(x1,y1,z1),則,(x1,y1,z1)=(x,y,z)A,A=BCD。因此xoy平面上的點(diǎn)(x,y,0)映射后的坐標(biāo)為(x1,y1,z1)=(x,y,0)A。
自定義函數(shù) FunObtainPoints()獲取映射后斜面上輪廓點(diǎn)(x1,y1,z1)。設(shè)置關(guān)鍵字T、M,當(dāng)提取點(diǎn)從一段連續(xù)曲線進(jìn)入下一連續(xù)曲線時(shí),將T置為0,表示抬刀;當(dāng)點(diǎn)在連續(xù)曲線時(shí),T置為1,表示加工。當(dāng)結(jié)束時(shí)將 T換為 M,并置為 1。數(shù)據(jù)以“T(M)_X_Y_Z_”的形式存放到Points.dat文件中。
圖3 坐標(biāo)旋轉(zhuǎn)
2.3 擬合輪廓曲線
一個(gè)TTF字符由折線和二次Bezier曲線描繪而成[3]。由文獻(xiàn)[8]可知,七次Bezier曲線段是C3連續(xù)的,為使輪廓曲線保持原有形狀且連續(xù)光滑,現(xiàn)將直線段和曲線段統(tǒng)一擬合成七次 Bezier曲線段,并且可以改善刀具的受力情況,使得刀具光滑地、“柔順地”從一點(diǎn)移到另一點(diǎn),提高加工表面質(zhì)量和降低刀具磨損速度。
給定n + 1個(gè)空間向量Pi( i = 0,1,…, n),稱n次參數(shù)曲線段為 Bezier曲線。, 0≤t≤1,其中 Bi, n( t)是 Bernstein基函數(shù),即,當(dāng)t在區(qū)間[0,1]上變動(dòng)時(shí),就產(chǎn)生了Bezier曲線。在空間曲線的情況下,曲線P(t)=(x(t), y(t), z(t))和控制頂點(diǎn)iP=(Xi, Yi, Zi)的關(guān)系用分量寫(xiě)出即為:X(t)=。
2.3.1 控制頂點(diǎn)的選取
七次Bezier曲線需要8個(gè)控制頂點(diǎn),按如下規(guī)則選取。如圖4所示,,,計(jì)算完此段,引入下一輪廓點(diǎn)P3時(shí),令P0=CP7,P1=P2,P2=P3,按照上述方法獲得新的控制點(diǎn),以此類推,直至遍歷完所有輪廓點(diǎn)。
圖4 控制頂點(diǎn)的選取
2.3.2 獲取擬合后的Bezier曲線輪廓點(diǎn)
自定義Bezier曲線函數(shù)void BezierCurve(float *X,float *Y,float *Z,int n,float t,float &Xnew,float &Ynew,float &Znew),X、Y、Z為控制點(diǎn)CP0~CP7的坐標(biāo)值,n為Bezier曲線的次數(shù),此處置為7,X new、Y new、Z new接收 t從 0到 1變化時(shí)(Δt=0.02)Bezier曲線上點(diǎn)的坐標(biāo)值。
2.4 規(guī)劃多行字符走刀路線,編制數(shù)控代碼
在實(shí)際加工中,幾段文字或幾個(gè)文字一起加工,需要規(guī)劃多行字符走刀路線。充分利用 TTF字體結(jié)構(gòu)的特點(diǎn),加入兩個(gè)for循環(huán)嵌套,首先遍歷所有行數(shù),然后遍歷每行所有字符,獲取每個(gè)字符輪廓數(shù)據(jù)。當(dāng)前一個(gè)字符加工結(jié)束時(shí)自動(dòng)抬刀進(jìn)入后一個(gè)字符的加工起點(diǎn),實(shí)現(xiàn)多行TTF字符輪廓的連續(xù)加工。
字符輪廓雕刻主要運(yùn)用G代碼,當(dāng)抬刀時(shí)用快速移動(dòng)G00代碼,當(dāng)切削時(shí)用G01代碼,校驗(yàn)關(guān)鍵字T的取值來(lái)選用G00還是G01。輪廓雕刻需要較高的轉(zhuǎn)速,推薦主軸轉(zhuǎn)速 S置為9000 r/m in(PVC板上加工),進(jìn)給速度 F置為400 mm/m in。
設(shè)置寄存器m_X jc、m_Y jc、m_Zjc、m_deltaX、m_deltaY、m_deltaZ分別記錄X、Y、Z、ΔX、ΔY、ΔZ 的實(shí)時(shí)值,以便實(shí)現(xiàn)絕對(duì)坐標(biāo)和相對(duì)坐標(biāo)下的編程,以滿足不同的數(shù)控系統(tǒng)。
要注意的是,用 Bezier擬合曲線時(shí),曲線只表達(dá)到圖4的CP7點(diǎn),要得到完整的代碼還要表達(dá)出CP7-P2段。因?yàn)镃P7-P2段為直線,所以用G01表達(dá)即可。
2.5 圖形模擬
為了增強(qiáng)人機(jī)交互,為了能更直觀的觀察到圖形模擬的情況,使微軟基礎(chǔ)類庫(kù) MFC與OpenGL(開(kāi)放式圖形庫(kù))相結(jié)合,構(gòu)造一個(gè)可以實(shí)現(xiàn)圖像移動(dòng)、縮放、旋轉(zhuǎn)的三維空間界面。首先,在VC6.0下搭建OpenGL環(huán)境。然后,封裝一個(gè)OpenGL類COpenGL。最后,將此類映射到MFC對(duì)話框的某個(gè)靜態(tài)控件上。配置完就可以在COpenGL類中畫(huà)圖了。
步驟1. 打開(kāi)編寫(xiě)的軟件(圖5),在待加工字符輸入框中輸入字符“”,或者通過(guò)“打開(kāi)文件”按鈕,加載含有字符“”的txt文檔,按照?qǐng)D6設(shè)置參數(shù)。
步驟2. 點(diǎn)擊“數(shù)據(jù)準(zhǔn)備”按鈕,計(jì)算所需數(shù)據(jù),再點(diǎn)擊“圖形模擬”按鈕生成模擬圖7,若圖形無(wú)誤則點(diǎn)擊“獲取代碼”按鈕,否則點(diǎn)擊“重置”返回參數(shù)設(shè)置界面重新設(shè)置參數(shù)。
步驟 3. 將獲取的代碼(圖 8)載入數(shù)控機(jī)床中進(jìn)行加工。加工現(xiàn)場(chǎng)及加工完成的漢字如圖 9~11所示。
圖5 軟件界面
圖6 參數(shù)設(shè)置界面
圖7 模擬圖
圖8 數(shù)控代碼截圖
實(shí)驗(yàn)證明,該方法編寫(xiě)的軟件運(yùn)行穩(wěn)定,加工字體輪廓曲線光滑沒(méi)有蠕動(dòng)現(xiàn)象并且字體沒(méi)有失真,數(shù)控代碼是可靠的、穩(wěn)定的,達(dá)到了預(yù)期的效果。
圖9 加工現(xiàn)場(chǎng)
圖10 加工圖
圖11 局部放大圖
通過(guò)對(duì)TTF字體的分析以及引入歐式空間坐標(biāo)旋轉(zhuǎn)和七次 Bezier保形曲線解決了斜面上矢量漢字的CAD/CAM,解決了因裝夾產(chǎn)生的誤差和費(fèi)時(shí)問(wèn)題,提高了加工效率和加工質(zhì)量。又結(jié)合OpenGL增強(qiáng)了軟件的人機(jī)交互性,使界面更加友好,不再死板。
[1] 沈媛媛. 矢量漢字?jǐn)?shù)控切削加工的刀具路徑規(guī)劃原理與方法[D]. 大連: 大連理工大學(xué), 2007.
[2] 陳俊濤. 平面域矢量漢字高速加工刀具路徑規(guī)劃[D].大連: 大連理工大學(xué), 2009.
[3] 姚輝學(xué), 付永忠, 殷蘇民, 等. TrueType字體數(shù)控雕刻[J]. 工程圖學(xué)學(xué)報(bào), 2007, 28(5): 148-152.
[4] 李小軍, 方江龍, 蔣知峰. TrueType字體中心骨架線提取算法研究[J]. 機(jī)械制造, 2010, 48(1): 19-21.
[5] 梅仕偉. 漢字雕刻數(shù)控代碼自動(dòng)生成系統(tǒng)研究[D]. 武漢: 武漢理工大學(xué), 2011.
[6] Microsoft Corp. TrueType 1.0 front files technical specification V 1. 66 [S]. Washington: Microsoft Corporation press, 1995.
[7] 劉 蓉, 劉 明. 激光打標(biāo)中 TrueType字體的輪廓提取與打標(biāo)實(shí)現(xiàn)[J]. 計(jì)算機(jī)應(yīng)用與軟件, 2005, 22(7): 72-76.
[8] 王成偉. Ck連續(xù)的保形插值2k+1次樣條函數(shù)[J]. 數(shù)值計(jì)算與計(jì)算機(jī)應(yīng)用, 1997, 18(1): 1-7.
[9] 徐 甜, 劉凌霞. Bezier曲線的算法描述及其程序?qū)崿F(xiàn)[J]. 安陽(yáng)師范學(xué)院學(xué)報(bào), 2006, (5): 49-52.
The Research and App lication on CAD/CAM of the Chinese Character on Inclined Plane
Liu Jikai, Zhao Qingzhi, Zhang Linhua, Zhang Xingwu, Wang Hongjia
(School of Mechanical Engineering, Shandong University of Technology, Zibo Shandong 255049, China)
A method that vector characters are carved in the inclined plane is proposed in the paper. The processes of characters carved in the inclined plane include the process of characters carved in the horizontal plane according to the relevant papers, rotation matrix in the spatial coordinate and the 7thBezier curve fitting on the basis of C3continuous space. OpenGL can realize the arbitrary rotation, zoom and pan of graphics, enhancing the human-computer interaction. According to the experiments, we can find out the software interface is friendly and has good robustness in this method. NC code can be run stably on CNC machine to achieved the desired effect. That w ill improve the processing efficiency of characters carved in the inclined plane and reduce the processing errors.
NC code; CAD/CAM; character carving on inclined plane; truetype font; OpenGL
TP 391.7
10.11996/JG.j.2095-302X.2016030400
A
2095-302X(2016)03-0400-05
2015-10-28;定稿日期:2015-11-07
劉紀(jì)凱(1988?),男,山東濱州人,碩士研究生。主要研究方向?yàn)閿?shù)控技術(shù)與裝備。E-mail:1966248579@qq.com
趙慶志(1962?),男,山東日照人,教授,博士。主要研究方向?yàn)閿?shù)控技術(shù)與裝備、特種加工CAD/CAM。E-mail:zhaoqzme@163.com