CAD中的dxf文件解析(一):準備工作

  1.引言

       CAD是工程中常見的畫圖軟件,dxf是CAD中經常用到的文件,在工作中有用到對dxf文件進行解析的情況。這篇文章將說明如何用代碼將dxf文件中的信息解析出來。

 

2.dxf文件(可以瞭解一下)

       DXF是一種開放的矢量數據格式,可以分爲兩類:ASCII格式和二進制格式;ASCII具有可讀性好的特點,但佔用的空間較大;二進制格式則佔用的空間小、讀取速度快。

       DXF文件是由很多的"代碼"和"值"組成的"數據對"構造而成,這裏的代碼稱爲"組碼"(group code),指定其後的值的類型和用途。每個組碼和值必須爲單獨的一行的。

       DXF文件是由很多的"代碼"和"值"組成的"數據對"構造而成,這裏的代碼稱爲"組碼"(group code),指定其後的值的類型和用途。每個組碼和值必須爲單獨的一行的。

       DXF 文件的基本組成如下所示:

●HEADER 部分 - 圖的總體信息。每個參數都有一個變量名和相應的值。

●CLASSES 部分 - 包括應用程序定義的類的信息,這些實例將顯示在 BLOCKS、ENTITIES 以及

●OBJECTS 部分-通常不包括用於充分用於與其它應用程序交互的信息。

●TABLES 部分 - 這部分包括命名條目的定義。

Application ID (APPID) 表

Block Recod (BLOCK_RECORD) 表

Dimension Style (DIMSTYPE) 表

Layer (LAYER) 表

Linetype (LTYPE) 表

Text style (STYLE) 表

User Coordinate System (UCS) 表

View (VIEW)表

Viewport configuration (VPORT) 表

●BLOCKS 部分- 這部分包括 Block Definition 實體用於定義每個 Block 的組成。

●ENTITIES 部分 - 這部分是繪圖實體,包括 Block References 在內。

●OBJECTS 部分 -- 包括非圖形對象的數據,供 AutoLISP 以及 ObjectARX應用程序所使用。

●THUMBNAILIMAGE 部分 -- 包括 DXF 文件的預覽圖。

●END OF FILE

 

3.開始進入解析(先從文件的ASCII碼中的組碼解析)

      需要準備dxf的解析庫dxflib,鏈接如下:

   https://download.csdn.net/download/weixin_40196271/12471365

      以及在CAD中安裝好幫助文件。可以去官網進行下載,需要安裝在CAD中

https://knowledge.autodesk.com/zh-hans/support/autocad/learn-explore/caas/downloads/downloads/CHS/content/download-install-autocad-2021-product-help.html

     也可以用下面的鏈接進行下載,直接的幫助文檔

https://download.csdn.net/download/weixin_40196271/12471381

      一般我們需要解析的部分會有兩個,一個是dxf中的層的信息,一個是具體的圖中的線,圓,圓弧,多段線等信息。

先來解析層。

(1)層的解析

層信息可以通過TABLES部分來進行解析。以下是幫助文檔中對layer做的說明,打開dxf文件,查找到TABLES中layer的部分,可以對照找到相關的層的信息。

dxflib中也是通過組碼的信息來解析具體信息的。通常層信息比較有用的是圖層名的信息。

(2)線的解析

線的信息可以通過ENTITIES部分來進行解析。以下是幫助文檔中對line的說明。

其中10,20,30後面對應的數字爲起點的x,y,z左邊,11,21,31後面對應的數字爲終點的x,y,z座標。

(3)圓的解析

圓的信息可以通過ENTITIES部分來進行解析。以下是幫助文檔中對circle的說明。

其中10,20,30爲x,y,z對應的圓心座標,40爲圓的半徑。

(4)圓弧的解析

圓弧的信息可以通過ENTITIES部分來進行解析。以下是幫助文檔中對arc的說明。

其中,10,20,30爲x,y,z的圓心座標,40爲圓的半徑,50爲圓的起點角度(弧度制),51爲圓的終點角度(角度制)

(5)多段線的解析

多段線的信息可以通過ENTITIES部分來進行解析。多段線是由多個角點連接起來的。一般我們解析LWPOLYLINE,POLYLINE屬於舊版本了,不過有的時候也會出現。以下是幫助文檔中對lwpolyline的說明:

其中,90爲多段線中角點的個數,10,20爲多段線中的角點的x,y座標,42爲角點的凸度,爲角點對應的圓弧的圓心角的四分之一的正切(這麼說有點複雜,後面會具體講到)。一般我們會把角點信息進一步解析出來,變成線和圓的信息。

(6)橢圓的解析

橢圓的信息可以通過ENTITIES部分來進行解析。以下是幫助文檔中對ellipse的說明。

其中,10,20,30爲橢圓圓心的x,y,z座標。11,21,31爲相對於中心的長軸端點的x,y,z座標,40爲短軸與長軸的比例,可以用來計算長短軸半徑。41,42爲起始和終止角度(弧度制)。

 

4.未完待續

由於內容較多,具體的用dxflib中的解析見下一篇

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章