下面來(lái)開(kāi)始講解一下CAD文檔和存儲(chǔ)圖形的一些原理,最后如何用代碼繪制一條線段。
在啟動(dòng)AutoCAD應(yīng)用程序進(jìn)行畫(huà)圖時(shí),CAD軟件會(huì)新建一個(gè)“Drawing1.dwg”文件;在這個(gè)dwg文件中可以繪制線段、多段線、圓、圓弧、樣條曲線等增加實(shí)體(Entity)圖形,也可以修改圖形位置,打斷、鏡像、復(fù)制、刪除等對(duì)實(shí)體圖形進(jìn)行編輯。在學(xué)習(xí)AutoCAD軟件使用時(shí),都是從最基本的創(chuàng)建圖形開(kāi)始進(jìn)行學(xué)習(xí);同樣,在學(xué)習(xí) .Net二次開(kāi)發(fā)時(shí),從創(chuàng)建基本的圖形對(duì)象開(kāi)始學(xué)習(xí)仍然是最有效的選擇,使用程序繪制一些圖形,當(dāng)程序運(yùn)行后,圖形窗口出現(xiàn)寫(xiě)出的圖形,這樣在學(xué)習(xí)的過(guò)程中就會(huì)產(chǎn)生濃厚的興趣。
CAD進(jìn)行處理圖形的過(guò)程中,實(shí)際上就是操作打開(kāi)的當(dāng)前文檔(Document),也是數(shù)據(jù)庫(kù)(Database)顯示給用戶(hù)看的視圖。dwg圖形其實(shí)也是一個(gè)輕量級(jí)的數(shù)據(jù)庫(kù)文件。一個(gè)Document與一個(gè)Database一一對(duì)應(yīng)。按照應(yīng)用程序(Application)的規(guī)定把Database中的對(duì)象顯示給用戶(hù),同時(shí)用戶(hù)對(duì)Document的操作也會(huì)通過(guò)Application回寫(xiě)到數(shù)據(jù)庫(kù),在這個(gè)過(guò)程中也會(huì)對(duì)文檔進(jìn)行鎖定和解鎖,以防止后臺(tái)修改數(shù)據(jù)庫(kù)時(shí)前臺(tái)文檔也在同時(shí)修改。
Application、Document和Database之間的關(guān)系如下圖所示:
Application、Document和Database關(guān)系圖
Database屬于ApplicationServices命名空間,在寫(xiě)程序之前先導(dǎo)入ApplicationServices命名空間。
獲取當(dāng)前打開(kāi)的活動(dòng)文檔方法
獲取數(shù)據(jù)庫(kù)的兩種方法
直接通過(guò)HostApplicationServices的WorkingDatabase屬性進(jìn)行獲??;
先獲取當(dāng)前文檔,然后在通過(guò)當(dāng)前文檔獲取對(duì)應(yīng)的數(shù)據(jù)庫(kù)。
關(guān)于AutoCAD數(shù)據(jù)庫(kù)的基本知識(shí)
表:數(shù)據(jù)庫(kù)的組成單位。在CAD圖形中包含9個(gè)符號(hào)表。
記錄:是表的組成單位,一個(gè)表中可能包含多條記錄,也可能不包含任何記錄。
CAD圖形的組成
向CAD添加圖元的基本步驟如圖:
添加實(shí)體流程圖
下面我們向CAD中添加一個(gè)實(shí)體、以一條線段為例。首先在Visual Studio2013中新建一個(gè)名稱(chēng)為AddLine解決方案。完整代碼如下:
添加線段代碼
【調(diào)試】——【啟動(dòng)調(diào)試】或者按“F5”(有關(guān)調(diào)試配置可以參考第一篇文章:C#程序?qū)utoCAD二次開(kāi)發(fā)(一)),啟動(dòng)AutoCAD應(yīng)用程序,在命令行輸入Netload,加載“AddLine.dll”文件。
加載應(yīng)用程序
輸入ADDLINE命令,程序在模型空間就繪制出一條起點(diǎn)(100, 100, 0),終點(diǎn)(600, 600, 0)的直線。如下圖:
程序繪制的線段
總結(jié):這篇文章主要講了CAD文檔(Document)的組部分、Document與圖形數(shù)據(jù)庫(kù)(Database)之間的關(guān)系,以及向CAD文檔中添加圖形過(guò)程中要經(jīng)過(guò)的幾個(gè)步驟;并且用代碼向模型空間中添加了一個(gè)線段(實(shí)體[Entity])、添加圖形到數(shù)據(jù)中必須根據(jù)需要以“讀”或者“寫(xiě)”的方式進(jìn)行“打開(kāi)”塊表(BlockTable)和塊表記錄(BlockTableRecord),不然程序就會(huì)產(chǎn)生致命錯(cuò)誤等情況。在以后的學(xué)習(xí)中我們也會(huì)詳細(xì)講解添加其他類(lèi)型的實(shí)體到文檔中,比如多段線,圓、圓弧等,以及事務(wù)處理和ObjectId的使用等課程的學(xué)習(xí)。
本文鏈接:http://www.dzac.com.cn/blog/384.html
本文標(biāo)簽: