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

基于DWGDirect訪問AutoCAD DWG圖形文件

2010-09-25 02:57:54韻,
圖學學報 2010年6期
關鍵詞:數據庫信息

晏 韻, 許 超

(東南大學,江蘇 南京 210096)

基于DWGDirect訪問AutoCAD DWG圖形文件

晏 韻, 許 超

(東南大學,江蘇 南京 210096)

文章介紹了DWG文件的數據格式和利用DWGDirect C++函數庫進行接口程序開發的主要流程。DWG文件分為頭部、實體部、表部、塊實體部和應急頭部5個部分,對各部分的存儲信息給予了簡要介紹。DWGDirect是開放設計聯盟(Open Design Alliance)開發的函數庫,可以脫離 AutoCAD平臺實現對 DWG文件的讀寫操作。針對CAD/CAM應用軟件,討論了對DWG文件中加工圖素的讀取操作實現方法,并給出部分C++代碼。

計算機應用;DWGDirect C++;DWG文件;AutoCAD

AutoCAD是美國Autodesk公司設計的計算機輔助設計軟件,已經成為國際上廣為流行的繪圖工具。DWG文件格式也成為二維繪圖的事實標準格式。因此,對于國內開發的眾多CAD/CAM軟件而言,兼容DWG格式是極其重要的一環。鑒于使用AutoCAD本身提供的開發工具包如AutoLISP、ADS、ARX以及VBA等開發出來的程序都無法脫離AutoCAD平臺本身[1]。而且Autodesk公司提供的數據轉換格式DXF存在閱讀時內存資源消耗大,處理速度慢等缺點。對于批量文件,全部轉化為DXF格式也很困難。因此,隨著信息集成化程度愈來愈高,在獨立平臺上自由讀取DWG文件顯得相當重要。

DWG文件格式尚未公開,獨立開發接口程序存在相當的難度。而且隨著AutoCAD升級,DWG文件會或多或少相應變化,造成讀寫困難。幸運的是,開放設計聯盟(Open Design Alliance)提供了一套函數庫DWGDirect,開發人員只要對DWG文件的整體結構有一定了解,再結合圖形的特點,就可以輕松實現DWG文件的自由讀寫操作。

1 DWG文件結構

(1) DWG文件數據類型

DWG文件為二進制格式文件,共有5種數據形式:字符型,單字節型,雙字節整型,四字節整型和以IEEE標準存儲的浮點數(即雙精度浮點數)。

(2) DWG文件整體結構

DWG文件包含5個部分:頭部、實體部、表部、塊實體部和應急頭部[2],如圖1所示。

圖1 DWG文件總體結構

文件頭存儲一些重要信息,如DWG文件標志,版本信息,各種索引地址以及一部分系統變量[2]。圖形數據包括實體數據,塊數據和表數據。實體是AutoCAD中的基本圖形單元,線、圓、弧、文本、實心體、區域、復合線和橢圓都是實體,用戶可以在屏幕上看見實體并能對其進行操作。實體數據由實體頭和實體尾組成,實體頭表述實體的共同屬性,不同實體頭結構一樣。而實體尾部的長度及格式與類型編號及特征值有關,各不相同[3]。當用戶生成塊時,AutoCAD自動創建相應的塊表以便檢索。每個塊兩端均為起始實體和結束實體,中間為各種實體元素。表是AutoCAD為方便檢索而引入的數據結構,如塊表,層表,線型表,字型表等。

應急頭部主要存儲一些重要信息的副本,防止文件頭部損壞導致整個文件數據的丟失。

圖2為DWGDirect中DWG文件的數據模型。圖中其他類型表包括視圖表、文本表、線型表、尺寸表、視口表、用戶坐標系表、注冊應用表等。方框左上角的數字表示對應項目數量。

圖2 DWGDirect數據模型

2 利用 DWGDirect讀取 DWG 文件步驟

2.1 DWGDirect C++ Libraries類介紹

DWGDirect中的類有固定的命名規則,如OdRx——表示運行時類注冊和識別的類,OdDb——表示數據庫類,OdGi——表示數據庫類對象矢量化的類,OdGe——通用圖形類(點和矢量)等。數據庫類表示圖素信息,是一般接口程序的研究重點。以直線類OdDbLine為例:

由以上直線類定義可知,成員函數不僅可以讀出實體信息,而且可以設置實體信息,這就為DWGDirect讀寫DWG文件提供了方便。

2.2 讀取DWG文件步驟

(1) 添加DWGDirect Libraries

在編輯接口程序的工程中添加 DWGDirect include目錄下的頭文件,這些頭文件對相關的類做了定義,用戶使用時可以方便調用,重寫或者派生出自定義的對象類。同時還要添加 lib目錄下的庫文件。

(2) 創建自定義服務和DWGDirect對象

在 DWGDirect具體應用時,往往需要自定義服務和DWGDirect對象。

DWGDirect允許客戶程序執行幾種服務,如狀態標定(文件加載,保存等),字體文件定位等。這些服務在OdDbHostAppService類中定義。每個數據庫實例都有相關的OdDbHostAppService對象,這種關聯由以下方式獲得:

·OdDbHostAppService實例調用

creatDatabase(),創建新的空數據庫對象,與該數據庫相關的服務對象就是創建它的實例。

· 客戶程序調用

OdDbHostAppService::readFile()或者OdDbHostAppService::recoverFile(),將返回的數據庫與期望得到的OdDbHostAppService實例聯系起來。

DWGDirect對象均由現有類派生而來,如OdDbEntity,OdDbObject,一般自定義應用要求重寫下面6個函數:

virtual bool OdDbEntity::worldDraw(OdGiWorldDraw *pWd ) const; //由OdDbEntity派生類調用,能獨立在任何模型空間或者圖紙空間表示實體

virtual void OdDbEntity::viewportDraw

(OdGiViewportDraw *pVd ) const; //調用無限制,建立與視圖相關的實體表示法OdResult dwgInFields(OdDbDwgFiler*pFiler);//從 DWG文件裝載自定義實體時調用該函數

void dwgOutFields(OdDbDwgFiler* pFiler)const; //將自定義實體保存到DWG文件時調用該函數

OdResult dxfInFields(OdDbDxfFiler* pFiler);//從DFX文件裝載自定義實體時調用該函數

void dxfOutFields(OdDbDxfFiler* pFiler) const;//將自定義實體保存到DFX文件時調用該函數

需要注意的是,客戶程序要在創建任何DWGDirect對象之前調用OdInitialize(),它優先于任何DWGDirect的函數調用。所有的DWGDirect調用完成之后,要調用OdUninitialize()刪除所有DWGDirect對象(除了傳遞給 Initialize()的OdDbSystemService指針)。

(3) 復雜實體的處理

在DWG文件中存在一些包含其他對象的復雜實體,這些對象保存著實體的幾何圖形信息。可以用 explode()函數把一些實體分解成一系列簡單的元素,如長方體能被先分解成面,再分解成直線,多義線則能被分解成直線段和圓弧段,多行文字能被分解成單行文字,等等。主要程序如下://將分解的塊表記錄添加到鏈表中

然后只需按照普通實體的操作方法讀取所需的加工圖素。

(4) 實體的讀取實現

實體的讀取要依次遍歷塊表,塊表記錄和每個實體數據。下面的函數實現對實體的遍歷:

關于具體實體信息的讀取,限于篇幅,這里不再詳述。

(5) 數據轉換

讀取實體信息之后需要把數據轉換為用戶程序的數據類型,才能實現文件信息的正確顯示。以國外 CAM 軟件 ProCAM 為例,需要將DWGDirect 4×4矩陣轉化為4×3的矩陣,從而在ProCAM中實現線型、字符、加工圖素、坐標、尺寸、引導線等信息的正確讀取,如圖3所示。

(6) 關閉實體

必須注意,無論何時打開數據庫對象,應盡可能早的關閉。如果使用了擴展協議類,需要利用函數delXs()刪除協議擴展。

圖3 ProCAM直接讀取DWG文件

3 結 束 語

利用DWGDirect直接讀寫DWG文件,簡單方便,不需要花費大量的人力物力開發接口程序。但是,由于需要進行數據轉換,讀寫較大DWG文件時速度較慢。另外,盡管開放設計聯盟(Open Design Alliance)能較快地更新函數庫,但是相對AutoCAD的最新版本仍然不可避免地存在滯后性,而且由于開發的不系統性導致函數庫中存在一些錯誤。在CAM應用中最關鍵的是加工圖素的圖形轉換和讀取,這是本文討論的重點。希望這里介紹的思路幫助讀者開發類似應用接口提供參考,并利用DWGDirect完善DWG文件的讀寫雙向操作。

[1]萬明民, 顧景文. AutoCAD圖形數據格式的分析[J].工程圖學學報, 2004, 25(1):34-36.

[2]孫向紅. 圖形文件DWG數據格式及信息傳遞[J]. 西安科技學院學報, 2001, (4):372-374.

[3]黃維豐, 李橋梁, 吳洪濤. 基于OpenDWG Toolkit訪問 AutoCAD DWG 圖形文件[J]. MODERN COMPUTER, 2003, (1):69-72.

Accessing AutoCAD DWG Graphic Files with DWGDirect

YAN Yun, XU Chao
( Southeast University, Nanjing Jiangsu 210096, China )

The data format of AutoCAD DWG files and the main steps for developing the interfaces with DWGDirect C++ Libraries are presented in the paper. DWG file consists of five parts:header, entities, tables, blocks and contingency header, and the information storage of each part is briefly given. DWGDirect, a library developed by the Open Design Alliance, can be used to read and write DWG files without AutoCAD platform. With the method, the realization of how to access part entities for a CAD/CAM software is discussed and a part of C++ codes is introduced also.

computer application; DWGDirect C++; DWG file; AutoCAD

TP 391.72

A

1003-0158(2010)06-0178-04

2009-02-24

晏 韻(1984-),男,湖南株洲人,碩士研究生,主要研究方向為鈑金CAD/CAM。

猜你喜歡
數據庫信息
數據庫
財經(2017年15期)2017-07-03 22:40:49
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
數據庫
財經(2017年2期)2017-03-10 14:35:35
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
展會信息
中外會展(2014年4期)2014-11-27 07:46:46
數據庫
財經(2010年20期)2010-10-19 01:48:32
信息
建筑創作(2001年3期)2001-08-22 18:48:14
健康信息
祝您健康(1987年3期)1987-12-30 09:52:32
主站蜘蛛池模板: 亚洲人在线| 三级视频中文字幕| 国产欧美日韩专区发布| 四虎永久在线视频| 国产成人一区| 色窝窝免费一区二区三区 | 性色一区| 福利国产微拍广场一区视频在线 | 亚洲欧美另类中文字幕| 欧美一区二区人人喊爽| 国产91熟女高潮一区二区| 国产主播在线一区| 亚洲国产无码有码| 97精品伊人久久大香线蕉| 国产在线视频欧美亚综合| 1769国产精品视频免费观看| 97se亚洲综合| 久精品色妇丰满人妻| 亚洲精品人成网线在线| 88国产经典欧美一区二区三区| 亚洲国产高清精品线久久| 欧美日韩精品在线播放| 亚洲va在线∨a天堂va欧美va| 日韩中文精品亚洲第三区| 欧美在线视频a| 国产97公开成人免费视频| 国产美女主播一级成人毛片| 色天天综合| 亚洲欧洲天堂色AV| 亚洲AⅤ波多系列中文字幕| 国产三级韩国三级理| 美女国产在线| 五月丁香在线视频| 国产日韩欧美在线播放| 色婷婷电影网| 国产成本人片免费a∨短片| 日韩欧美国产另类| 波多野结衣一区二区三区四区| 免费xxxxx在线观看网站| 日韩AV无码一区| 欧美成人怡春院在线激情| 精品视频第一页| 这里只有精品免费视频| 日韩精品免费在线视频| 华人在线亚洲欧美精品| 精品三级网站| 欧美全免费aaaaaa特黄在线| 欧美一级片在线| 国产精品极品美女自在线| 国产男女免费完整版视频| 91综合色区亚洲熟妇p| 日韩福利在线观看| 免费 国产 无码久久久| 亚洲一级毛片在线观| 色精品视频| 国产青青草视频| 久久人与动人物A级毛片| 国产福利不卡视频| 久久先锋资源| 91 九色视频丝袜| 欧美国产综合视频| 99精品视频九九精品| 亚洲无限乱码一二三四区| 日本91视频| 思思热精品在线8| 91九色最新地址| 免费A级毛片无码免费视频| 久久性妇女精品免费| 亚洲国产成人综合精品2020| 91麻豆精品国产91久久久久| 国产丝袜一区二区三区视频免下载| 91美女视频在线观看| 99re热精品视频国产免费| 自拍亚洲欧美精品| 亚洲人成影院在线观看| 香蕉久久国产精品免| 国产91高跟丝袜| 亚洲精品va| 99资源在线| 欧美日韩一区二区三| 无码精品国产dvd在线观看9久| 天天躁夜夜躁狠狠躁躁88|