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

基于VC++的DXF數據文件接口程序設計

2012-01-24 12:25:18但永平張國濤
電子設計工程 2012年23期
關鍵詞:程序

但永平,張 蕾,張國濤,楊 凱

(中原工學院 電子信息學院,河南 鄭州 450007)

AutoCAD是目前世界上最成功的CAD軟件平臺之一,它具有齊全的圖形編輯功能和直觀的系統構架,有豐富的繪圖指令、強大的編輯功能,支持多種圖形輸入、輸出設備。同時,AutoCAD具有相當的靈活性,可根據需要進行二次開發[1]。可以通過對AutoCAD的二次開發,使其更廣泛的運用于其他工藝過程中。例如,在實際的工程雕刻中,為了設計雕刻的圖形,需要在具有齊全的圖形編輯功能和直觀的系統構架的CAD軟件中編輯設計圖形,而設計好的圖形數據參數要輸出到雕刻的控制程序中,進而控制雕刻圖形。

盡管AutoCAD是一個功能很強的圖形編輯系統。但它所包含的一系列指令只能在AutoCAD狀態下工作。為使AutoCAD的圖形信息能夠讀取出來,這就需要將高級語言程序來對它進行參數提取,這實質上就是AutoCAD與高級語言的接口。AutoCAD系統提供有多種接口方式,如.SCR文件、.DXF文件、AutoLisp語言接口等[2]。本文只介紹.DXF文件接口方式。

為此,本文針對在實際的雕刻過程中為有效地讀取CAD軟件設計圖形的數據參數,對DXF文件數據格式,分析DXF文件的組成,根據DXF文件格式,通過C語言的文件管理功能,設計出了C語言與AutoCAD接口程序,在自行開發軟件與AutoCAD之間建立起了數據通道,從而實現了數據傳遞和共享。而本文所應用的雕刻控制平臺數控系統是一種新型的數控系統,它用一臺PC實現包括插補、伺服等功能在內的所有數控功能,使數控系統的結構大大簡化。這樣,一臺PC機既可用于CAD/CAM設計,又可用于控制雕刻機的運作,大大降低了整套設備的成本。基于本文設計的C語言與AutoCAD接口程序已成功應用在雕刻控制平臺數控系統,并取得了滿意的結果。

1 DXF文件

1.1 DXF文件概述

DXF是Drawing eXchange File的縮寫,意思為圖形交換文件,在工程制圖中有廣泛的應用,掌握了DXF文件的讀寫對編寫CAD軟件時的圖形信息的交換有重要意義。它有兩種格式:一種是ASCII DXF格式;一種是二進制DXF格式。ASCII DXF文件格式是ASCII文字格式的AutoCAD圖形的完整表示,這種文件格式易于被其他程序處理。二進制格式的DXF文件與ASCII格式的DXF文件包含的信息相同,但格式上二進制格式比ASCII格式更精簡,能夠節省百分之二十五的文件空間且可讀性強。

為了與其他軟件共享圖形數據,AutoCAD提供了DXF(Drawing Interchange Format)文件格式,此格式現已被廣泛使用,成為事實上的標準。通過DXF文件格式,可以使用高級語言開發程序讀取AutoCAD圖形文件,也可以創建DXF文件供AutoCAD打開。DXF一般情況下是文本文件,可以使用文本編輯器(如Windows記事本、寫字板)來查看、編輯其內容。

DXF文件是AutoCAD與外部聯系的主要接口方式,易于將AutoCAD的圖形轉換成CAD系統所能讀取的文件格式。.DXF文件是一種具有嚴格格式的順序文件.是以ASCII碼形式存放圖形信息的數據文件一個DXF文件包括了對應圖形數據庫中的所有信息。一個DXF文件可由高級語言程序生成,也可以由繪制的圖形使用DXFOUT命令生成該圖形的DXF文件。.DXF文件的實質是一組表達具體圖形的程序執行指令,只要按照格式標準調用DXF文件并按其組碼和組織執行對應的任務,即可將圖形重現。

1.2 DXF文件結構

由于DXF一般情況下是文本文件,因此DXF文件可以使用文本編輯器(如Windows記事本、寫字板)來查看、編輯其內容。用記事本打開一個DXF文件,可以發現它里面有這樣一些代碼:

0

SECTION

2

HEADER

9

$ACADVER

1

AC1015

……

即里面總是數字和字符串/數字在交替的出現。數字就叫做代碼 (通常稱為組碼),緊跟組碼數字的稱為關聯值對。DXF文件本質上由代碼及關聯值對組成。代碼(通常稱為組碼)表明其后的值的類型。使用這些組碼和值對,可以將DXF文件組織到由記錄組成的區域中,這些記錄由組碼和數據項目組成。在DXF文件,每個組碼和值各占一行。

一個完整的ASCII格式的DXF文件結構如下:

1)標題段(HEADER) 標題段包含圖形的基本信息,記錄AutoCAD系統的所有標題變量的當前值或當前狀態。標題變量記錄了AutoCAD系統的當前工作環境,如SNAP捕捉當前狀態、柵格間距式樣、當前圖層層名及線型、顏色等。

2)類段(CLASSES)類段由程序自己定義的各種類。

3)表段(TABLES)表段包含以下符號表的定義:

APPID(應用程序標識表)

BLOCK_RECORD(塊參照表)

DIMSTYLE(標注樣式表)

LAYER(圖層表)

LTYPE(線型表)

STYLE(文字樣式表)

UCS(用戶坐標系表)

VIEW(視圖表)

VPORT(視口配置表)

4)塊段(BLOCKS)塊段記錄了所用塊的塊名,當前圖層層名、塊的種類、塊的插入基點及組成該塊的所有成員。塊的種類分為圖形塊、帶有屬性的塊和無名塊3種。無名塊包括用HATCH命令生成的剖面線和用DIM命令所完成的尺寸標準。

5)實體段(ENTITIES)實體段記錄了每個實體的名稱、所在圖層及其名字、線型、顏色等。

6)對象段(OBJECTS)。包含圖形中的非圖形對象。

7)文件結束段(END OF FILE)DXF文件的結束標志。DXF 以”0”、”EOF”結束[3]。

每個段都以一個后跟字符串SECTION的組碼0開始,其后是組碼2和表示該段名稱的字符串 (例如,HEADER)。每個段都由定義其元素的組碼和值組成。每個段都以一個后跟字符串ENDSEC的組碼0結束。

有些組代碼會因表達環境的不同而有多個含義。在分析時需要根據不同的段和不同的表達而判斷[4]。表1部分常用的組代碼的含義[4],表2直線段的實體描述[5],表3圓的實體描述[5]。

表1 常用組代碼的含義Tab.1 Meaning of comm on group of code

表2 直線段的實體描述數據Tab.2 Entity describe data of a line segment

表3 圓的實體描述數據Tab.3 Entity description data of round

1.3 DXF文件處理流程

從DXF文件中檢索,當檢索到某個段時就轉到那個段的處理程序去處理。如檢索到HEADER段就轉入HEADER段的處理程序去處理。

圖1 DXF文件處理流程Fig.1 Flow chart DXF file handling

圖形的大部分信息都在實體ENTITIES段中,因此讀取實體段的內容很重要。讀取實體段的數據首先要考慮讀取數據的存儲方式,然后再進行后一步的處理或存入數據文件中。此處用鏈表結構來存儲。

各個實體的數據分成兩塊:公共數據塊和特殊數據塊。公共數據塊存儲每個實體都具有特征參數,如所在圖層,實體標識,線型名……。

特殊數據塊存儲每個實體特有的數據,如實體LINE,它里面有兩個端點的坐標值;實體CIRCLE中有圓心坐標值和半徑值等。

單個實體的數據處理方法:讀取一個實體的數據首先根據組碼“0”后的實體標識字符串來確定其為哪一種實體,然后再根據這個實體的具體情況來讀取數據。

2 C語言與AutoCAD的接口

2.1 接口程序設計方法

AutoCAD實體種類很多,每種實體對應一個接口函數,因此,接口程序包含的函數很多。本文僅以直線度和圓為例說明接口程序的設計方法。

為了方便引用,用結構體函數來定義直線和圓。本文目的是將讀取到的DXF文件中的直線和圓的信息,顯示在屏幕上。

1)直線段的接口程序 讀取直線的函數原型定義為:

typedef struct tagLine{

float x1,y1,z1;

float x2,y2,z2;

}LINE;

其中 x1,y1,z1 為直線的起點坐標,x2,y2,z2 為直線的終點坐標。在函數體中調用文件輸入輸出函數,按照表2示直線段的格式,若讀取到組代碼為“0”且組值為LINE時,將組代碼“10”,“20”,“30”后的起點坐標分別寫到 x1,y1,z1 里;最后將組代碼“11”,“21”,“31”后的終點坐標分別寫到 x2,y2,z2中。

2)圓的接口程序 讀取圓的函數原型定義為:

typedef struct tagCircle{

float x,y,z;

float r;

}CIRCLE;

其中x,y,z為圓心坐標,r為圓的半徑。在函數體中調用文件輸入輸出函數,按照表3圓的格式,若讀取到組代碼為“0”且組值為 CIRCLE 時,將組代碼“10”,“20”,“30”后的圓心坐標分別讀到 x,y,z里;最后將組代碼“40”后的圓的半徑讀到 r中[6]。

2.2 C語言讀取接口程序流程圖

本接口程序比較復雜,在合計時將程序分為主程序和兩個子程序來設計。主程序為整個程序的核心部分,它的主要功能是從DXF文件中讀取組代碼和組值,并將直線的起點及終點坐標和圓的圓心坐標及半徑值讀取出來,并存入指針中。兩個子程序分別是直線和圓的顯示程序,直線顯示子程序的功能是顯示所打開DXF文件中直線的條數,每條直線的起點X坐標、起點Y坐標、起點Z坐標、終點X坐標、終點Y坐標、終點Z坐標。圓的顯示子程序的功能是顯示所打開DXF文件中圓的個數,每個圓的圓心X坐標、圓心Y坐標、圓心Z坐標以及圓的半徑值。

調用接口程序來讀取DXF文件中圖形信息,要有一定的順序。圖2給出了讀取DXF文件中圖形信息的過程,具體步驟如下:

第一步:以“讀”的方式打開一個文本文件,并獲得文件指針dxf。

FILE*dxf; /*定義文件指針dxf*/

dxf=fopen(filename,“r”);/* 打開文件,并獲得文件指針 */

圖2 讀取DXF文件中圖形信息流程圖Fig.2 Flow chart Read DXF files,graphics information

第二步:從文本中讀取字符

fscanf(dxf,"%f",&code);/* 存放組碼值 */

fscanf(dxf,"%d",&value);/* 存放字符串 */

第三步:讀取幾何信息

if(code==0&&strcmp(codevalue,"LINE")==0);/* 讀取直線的信息*/

if(code==0&&strcmp(codevalue,"CIRCLE")==0); /* 讀取圓的信息*/

第四步:顯示子程序

void print1(EntityData*entity1);/* 直線的顯示子程序 */void print2(EntityData*entity2);/* 圓的顯示子程序 */

第五步:調用子程序

第六步:關閉文本文件。

fclose(dxf); /* 關閉文件 */

此外 DXF以”0”、”EOF”結束,因此在函數中可用 exit(0)、return(0)來表示文件結束。

而 feof(dxf);用來檢查文件是否結束,遇文件結束符(0或者EOF)返回非零值,否則返回0[7]。

3 程序調試

在AutoCAD中所畫的圖形(注意:本設計只適用于直線和圓,因此所畫的圖形只能是直線或者是圓)如圖3所示。

圖3 AutoCAD中的自定義圖形Fig.3 AutoCAD custom graphics

在如圖2所示的命令行中輸入DXFOUT,則系統會自動生成一個DXF文件,自行命名該DXF文件,將該文件保存在程序生成的可執行文件所在的文件夾中(可執行文件被系統自動放在debug文件夾中)。

再打開可執行文件,即可看到如圖4所示的結果。

圖4 接口程序生成的可執行文件打開后的界面Fig.4 Interface chart of interface program to generate the executable file to open

接下來可以根據界面上的提示進行操作。界面提示“請輸入文件名:”,我們可以輸入一個DXF文件的文件名,然后按回車鍵。

如果文件不能正常打開,界面上將會出現打開文件失敗,如果能正常打開,界面上將會出現正在讀取文件…。

并且界面將會顯示所打開DXF文件中直線的條數,每條直線的起點X坐標、起點Y坐標、起點Z坐標、終點X坐標、終點Y坐標、終點Z坐標以及所打開DXF文件中圓的個數,每個圓的圓心X坐標、圓心Y坐標、圓心Z坐標、圓的半徑坐標。

在界面上輸入我們所用例子的DXF文件名后,按回車,將會顯示如圖5所示。

圖5 接口程序的實例顯示結果Fig.5 Results of interface program examples show

該運行窗口中顯示了直線的個數和它們的各個起點和終點坐標以及圓的個數和它們各個圓心坐標和半徑值。并且與該DXF文件以記事本打開后的文件中所顯示的直線和圓的個數及坐標相對應,由此可見本軟件是成功的。

4 結束語

根據DXF文件格式,借助于C語言的文件管理功能,設計出了接口程序。在自行開發軟件與AutoCAD之間建立起了數據通道,把AutoCAD中的數據提取出來。在數控加工中應用課提高設計效率,縮短設計周期。

通過該軟件可以將在AutoCAD中所畫的圖形的信息(直線的起點和終點坐標,圓的圓心坐標和半徑)提取出來,然后通過一個數控程序將坐標信息傳遞給數控機床,數控機床[8-9]就能夠加工成和在AutoCAD中所畫的圖形一致的圖案。

這樣就省去了數控編程來實現加工的麻煩,提高了生產效率。

[1]宋耀增.AutoCAD DXF文件 C語言函數庫的研制[J].燕山大學學報,1998,22(4):304-309.SONG Yao-zeng.AutoCAD DXF file Clanguage function library development[J].Journal of Yanshan University,1998,2(4):304-309.

[2]竇憲民.AutoCAD接口技術研究[J].鄭州輕工業學院學報:自然科學,2002,17(2):86-88.DOU Xian-min.AutoCAD interface technology research[J].Zhengzhou Light Industry University:Natural Science,2002,17(2):86-88.

[3]陶元芳.C語言命令文件式參數繪圖函數集[J].太原重型機械學院學報,2002,23(2):107-112.TAO Yuan-fang.C language command file type parameter drawing function set[J].Taiyuan heavy machinery institute journal,2002,23(2):107-112.

[4]張金萍.DXF接口文件在復雜圖形數控加工中的應用[J].沈陽化工學院學報,2004,18(2):152-159.ZHANG Jin-ping.DXF interface files in nc machining of complex graphics application[J].Shenyang Institute of Chemical Journal,2004,18(2):152-159.

[5]鄧燕.AutoCAD2004中文版基礎與實例教程[M].北京:電子工業出版社,2004.

[6]譚浩強.C語言程序設計[M].3版.北京:清華大學出版社,2005.

[7]夏云龍.VC++深入詳解[M].北京:電子工業出版社,2008.

[8]王瀟.數控機床大推力永磁同步直線電機控制方法 [J].電子科技,2011(6):124-126.WANGXiao.Study on the control of the high thrust permanent magnet liner synchronous motor used in the numerical control machine[J].Electronic Science and Technology,2011(6):124-126.

[9]李周平.基于直線電機的數控機床驅動控制技術[J].現代電子技術,2012(3):158-160.LI Zhou-ping.Drive control technology of numerical control machine based on linear motor[J].Modern Electronics Technique,2012(3):158-160.

猜你喜歡
程序
給Windows添加程序快速切換欄
電腦愛好者(2020年6期)2020-05-26 09:27:33
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
基于VMM的程序行為異常檢測
偵查實驗批準程序初探
我國刑事速裁程序的構建
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
恐怖犯罪刑事訴訟程序的完善
主站蜘蛛池模板: 亚洲第一综合天堂另类专| 国产又爽又黄无遮挡免费观看| 无码区日韩专区免费系列| 无码乱人伦一区二区亚洲一| 中文字幕va| 午夜免费小视频| 四虎精品黑人视频| 亚洲精品自在线拍| 国产成人91精品免费网址在线| 欧美日韩中文国产| 欧美一区二区啪啪| 国产乱人乱偷精品视频a人人澡| 成色7777精品在线| 亚洲国产精品一区二区第一页免 | 亚洲国语自产一区第二页| 欧洲精品视频在线观看| 亚洲中文字幕97久久精品少妇| 71pao成人国产永久免费视频| 无码日韩人妻精品久久蜜桃| 久久久91人妻无码精品蜜桃HD| 91蝌蚪视频在线观看| 日本人又色又爽的视频| 国产福利大秀91| 四虎精品黑人视频| 最新日本中文字幕| 国产成人久视频免费| 亚洲va在线∨a天堂va欧美va| 亚洲精品动漫在线观看| 天堂成人av| 亚洲人成影院在线观看| 国产波多野结衣中文在线播放| 午夜色综合| 2020国产精品视频| 欧美在线导航| 亚洲va欧美va国产综合下载| 亚洲午夜国产精品无卡| 无码精品国产dvd在线观看9久 | 成年女人a毛片免费视频| 亚洲码一区二区三区| 97国产成人无码精品久久久| 精品国产网| 国产 在线视频无码| 国产成人精品在线| 毛片网站观看| 国产欧美日韩va| 免费视频在线2021入口| 日本午夜精品一本在线观看 | 中文字幕在线观看日本| 国产精品无码影视久久久久久久| 永久在线精品免费视频观看| 国产乱子伦无码精品小说 | 高h视频在线| 久久91精品牛牛| 一级一级一片免费| 在线播放真实国产乱子伦| 日本高清有码人妻| 2020国产精品视频| 国产成人亚洲精品无码电影| 91偷拍一区| www.国产福利| 国产精品免费p区| 国产午夜无码专区喷水| 制服丝袜亚洲| 91小视频在线播放| 婷婷丁香在线观看| 91福利免费| 国产素人在线| 国产精品男人的天堂| 玖玖精品视频在线观看| 91九色国产在线| 久久婷婷人人澡人人爱91| 亚洲视频一区在线| 久草网视频在线| 欧美日韩亚洲国产主播第一区| 国产99热| 又粗又硬又大又爽免费视频播放| 久久久久青草线综合超碰| 欧美高清国产| 香蕉蕉亚亚洲aav综合| 亚洲成年人网| 久操中文在线| 亚洲国产日韩视频观看|