王 蕊(遼寧建筑職業學院,遼寧遼陽,111000)
?
基于ObjectARX和SQL Server的AutoCAD圖形數據存儲
王 蕊
(遼寧建筑職業學院,遼寧遼陽,111000)
摘要:本文介紹了基于ObjectARX和SQL Server進行AutoCAD圖形數據存儲設計和實現的過程,將數據庫技術與AutoCAD軟件技術進行了有效的集成,為AutoCAD的二次開發提供了一個全新的視角。
關鍵詞:ObjectARX;SQL Server;AutoCAD;數據庫;存儲
隨著AutoCAD軟件在各個領域應用的不斷深入,對其進行二次開發,開發出適用實際工作需要的軟件,提升AutoCAD基礎軟件的功能是非常必要的。
1.1 提升工程預算中統計、匯總的計算能力
將AutoCAD中的圖形數據文件轉換成SQL Server 的數據庫文件,利用SQL Server數據庫強大的統計和匯總功能來提升AutoCAD在統計、匯總等工程預算中的計算能力。
1.2 縮短二次開發的周期
將轉換后的AutoCAD圖形數據文件作為模塊,其具有應用廣泛、通用性強、可移植性等特點,降低了二次開發難度,縮短了開發周期,節省了開發成本。
1.3 可以對圖形數據進行批量修改
在AutoCAD繪制圖形過程中,需要對圖層、線性、塊等屬性進行修改,將AutoCAD中的圖形數據文件轉換成的數據庫文件后,可以修改數據庫文件中字段屬性值從而對AutoCAD圖形進行快速、精準、批量的修改。
1.4 保證數據的一致性,實現圖紙的批量化管理
AutoCAD圖紙中,如平面圖、立面圖、剖面圖之間數據相互交叉、參照,可以利用SQL Server 提供的事假回滾、索引查找、用戶驗證等機制來確保數據的一致性,并實現圖紙的批量管理。
基于AutoCAD體系結構的開放性,采用ObjectARX[1]作為系統的開發工具,使用VC++平臺建立AutoCAD圖形數據庫和SQL Server 數據庫之間的關聯,利用SQL Server 數據庫的在數據處理方面的優勢協助管理AutoCAD的圖形數據。
2.1 ObjectARX
ObjectARX是AutoDesk公司針對AutoCAD平臺上的二次開發而推出的一個開發軟件包,提供了以C++為基礎的面向對象的開發環境和應用程序接口。ObjectARX目前最新的版本是ObjectARX2015,其是目前最為高效的開發AutoCAD的工具。ObjectARX具有直接快速訪問AutoCAD圖形數據庫、建立與AutoCAD編輯器的交互、使用MFC創建標準的圖形用戶界面,在其基類的基礎上自定義類、可以和其他編程環境進行交互等強大功能。
2.2 開發環境
運用ObjectARX進行AutoCAD二次開發,必須首先設置好ObjectARX的開發環境。目前常用的開發環境是Microsoft Visual C++ 6.0 、Microsoft visual studio 2005、Microsoft visual studio 2008、Microsoft visual studio 2010。同時,還需要安裝ObjectARX SDK。
在利用ObjectARX進行AutoCAD二次開發前,必須要對圖形數據庫進行深入的了解,才能實現和SQL Server數據庫之間的相互連接。
AutoCAD本質上是一個圖形數據庫管理程序,程序中記載著圖形中所有對象的信息,包括圖形對象和非圖形對象。圖形對象,如直線、矩形、橢圓等;非圖形對象,如圖層、標注、線性等;每個對象都有自己的屬性、方法,每一個AutoCAD圖就是這些對象的集合。
4.1 系統的功能性描述
1)系統進入前需要在彈出的登錄窗口內輸入數據庫名、用戶名、密碼,輸入正確才能連接用戶建立的數據庫,進入AutoCAD軟件,進行圖形繪制。
2)根據需要選擇需要存儲的圖形,將該圖形中的對象存儲到其相應的SQL Server數據庫表中。
3)根據需要從SQL Server數據庫表中提取圖形數據,重新繪制AutoCAD圖形。
4)用戶可以查詢、修改、編輯、刪除圖形數據,系統要保證AutoCAD圖形數據和SQL Server數據的一致性。
4.2 系統功能模塊的劃分及系統框架
根據系統的功能性分析,將系統劃分成四個功能模塊:系統登錄模塊、數據選取模塊、存儲轉化模塊、圖形繪制模塊。系統框架如圖1所示。

圖1 系統基本結構
4.3 SQL Server數據庫結構的設計
4.3.1 概念模型的設計
概念模型設計主要是在SQL Server中建立與AutoCAD圖形數據相對應的、合理表格及字段項、設置關鍵字、有效性規則、數據完整等。針對AutoCAD圖形中每個對象都建立一個表格來存儲從AutoCAD數據庫中提取出來的數據。例如:分別建立存儲圓、橢圓、圖層等各個實體的表格,表格中根據實體的屬性設置不同的字段。以直線為例,建立一個名為line-table的表格,表格中設置了14個字段,分別為 id、tuzhi_id 、startpoint_ X 、startpoint_Y、startpoint_Z 、endpoint_X、endpoint_ Y、endpoint_Z、color、linetype、linetype_scale 、visibility、layer、line_weight ,通過它們來存儲直線的ID號、圖紙的編號、直線的起始坐標、終點坐標、顏色、線型、線型比例、可見性、圖層名、線寬屬性值。同樣的方式,設計其他實體所對應的表格。
4.3.2 邏輯模型的設計
邏輯模型設計是將實體以及實體之間的關系反映到數據表之間的關聯上,可以用E-R圖表現出來。
5.1 基本實體圖形數據轉化
AutoCAD圖形是由若干基本實體圖形組成,因此實現AutoCAD圖形數據和數據庫間的轉化,就是基本實體之間的轉化。進一步就是基本實體屬性和存儲實體的數據表中字段之間的轉化。設計兩類函數,一類是將基本實體的屬性寫入到數據庫表中,另一類是從SQL Server數據庫表中讀取相關數據,調用ObjectARX中繪制基本實體的方法繪制出AutoCAD基本實體。
5.2 圖塊實體的轉化
在圖形的繪制過程中,會生成許多塊,如建筑圖紙中的窗塊、門塊,是由若干實體組成。在進行圖塊的存儲時,利用迭代器,遍歷AutoCAD圖形檢索出組成圖塊的若干實體,然后使用函數Explode()將其分解成若干個基本實體。利用基本實體轉化的方法來進行圖塊實體的轉化。
5.3 繪圖模塊的實現
5.3.1 創建AutoCAD不同的實體
將圖形對象和非圖形對象分成實體類,如:線型類實體、文本類實體、填充類實體、標注類實體,每一個類都有相應的成員、函數、屬性。通過調用每一類自身成員函數從而生成不同類的實體對象,完成圖形數據庫的相關操作。
5.3.2 創建AutoCAD圖形對象步驟如下:
(1)Ac Db Host Application Services()->workingDatabased()->getSymbolTable(,)
創建或打開圖形數據庫,并獲取塊表指針
(2)pBlocktable->getAt( , ,)pBlocktable->close()
獲取當前塊表指針,并關閉塊表
(3)調用實體構造函數、其它成員函數完成實體的創建、屬性設置和編輯;
(4)將appendAttribute()函數返回的ID號保存到AcDbObjectId類型變量中。
(5)pBlocktableRecord->appendAcDbEntity(,)添加記錄。
(6)pBlocktableRecord->colse(),pLine->close()關閉塊表記錄和實體對象。
非圖形對象的創建方法參照圖形對象的創建方法。
5.3.3 AutoCAD 圖形對象和非圖形對象的關聯
非圖形對象表是對繪圖環境進行設置的,要把圖形對象和非圖形對象進行關聯才能最終繪制出需要的AutoCAD 圖形。常用的圖層表、文本樣式、尺寸樣式的關聯方法不同。圖層的關聯通過setlayer()來實現的,關聯文本樣式通過setTextStyle(),通過預先定義好的函數來關聯尺寸標注樣式。
基于ObjectARX和SQL Server的AutoCAD圖形數據庫系統,是針對一般的AutoCAD圖形數據的存儲、管理問題,所以其具有通用性,可以將這一功能定義成一個模塊,可以在其他的ObjectARX開發程序中直接調用,擺脫兩種數據文件復雜的轉化過程,具有實用性。
參考文獻
[1]張帆 朱文俊AutoCAD ObjectARX(VC)開發基礎與實例教程[M].中國電力出版社,2014.06
[2]董玉德,趙韓.CAD二次開發理論與技術[M].合肥:合肥工業大學出版社,2009.11
Auto CAD graphics data storage based on ObjectARX and Server SQ
Wang Rui
(LIAONING JIANZHU VOCATONAL UNIVERSITY,LiaoNing LiaoYang,111000)
Abstract:This paper introduces based on ObjectARX and SQL server of AutoCAD graphic data storage design and implementation process, the database and AutoCAD software techniques for effective integration, for the secondary development of AutoCAD provides a new perspective.
Keywords:ObjectARX;SQL Server;AutoCAD;database;storage
作者簡介
王蕊(1980.9-),女,遼寧省遼陽市人,碩士,講師,計算機科學與技術專業。