天天看點

DXFLib開發注解DXFLib開發包注解

DXFLib開發包注解

DXF格式檔案時AutoCAD繪圖交換檔案,用于其他平台或者程式與CAD進行資料互動用的一種格式檔案,在工程中十分常見。DXFLib是解析DXF格式圖元的開源庫檔案,用C++實作。通過定義和實作了幾個類及其方法來讀取、解析和分類原CAD圖形檔案中的幾乎所有元素(圖層、點、直線、圓、标注、線型、線寬等)。結合DXFLib,網上已有許多開源代碼用于實作程式對CAD檔案的讀取,但很少分析DXFLib裡的結構流程的。筆者這段時間恰好開發完成這一子產品,簡單做個總結。

  • 1.DXF檔案格式

HEADERS——檔案頭域,表示圖的總體資訊,包括AutoCAD的檔案版本号和一些系統變量;

CLASSES——類域,有關應用程式定義類的資訊;

TABLES——表域,符号表的資訊;

BLOCKS——塊域,塊定義群組成圖形中每個塊引用的圖形圖元;

ENTITIES——實體域,這部分是繪圖實體,即圖形中的圖元,儲存了真實的幾何實體,還包括塊引用,是DXF檔案的主題部分;

OBJECTS——對象域,包括非圖形對象的資料,可以使用AutoLISP或objectARx等二次開發程式讀取;

THUMBNAILJMAGE——圖形的預覽資訊;

EOF——表示DXF檔案的結尾;

  • 2.各類頭檔案及其作用

DL_Codes——定義各類常量,如版本、點、顔色等;

DL_Attributes——DXF檔案屬性,如圖層、顔色、線寬、線型等;

DL_Entities——定義每個元素(直線、點、圓弧、圓等)的具體資料(結構體);

DL_Element——定義DXF中每個元素(類)

定義每個類的枚舉變量及索引,如DL_Block, DL_Layer等;

屬性private:DL_Type EleType; //元素類型

int indexofBlock; //元素所在塊的索引

int indexofDXFlist; //DXFList中元素的索引值

DL_CreationInterface——抽象基類,定義各種方法接口(虛函數,不實作),如addLine(), addLayer(), addPoint()等;

DL_CreationAdapter——覆寫DL_CreationInterface提供的接口(但同樣不實作)

DL_Dxf——讀寫dxf檔案,讀取dxf檔案中所有資料,分類添加到DXFList中;

使用者自定義類:

DL_Data——覆寫DL_CreationAdapter提供的接口,定義實作

定義方法:addtoList(): 添加元素到清單DXFList

addtoBlockList()

定義屬性:

元素索引值:numofInset, numofPoint, numofLine, numofArc等;

元素清單:QList<DL_Element*> DXFlist;

QList<DL_Block*>DXFBlockList;(Qt裡開發的,用上了Qt自帶的結構QList)

  • 3.元素類型定義
typedef int DLType;	//Element類型
#define  DLUnkown		0
#define  DLLayer		1
#define  DLBlock		2
#define  DLPoint		3
#define  DLLine			4
#define  DLArc			5
#define  DLCircle		6
#define  DLEllipse		7
#define  DLPolyline		8
#define  DLVertex		9
#define  DLSpline		10
#define  DLControlPoint 11
#define  DLKnot			12
#define  DLInsert		13

           
  • 4.讀取DXF檔案程式流程

變量定義:

DL_Data *dxfdata = new DL_Data(); //使用者自定義類DL_Data

DL_Dxf *dxf = new DL_Dxf();

DXFLib開發注解DXFLib開發包注解

繼續閱讀