• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      數(shù)控銑床圖形編程系統(tǒng)零件圖元排序程序設(shè)計(jì)

      2012-01-29 08:35:50西安工程技術(shù)學(xué)院李洪聲賀歆昉
      電子世界 2012年11期
      關(guān)鍵詞:圖元鏈表樣條

      西安工程技術(shù)學(xué)院 李洪聲 賀歆昉

      數(shù)控銑床圖形編程系統(tǒng)零件圖元排序程序設(shè)計(jì)

      西安工程技術(shù)學(xué)院 李洪聲 賀歆昉

      基于autoCAD數(shù)控銑床圖形自動(dòng)編程系統(tǒng)設(shè)計(jì)中,本文利用Visual C++6.0語言設(shè)計(jì)一個(gè)比較完整的零件輪廓圖元排序程序。首先介紹了定義了存儲(chǔ)各圖元信息數(shù)據(jù)結(jié)構(gòu),定義了雙向鏈表結(jié)點(diǎn)復(fù)合結(jié)構(gòu)體類型。利用list列表容器存儲(chǔ)非均勻B樣條曲線信息。設(shè)計(jì)比較函數(shù)以及鏈表操作函數(shù),簡化了排序程序設(shè)計(jì)。

      數(shù)控銑床自動(dòng)編程;排序程序;非均勻B樣條曲線;雙向鏈表

      1.引言

      在WindowsXP操作平臺(tái)上,以Auto-CAD2004繪圖軟件為開發(fā)平臺(tái)、采用可視化程序設(shè)計(jì)語言Visual C++6.0設(shè)計(jì)開發(fā)適于PC機(jī)數(shù)控系統(tǒng)上使用的數(shù)控銑床圖形編程系統(tǒng)。系統(tǒng)框架結(jié)構(gòu)如圖1所示。

      (1)讀入模塊:讀取存儲(chǔ)零件各圖元幾何信息。設(shè)計(jì)人員采用AutoCAD對加工的零件實(shí)體建摸后,將圖形信息以DXF文件格式存儲(chǔ)。讀入模塊通過分析DXF文件格式,讀取CAD圖形實(shí)體數(shù)據(jù),存儲(chǔ)零件的幾何和參數(shù)信息。(2)讀入雙向連表模塊:將存儲(chǔ)各圖元信息結(jié)構(gòu)體讀入鏈表后由排序模塊進(jìn)行排序組環(huán)。(3)工藝設(shè)置模塊:對話框交互式輸入工藝參數(shù)。(4)生成代碼模塊:對(2)中的存儲(chǔ)零件輪廓環(huán)的雙向鏈表中各結(jié)點(diǎn)結(jié)構(gòu)體中的圖元類型、環(huán)方向進(jìn)行判斷并根據(jù)輸入的工藝參數(shù)進(jìn)行相應(yīng)處理生成數(shù)控加工程序代碼。

      本文主要介紹了使用Visual C++6.0語言對存儲(chǔ)數(shù)控銑床加工零件輪廓各圖元雙向鏈表排序程序設(shè)計(jì)過程。首先介紹了定義了存儲(chǔ)各圖元信息數(shù)據(jù)結(jié)構(gòu),利用list列表容器存儲(chǔ)非均勻B樣條曲線信息。設(shè)計(jì)圖元信息讀入鏈表模塊以及雙向鏈表操作函數(shù)和圖元排序程序。

      2.在讀入模塊中定義各類型圖元結(jié)構(gòu)體[1]

      2.1 定義存儲(chǔ)各基本類型圖元結(jié)構(gòu)體

      3)非均勻B樣條曲線圖元結(jié)構(gòu)體

      STL是最新的C++標(biāo)準(zhǔn)函數(shù)庫中的一個(gè)子集[2]。它采用泛型程序設(shè)計(jì)思想。容器是容納、包含一組元素或元素集合的對象。容器類中包含一組元素或一個(gè)元素集合,作為通用元素收集器,其list列表容器主要用于存放鏈表,其中的鏈表是雙向鏈表,可以從任意一端開始遍歷。利用雙向迭代器可以在兩個(gè)方向上對列表進(jìn)行遍歷。利用迭代和訪問方法、可變序列算法和不可變序列算法對列表容器中的元素進(jìn)行正反迭代返回元素個(gè)數(shù)、查找排序等操作[2]。

      利用listControlist列表容器存儲(chǔ)非均勻B樣條曲線控制頂點(diǎn)序列,list Jnlist列表容器存儲(chǔ)其節(jié)點(diǎn)序列。定義存儲(chǔ)非均勻B樣條圖元結(jié)構(gòu)體如下:

      2.2 定義存儲(chǔ)各類型圖元雙向鏈表結(jié)點(diǎn)復(fù)合結(jié)構(gòu)體DNodel

      讀入雙向鏈表模塊將存儲(chǔ)各類型圖元信息結(jié)構(gòu)體讀入雙向鏈表后由排序程序進(jìn)行排序組環(huán)。數(shù)控銑床加工的零件二維平面輪廓環(huán)主要是由一系列基本圖元(直線、圓弧、樣條曲線)組成首尾相接的封閉環(huán)。

      本課題基本圖元類型分別為非均勻B樣條曲線、直線和園弧。雙向鏈表結(jié)點(diǎn)結(jié)構(gòu)體用于存儲(chǔ)零件圖中組成平面輪廓環(huán)的各基本圖元,鏈接成雙向鏈表。這就要求雙向鏈表的結(jié)點(diǎn)數(shù)據(jù)域結(jié)構(gòu)體類型存儲(chǔ)各類基本圖元。由于直線、圓弧、樣條曲線等圖元的基本信息不同,故存儲(chǔ)這些圖元信息的結(jié)構(gòu)體類型也不同。為了將這些不同類型的結(jié)構(gòu)體讀入同一雙向鏈表進(jìn)行后續(xù)處理,其結(jié)構(gòu)體數(shù)據(jù)域形式必須滿足存儲(chǔ)各類基本類型圖元。定義復(fù)合結(jié)構(gòu)體DNodel,其中數(shù)據(jù)域結(jié)構(gòu)體unite包含各基本圖元結(jié)構(gòu)體類型成員。定義雙向鏈表復(fù)合結(jié)構(gòu)體結(jié)點(diǎn)類型體如下:

      2.3 集合類CPtrArray對象存儲(chǔ)圖元信息

      在讀入模塊中將存儲(chǔ)所有圖元信息結(jié)構(gòu)體對象加入集合類CPtrArray對象供后續(xù)處理使用。CptrArray類對象的容量可動(dòng)態(tài)增加。類CPtrArray對象m_PtrArray1、m_PtrArray2、m_PtrArray3分別存儲(chǔ)直線圖元結(jié)構(gòu)體、存儲(chǔ)圓弧圖元結(jié)構(gòu)體、存儲(chǔ)非均勻B樣條曲線圖元結(jié)構(gòu)體。

      3.雙向鏈表結(jié)構(gòu)存儲(chǔ)各圖元

      3.1 各圖元結(jié)構(gòu)體讀入雙向鏈表

      本課題涉及的是在AutoCAD中繪制的二維加工平面零件。由于DXF文件中圖元的排列順序不一定是按照繪制零件輪廓的拓?fù)漤樞蚺帕械模宰x入模塊讀入各圖元信息數(shù)據(jù)后,在生成數(shù)控刀軌時(shí)、需要將這些圖元讀入雙向鏈表后進(jìn)行排序。讀入鏈表部分Visual C++程序如下:

      3.2 比較函數(shù)以及雙向鏈表操作函數(shù)

      3.2.1 比較函數(shù)

      在零件輪廓圖元排序時(shí)、需要用比較函數(shù)查找首尾相接的點(diǎn)從而組成一個(gè)首尾相接的環(huán)。直線、圓弧圖元比較函數(shù)int CDDDDoc::compare(drawing*c1,drawing*c2),直線、圓弧與非均勻B樣條曲線比較函數(shù)int CDDDDoc::copare(drawing*c1,F(xiàn)eiType *c2)…。

      考慮到首尾相接的點(diǎn)由于繪圖的原因、不一定是同一點(diǎn),所以使用了容差,即相連接的某一圖元的終點(diǎn)坐標(biāo)與另一圖元的起點(diǎn)坐標(biāo)、兩點(diǎn)的坐標(biāo)值誤差在一定范圍內(nèi)就認(rèn)為兩點(diǎn)重合。直線、圓弧圖元之間比較判斷函數(shù)部分代碼如下:

      3.2.2 雙向鏈表操作函數(shù)

      編制并利用雙向鏈表的各種函數(shù)實(shí)現(xiàn)雙向鏈表的各種基本操作運(yùn)算:初始化、插入元素、刪除元素、釋放雙向鏈表等。部分函數(shù)名及函數(shù)參數(shù)如下:

      3.2.3 設(shè)計(jì)雙向鏈表排序程序

      在數(shù)控刀軌生成時(shí),需要將這些首尾相接的圖元(直線、圓弧、樣條等)組成一個(gè)整體有序的環(huán)。組環(huán)的方法分為無分支和有分支兩種情況。本課題討論無分支情況。

      鏈表的最大特點(diǎn)是元素的插入或刪除僅需修改指針而不需要移動(dòng)元素。本課題使用比較函數(shù)、鏈表操作函數(shù)等設(shè)計(jì)已讀入雙向鏈表零件圖元組環(huán)排序程序。排序程序算法流程如圖2所示。取鏈表L中第i個(gè)結(jié)點(diǎn)、與i結(jié)點(diǎn)后所有的結(jié)點(diǎn)j進(jìn)行比較、如果值相等則j結(jié)點(diǎn)插入i結(jié)點(diǎn)后。本文用Visual C++6.0編制的部分組環(huán)排序程序如下:

      4.結(jié)束語

      本文定義了存儲(chǔ)各類圖元數(shù)據(jù)結(jié)構(gòu)體,對存儲(chǔ)非均勻B樣條曲線信息結(jié)構(gòu)體使用C++標(biāo)準(zhǔn)函數(shù)庫子集STL中l(wèi)ist列表容器作為成員變量存儲(chǔ)節(jié)點(diǎn)和控制頂點(diǎn)等信息,從而可簡化讀取模塊設(shè)計(jì)。利用迭代和訪問方法、可變序列算法和不可變序列算法對列表容器中的元素進(jìn)行正反迭代指向返回元素個(gè)數(shù)、查找、排序等操作,從而可大大簡化圖形編程系統(tǒng)非均勻B樣條后處理模塊設(shè)計(jì)。

      用Visual C++6.0設(shè)計(jì)雙向鏈表讀入程序,設(shè)計(jì)比較函數(shù)以及雙向鏈表操作函數(shù)簡化了雙向鏈表圖元排序程序設(shè)計(jì)。經(jīng)運(yùn)行排序程序、存儲(chǔ)零件各圖元鏈表排序結(jié)果正確。

      圖2 雙向鏈表排序流程

      [1]譚浩強(qiáng).C++程序設(shè)計(jì)[M].北京:清華大學(xué)出版社.

      [2]鄭莉,董淵,張瑞豐.C++語言程序設(shè)計(jì)(第3版)[M].北京:清華大學(xué)出版社,2004.

      [3]孫鑫,余安萍.VC++深入祥解[M].北京:工業(yè)出版社,2006.

      李洪聲(1962—),男,貴州貴陽人,工程碩士,西安工程技術(shù)學(xué)院講師,研究方向:數(shù)控機(jī)床編程加工。

      賀歆昉(1963—),渭南技師學(xué)院講師。

      猜你喜歡
      圖元鏈表樣條
      一元五次B樣條擬插值研究
      一種組態(tài)控件技術(shù)在電力監(jiān)控系統(tǒng)中的運(yùn)用
      學(xué)術(shù)出版物插圖的編排要求(一):圖注
      聯(lián)鎖表自動(dòng)生成軟件的設(shè)計(jì)與實(shí)現(xiàn)
      基于二進(jìn)制鏈表的粗糙集屬性約簡
      跟麥咭學(xué)編程
      基于鏈表多分支路徑樹的云存儲(chǔ)數(shù)據(jù)完整性驗(yàn)證機(jī)制
      三次參數(shù)樣條在機(jī)床高速高精加工中的應(yīng)用
      三次樣條和二次刪除相輔助的WASD神經(jīng)網(wǎng)絡(luò)與日本人口預(yù)測
      軟件(2017年6期)2017-09-23 20:56:27
      基于樣條函數(shù)的高精度電子秤設(shè)計(jì)
      北京市| 伊宁市| 抚顺县| 兴隆县| 刚察县| 怀化市| 永福县| 高淳县| 台东县| 台山市| 和硕县| 获嘉县| 贵港市| 灵台县| 枝江市| 柯坪县| 舒城县| 柘城县| 三原县| 泗阳县| 鹤壁市| 嘉鱼县| 宁陵县| 滕州市| 德安县| 浮山县| 崇文区| 鲁山县| 阿鲁科尔沁旗| 桓台县| 浙江省| 双牌县| 泉州市| 赣榆县| 南投县| 台前县| 新巴尔虎左旗| 香港 | 霍林郭勒市| 汕尾市| 扶余县|