999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

BMP格式文件轉(zhuǎn)換NC代碼的研究

2017-09-20 03:13:04魏勝利徐書蕾
現(xiàn)代計(jì)算機(jī) 2017年22期
關(guān)鍵詞:信息

魏勝利,徐書蕾

(安陽工學(xué)院計(jì)算機(jī)科學(xué)與信息工程學(xué)院,安陽455000)

BMP格式文件轉(zhuǎn)換NC代碼的研究

魏勝利,徐書蕾

(安陽工學(xué)院計(jì)算機(jī)科學(xué)與信息工程學(xué)院,安陽455000)

在數(shù)控系統(tǒng)和3D打印系統(tǒng)中,需要將圖形文件轉(zhuǎn)換為NC代碼。提出一種將BMP(Bitmap)格式的圖形文件轉(zhuǎn)換為NC代碼的方法。圖形文件以BMP格式保存,在操作時(shí)創(chuàng)建一個(gè)臨時(shí)文件,對繪畫的圖形實(shí)時(shí)保存,再利用功能函數(shù)讀取圖形文件的信息,生成一個(gè)NC代碼。以VC6.0為開發(fā)平臺(tái),以C、C++語言為主要編程語言,實(shí)現(xiàn)該轉(zhuǎn)換系統(tǒng)。

BMP格式文件;位圖;NC代碼;NC系統(tǒng);3D打印

0 引言

多數(shù)情況下,數(shù)控機(jī)床以及3D打印機(jī)的運(yùn)行離不開命令的控制,NC代碼作為其中的一種命令廣泛應(yīng)用于這些平臺(tái)上。在數(shù)字化制造的今天,數(shù)控機(jī)床和3D打印機(jī)都需要根據(jù)三維造型數(shù)據(jù)進(jìn)行路徑規(guī)劃獲取打印路徑。然后根據(jù)這些路徑使用NC代碼編程以驅(qū)動(dòng)機(jī)床和3D打印機(jī)。然而直接使用NC代碼對圖形圖像直接編程不僅代碼量大而且編程較為繁雜,效率達(dá)不到我們所預(yù)期的效果。基于此,提出了一種將圖形文件直接轉(zhuǎn)換為NC代碼的方法并實(shí)現(xiàn)了它。首先將圖形文件以BMP格式進(jìn)行存儲(chǔ),然后通過算法將圖形文件轉(zhuǎn)換成NC代碼,這樣在很大程度上提高了數(shù)控的編程效率。

1 BMP格式解析

要想實(shí)現(xiàn)利用BMP格式文件轉(zhuǎn)換NC代碼,首先要充分了解BMP格式,理解BMP格式中的數(shù)據(jù)結(jié)構(gòu)。BMP格式圖像文件是基于DIB(設(shè)備無關(guān)位圖文件)文件,代碼實(shí)現(xiàn)過程中需要對其格式進(jìn)行解析,以便于圖像文件的生成、打開及保存。由于MFC未提供現(xiàn)成的類來封裝DIB,因此需要自己進(jìn)行類的設(shè)計(jì)。BMP文件分為4部分:有關(guān)位圖文件屬性的文件頭(BITMAPFILEHEADER)、有關(guān)位圖信息頭的(BIT?MAPINFOHEADER)、調(diào)色板以及位圖的圖像數(shù)據(jù)[1]。BMP文件結(jié)構(gòu)如圖1所示:

圖1 BMP文件結(jié)構(gòu)

在位圖文件結(jié)構(gòu)中,位圖文件頭(BITMAPFILE?HEADER)數(shù)據(jù)結(jié)構(gòu)定義了位圖的圖像類型、圖像大小、圖像數(shù)據(jù)存放地址和兩個(gè)保留未使用的字段,它們的字段大小分別為2、4、2、2、2字節(jié),其主要是標(biāo)注位圖的屬性。位圖信息頭(BITMAPINFOHEADER)數(shù)據(jù)結(jié)構(gòu)主要定義了位圖信息頭的大小、圖像的寬高、圖像的色深、壓縮說明圖像數(shù)據(jù)的大小等信息。其中位圖信息頭的字段大小為4字節(jié),根據(jù)不同的操作系統(tǒng)而不同。在Windows中,此字段的值總為40字節(jié),位圖寬度和高度的字段大小都為4字節(jié)。在位圖圖像的單位中,寬度的單位為像素,而高度則為0,圖像數(shù)據(jù)大小字段的大小為4字節(jié),而圖像數(shù)據(jù)大小必須為4的倍數(shù)。圖像數(shù)據(jù)大小不是4的倍數(shù)時(shí)用0填充補(bǔ)足。顏色表(color table)是單色、16色和256色圖像文件所特有的,相對應(yīng)的調(diào)色板大小是2、16和256。調(diào)色板以4字節(jié)為單位,每4個(gè)字節(jié)存放一個(gè)顏色值,圖像的數(shù)據(jù)是指向調(diào)色板的索引,例如圖像數(shù)據(jù)03 00 11 FF表示調(diào)用調(diào)色板[3]、調(diào)色板[0]、調(diào)色板[17]和調(diào)色板[255]中的數(shù)據(jù)來顯示圖像顏色。

2 NC代碼分析

NC代碼是數(shù)字控制器所能識(shí)別并運(yùn)行的代碼總稱,使用的平臺(tái)不同,代碼也就不同。我們所研究的是G代碼,其分為“模態(tài)代碼”和“一般代碼”。“模態(tài)代碼”的功能在它被執(zhí)行后會(huì)繼續(xù)維持,“一般代碼”則僅僅在收到該命令時(shí)起作用,像直線、圓弧之類的代碼稱為“模態(tài)代碼”,原點(diǎn)返回等代碼稱為“一般代碼”[2]。

本文中所論述的NC代碼中所包含的命令有M代碼、G代碼。我們所研究的是基于直線插補(bǔ)的NC代碼段的研究,所涉及的命令及解釋如下所示:

(1)M代碼用于數(shù)控設(shè)備的輔助裝置的開關(guān)及動(dòng)作。如

M02:程序停止

M03:主軸順時(shí)針旋轉(zhuǎn)

(2)G代碼用于建立數(shù)控系統(tǒng)工作的一種指令。如:

G00:快速移動(dòng)點(diǎn)定位

G01:直線插補(bǔ)

G90:絕對值編程

G92:螺紋切削循環(huán)

(3)F代碼用于主軸刀具的進(jìn)給速度,通常以每分鐘進(jìn)給量設(shè)置數(shù)據(jù)。

(4)S代碼用于指定主軸轉(zhuǎn)速。

(5)T代碼用于指定刀具編號(hào)。

(6)N代碼表示程序段序號(hào),當(dāng)以一段程序用N1標(biāo)識(shí)時(shí),往后依次間隔1的方法設(shè)置程序段號(hào)。

3 NC代碼生成

目前,NC代碼可以采用手動(dòng)編寫,也可以用CAM軟件自動(dòng)生成[3]。本系統(tǒng)本質(zhì)上是基于圖形NC代碼自動(dòng)轉(zhuǎn)換和生成。我們開發(fā)完成了將基于BMP格式的圖形文件轉(zhuǎn)換為NC代碼的系統(tǒng)。系統(tǒng)采用VC++ 6.0為開發(fā)平臺(tái),采用C、C++語言相結(jié)合的方式對系統(tǒng)進(jìn)行開發(fā)。NC代碼轉(zhuǎn)換的流程圖2所示:

圖2 NC代碼轉(zhuǎn)換的流程圖

在這一過程中,最為關(guān)鍵的是實(shí)現(xiàn)對位圖圖像文件信息的讀取以及生成所需要的NC代碼。了解位圖圖像文件的數(shù)據(jù)構(gòu)造,怎么索引關(guān)鍵數(shù)據(jù)信息是最重要的。在初始化變量時(shí),根據(jù)NC代碼數(shù)據(jù)結(jié)構(gòu)只需要X、Y坐標(biāo)的實(shí)際大小(比例),所需要機(jī)器下刀數(shù)據(jù)大小值以及位圖的頭信息。位圖頭信息的作用是建立索引,讀取位圖信息。具體實(shí)施步驟如下:

(1)定義一個(gè)CSize類型的函數(shù)來獲取位圖的寬和高的數(shù)據(jù)大小,以像素為單位。通過LPtoDP()和DP?toLP()兩個(gè)函數(shù)實(shí)現(xiàn)將設(shè)備坐標(biāo)轉(zhuǎn)換為邏輯坐標(biāo),同時(shí)設(shè)置實(shí)際的長度和顯示的長度的比值。

(2)利用DIBWidth()、DIBHeight()、BytesPerLine()分別獲取圖像寬度字節(jié)數(shù)、高度字節(jié)數(shù)以及圖像每行字節(jié)數(shù),以便于用循環(huán)實(shí)現(xiàn)信息讀取及代碼轉(zhuǎn)功能的實(shí)現(xiàn)。

(3)通過FindDIBBits()函數(shù)實(shí)現(xiàn)BMP圖像像素起始位置并返回指向BMP像素指針。通過像素指針、像素高度、寬度及每行的字節(jié)數(shù)實(shí)現(xiàn)逐行對圖像信息的讀取。在以起始點(diǎn)為搜索端的基礎(chǔ)上,判斷這個(gè)像素點(diǎn)周圍是否存在其他的像素點(diǎn)。存在或不存在都以一個(gè)像素為單位進(jìn)行步進(jìn),將像素點(diǎn)的坐標(biāo)值賦值給X、Y。通過設(shè)定的實(shí)際長度和顯示比例的比值關(guān)系將X、Y的坐標(biāo)值以NC代碼格式存儲(chǔ)在字符串中,依次循環(huán)。當(dāng)讀取到孤立點(diǎn)時(shí),將孤立點(diǎn)的坐標(biāo)值以G00的格式存儲(chǔ),實(shí)現(xiàn)快速移動(dòng)到下一個(gè)坐標(biāo)點(diǎn)。

(4)最后是對NC代碼的完善,設(shè)定刀具的轉(zhuǎn)速值、代碼開始標(biāo)識(shí)以及代碼終止標(biāo)識(shí),實(shí)現(xiàn)NC代碼規(guī)范化。

4 測試結(jié)果

為測試方法和轉(zhuǎn)換系統(tǒng)的有效性,設(shè)計(jì)一個(gè)矩形的圖形。通過轉(zhuǎn)換,將其轉(zhuǎn)換成NC代碼。在雕刻機(jī)平臺(tái)上的運(yùn)行NC代碼,得出了比較滿意的結(jié)果。設(shè)計(jì)的圖形和轉(zhuǎn)換的NC代碼如圖3和圖4所示。

圖3 待轉(zhuǎn)換的矩形圖形

圖4 提取的NC代碼

一般情況下,NC代碼是相對獨(dú)立的,讀取NC代碼時(shí)逐行讀取,所以儲(chǔ)存時(shí)也是采取逐行存儲(chǔ)的模式[4]。為了驗(yàn)證NC代碼的準(zhǔn)確性,采用了固高科技的三軸雕刻機(jī)來進(jìn)行測試。測試的結(jié)果如圖5所示。從圖中可以看出,所獲取的NC代碼有效的復(fù)原了設(shè)計(jì)的圖形。

在系統(tǒng)運(yùn)行時(shí),通過專用的電纜連接輸入、輸出接口、步進(jìn)電機(jī)驅(qū)動(dòng)、實(shí)時(shí)狀態(tài)顯示、系統(tǒng)操作與各伺服單元和I/O單元的連接,在X、Y軸方向上采用直線電機(jī)直接驅(qū)動(dòng),Z軸方向采用伺服電機(jī)加滾珠絲杠的方式驅(qū)動(dòng)[2]。而在數(shù)據(jù)信息進(jìn)行傳輸前需要對NC代碼進(jìn)行信息檢錯(cuò),NC源代碼將信息傳遞給NC代碼解釋器,如果遇到錯(cuò)誤代碼則出現(xiàn)反饋信息,如果沒有代碼錯(cuò)誤,則將NC代碼轉(zhuǎn)換為雕刻機(jī)控制參數(shù)[5]。從對刀原點(diǎn)到矩形的左下角用G00代碼實(shí)現(xiàn)快速移動(dòng)定位,將刀具移動(dòng)到轉(zhuǎn)換NC代碼時(shí)存儲(chǔ)的第一個(gè)BMP圖像像素點(diǎn),即X:7.906/Y:25.037(通過比例對換過的數(shù)據(jù)),而此過程中始終是沒有下刀的,到達(dá)矩形左下角的定位點(diǎn),刀具下刀,實(shí)現(xiàn)順時(shí)針移動(dòng),最后移動(dòng)到原來的定位點(diǎn)。刀具的移動(dòng)順序跟NC代碼生成過程遍歷圖像像素點(diǎn)的順序一樣,這就是刀具順時(shí)針移動(dòng)的原因。

圖5 測試結(jié)果圖

5 結(jié)語

在3D打印系統(tǒng)中,通常需要根據(jù)層面的信息規(guī)劃打印的路徑,而層面信息通常以圖形的形式存在,研究設(shè)計(jì)能夠根據(jù)圖形信息提取NC代碼的系統(tǒng)很有意義。本文主要論述了基于BMP格式的NC代碼轉(zhuǎn)換,通過在實(shí)驗(yàn)機(jī)器上的測試結(jié)果分析得知,系統(tǒng)對BMP格式圖像的信息處理符合要求。

在未來,數(shù)控技術(shù)會(huì)有廣泛的應(yīng)用,3D打印技術(shù)、雕刻機(jī)等慢慢如融到我們的生活中。能夠?qū)D形轉(zhuǎn)換為NC代碼有著廣闊的應(yīng)用前景。只需一張BMP格式的文件,就可以把圖像刻在木制家具上或者打印出來。通過技術(shù)的不斷更新,未來實(shí)現(xiàn)在三維圖形中提取NC代碼將會(huì)是突破性的發(fā)展。

參考考獻(xiàn):

[1]宋葉未,葉建芳.BMP格式位圖文件的分析及顯示算法[J].現(xiàn)代電子技術(shù),2011(20):5-7.

[2]張學(xué)飛,李健.開放式數(shù)控系統(tǒng)G代碼的編譯模塊設(shè)計(jì)[J].機(jī)械設(shè)計(jì)與制造,2010(10):14-17.

[3]張宗,健張吉,堂張鵬.數(shù)控機(jī)床超聲檢測附件NC代碼提取技術(shù)[J].機(jī)械設(shè)計(jì)與制造,2015(11):152-155.

[4]高靜,遠(yuǎn)張鵬,周金瑞.基于VC的開放式數(shù)控系統(tǒng)NC代碼解釋器及擴(kuò)展功能的設(shè)計(jì)及實(shí)現(xiàn)[J].機(jī)床與液壓,2012(13):118-120.

[5]張慶,姚錫凡.一種開放式數(shù)控系統(tǒng)NC代碼編譯器設(shè)計(jì)與實(shí)現(xiàn)[J].組合機(jī)床與自動(dòng)化加工技術(shù),2010(2):59-61.

Research on the Conversion from BMP Image to NC Code

WEISheng-li,XUShu-lei
(CollegeofComputer Scienceand Information Engineering,Anyang Instituteof Technology,Anyang 455000)

In NC and 3D printing system,conversion from graphic files to NC codemay be needed.Presentsamethod to transform BMP(Bitmap)files to NC code.A graphic file is saved with BMP format.When the file needs to bemodified,a temporary file will be created to save the changed file timely.When necessary,performance function is used to read the information of the graphic files to generate NC code.Then developsa transform system with VC6.0 platform and Cand C++language.

魏勝利(1974-),男,河南滑縣人,講師,碩士研究生,研究方向?yàn)橛?jì)算機(jī)控制、計(jì)算機(jī)圖形

2017-07-25

2016年河南省科技攻關(guān)計(jì)劃項(xiàng)目(No.162102210130)

1007-1423(2017)22-0053-04

10.3969/j.issn.1007-1423.2017.22.014

BMPFormat;NCCode;Temporary File;NCSystem;3DPrinting

猜你喜歡
信息
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
展會(huì)信息
信息超市
展會(huì)信息
展會(huì)信息
展會(huì)信息
展會(huì)信息
展會(huì)信息
信息
健康信息
祝您健康(1987年3期)1987-12-30 09:52:32
主站蜘蛛池模板: 亚洲中文精品人人永久免费| 亚洲无限乱码一二三四区| 午夜国产小视频| 99久久人妻精品免费二区| 欧美啪啪视频免码| 国产99欧美精品久久精品久久| 国产成人精品第一区二区| 天堂成人av| 中文字幕欧美日韩| 亚洲无限乱码| 91娇喘视频| 国产微拍一区二区三区四区| 国产日韩欧美在线播放| 一级成人a毛片免费播放| 欧美亚洲一二三区| 综合人妻久久一区二区精品| 999福利激情视频| 91精品小视频| 亚洲天堂成人在线观看| 乱人伦99久久| 91人人妻人人做人人爽男同| 国产欧美日韩视频一区二区三区| 亚洲视频一区| 国模沟沟一区二区三区| 免费人成黄页在线观看国产| 2019年国产精品自拍不卡| 日韩高清一区 | 91年精品国产福利线观看久久 | 国产v精品成人免费视频71pao| 国产一区二区三区在线观看免费| 日韩小视频在线播放| 久久国产精品嫖妓| 欧美久久网| 在线国产毛片手机小视频 | 欧美在线导航| 欧美一级高清免费a| 欧美天堂在线| 伊大人香蕉久久网欧美| 熟女成人国产精品视频| 亚洲另类色| 欧美色99| 久久久久国产一区二区| 国产XXXX做受性欧美88| 精品伊人久久久香线蕉| 嫩草国产在线| 欧美黑人欧美精品刺激| 久久人人97超碰人人澡爱香蕉| 玩两个丰满老熟女久久网| 亚洲天堂自拍| 2020极品精品国产| 亚洲一区网站| 国产成人一区在线播放| 性欧美在线| 免费高清毛片| 欧美日韩国产在线播放| 亚洲国产AV无码综合原创| 国产区免费| 亚洲男人的天堂久久精品| 亚洲色图欧美视频| 国产白浆视频| 国产乱人免费视频| 狠狠亚洲婷婷综合色香| 在线精品欧美日韩| 女人18毛片一级毛片在线 | 国产麻豆aⅴ精品无码| 亚洲第一国产综合| 欧美成人看片一区二区三区| 多人乱p欧美在线观看| 青青国产视频| 国产精品毛片一区视频播| 久久一色本道亚洲| 伊人国产无码高清视频| 久久亚洲综合伊人| 婷婷五月在线| 国产菊爆视频在线观看| 久久无码免费束人妻| 在线人成精品免费视频| 麻豆国产在线观看一区二区| 福利视频99| 国产精品视频白浆免费视频| 东京热一区二区三区无码视频| 国产麻豆精品手机在线观看|