陳 偉(中國水利水電第七工程局有限公司,四川成都 610081)
AutoCAD圖形數(shù)據(jù)庫的訪問及其在測繪工作中的應(yīng)用
陳偉
(中國水利水電第七工程局有限公司,四川成都610081)
Auto CAD繪圖軟件是一個具備良好界面的大型微機測繪軟件,因此在工業(yè)設(shè)計、建筑設(shè)計等方面的測繪應(yīng)用十分的廣泛。在Auto CAD不斷發(fā)展的過程中存在了好幾個版本,每一個版本的圖形數(shù)據(jù)庫的訪問和信息處理都需要對其數(shù)據(jù)庫的結(jié)構(gòu)進行探測和識別,這樣才能在測繪應(yīng)用的過程中更加的得心應(yīng)手,本文就對不同版本的CAD軟件的測繪應(yīng)用進行分析。
圖形數(shù)據(jù)庫訪問測繪
若采用CAD對圖形進行繪制和修改的同時還能對其復(fù)雜且龐大的數(shù)據(jù)庫進行管理,那么可以在任何時間對數(shù)據(jù)庫中的任何數(shù)據(jù)進行添加、修改和刪除處理,從而盡量保證數(shù)據(jù)庫中的數(shù)據(jù)和與計算機屏幕中的圖像保持一致,由此來看CAD不僅是一個圖形測繪軟件,同時還是一個圖形數(shù)據(jù)庫管理程序。很多時候在設(shè)計人員使用CAD軟件時都需要對其進行二次開發(fā)處理,那么在開發(fā)之前就應(yīng)該對目前最常用的開發(fā)技術(shù)進行全面的了解,從而才能開發(fā)出適合自己使用的編輯命令,逐漸完善其中的功能缺陷。
在軟件開發(fā)商技術(shù)不斷成熟的過程中,其會不斷的對該軟件進行升級,在升級的過程中其圖形數(shù)據(jù)庫也在不斷的發(fā)生變化,比如拿Auto CAD12版本和Auto CAD2000版本作比較,我們使用復(fù)合線命令畫一條(2.5,3.2),(6.6,3.3)作為兩個端點,且存在(4.0,6.0)結(jié)點的復(fù)合線,在AutoCAD12版本中其數(shù)據(jù)表如下所示:
((-1.<Entity name:600 001 98>)(0.“Polyline)(8.“0)(66. 1)(10 0.0 0.0 0.0)(5.“E)(70.0)(40.0)(210 00 0.0 1.0)(71.0)(73. 0)(74.0)(75.0))。
在Auto CAD2000的數(shù)據(jù)表為:
((-1.<Entity name:1f6e430)(0.“Lwpolyline”)(330.<Entity name:1f6e100)(5.“E)(100.AcDbEntiyt)(67.0)(410.“Model”)(8.“0”)(100.AcDbpolyline)(90.3)(70.0)(43.0.0)(38.0.0)(39.0.0)(10 2. 500 003.20000)(40.0.0)(41.0.0)(42.0.0)(104.000 006.00000)(40. 0.0)(41.0.0)(42.0.0)(106.600 00 3.300 00)(40.0.0)(41.0.0)(42. 0.0)(210 0.0 0.0 1.0)
通過以上的數(shù)據(jù)表可以看出,CAD軟件在升級的過程中其數(shù)據(jù)表結(jié)構(gòu)發(fā)生了變化,內(nèi)容同樣也發(fā)生了變化,數(shù)據(jù)的信息量也趨于復(fù)雜化,由此可知在CAD軟件升級的過程中其信息量越復(fù)雜,那么所存儲的信息也越精細(xì),因此在軟件不斷升級的過程中能夠給用戶帶來更多的便利,但是同樣也存在著比較明顯的缺陷,比如采用高版本繪制的圖形在低版本的軟件中無法打開和運行。
每個測繪單位所使用的CAD軟件版本也可能存在差異,不管是哪個版本在開發(fā)之前都要對其數(shù)據(jù)庫結(jié)構(gòu)等進行了解,所以作為企業(yè)的軟件開發(fā)人員來說,CAD二次開發(fā)是應(yīng)用的關(guān)鍵。一般對CAD軟件數(shù)據(jù)庫結(jié)構(gòu)的探測方法有幾種可供選擇,本次所探討的是基于Auto LISP語言進行二次開發(fā)的CAD軟件。在CAD軟件的數(shù)據(jù)庫中有復(fù)雜實體和簡單實體的區(qū)別,首先在當(dāng)前的圖形文件中輸入一個需要進行探測的實體,即直線然后在命令欄輸入(entget/entlast),這樣便會將最后一個輸入實體的數(shù)據(jù)表的格式探測出來,然后將輸入的實體和探測的格式進行記錄,直到將所有的實體全部探測完畢。這些都是相對簡單的實體,對于復(fù)雜的實體而言其是由一個主實體和多個子實體構(gòu)成的,若采用上述的方法只能探測到主實體的數(shù)據(jù)表格式,如果想要獲得那些子實體的數(shù)據(jù)表格式就需要采用entnext函數(shù),這樣便能夠?qū)⒅鲗嶓w和相應(yīng)的子實體格式和名稱進行探測。在輸入一個復(fù)雜的實體時盡可能的簡單,旨在能夠?qū)⑵渲袉栴}進行解決即可,比如在命令行輸入以下命令:
(Setq s (entnext))—得到主實體名
(entget a)—獲得主實體的數(shù)據(jù)表
(Setq b (entget a))—獲得第一個子實體名
(entget b)—獲得第一個子實體的數(shù)據(jù)表
(Setq*(entget*))返回值為nil
不同的CAD版本其對于復(fù)雜實體和簡單實體的分類也存在明顯的差異,舉個例子,如在12版本中復(fù)合線為復(fù)雜實體,但是在2000版本中復(fù)合線則變成簡單實體。在對實體進行探測時,其探測復(fù)雜實體的方法同樣適用于簡單實體的探測。
在探測完成之后則就需要對各個數(shù)據(jù)表中的組碼進行識別,如果識別失敗那么同樣不能進行使用。下面就簡單介紹幾組組碼和其所代表的含義:
-1—表示實體名;0—表示的是實體的類型;5—表示的是實體代號;6—表示的是線型名稱;8—表示的是圖層;62—表示的是顏色號;210—表示的是三維延伸向量。
單單了解和掌握組碼是不行的,因為在很多時候即使是同一組碼但是其所代表的實體含義也會有所差異,所以在識別組碼時需要進行揣測,在探測實體時需要進行修改,逐漸的判斷出某個位置代表實體的特性。
在對CAD的使用時我們不僅僅要掌握該軟件命令對圖形的編輯、增加和刪減操作,還要學(xué)會采用間接的手段來給圖形添加新的實體,并對這些實體的形狀、位置和顏色等特性進行修改處理,必要時還能夠?qū)D形中的數(shù)據(jù)進行查詢、分析、處理等,這些分析處理的結(jié)果能夠為企業(yè)的管理以及在進行重要決策方面提供依據(jù)。新時期測繪技術(shù)在不斷的發(fā)展,其對于測繪人員的要求也在不斷的提升,以往的測繪人員只需要提供一些空間信息即可,現(xiàn)如今則要求測繪人員能夠?qū)π畔⑦M行采集、管理和使用等綜合性和全能型方向轉(zhuǎn)變。在對CAD圖形數(shù)據(jù)庫結(jié)構(gòu)探測完成之后,用戶所想要的信息便能夠輕易的找到,并且可以使用各類自己比較熟悉的編程語言對其信息進行篩選、運算、統(tǒng)計、分析、修改等操作,測繪工作人員的工作效率也明顯得到提升。
企業(yè)和單位在購買測繪軟件之后往往會因為使用過程中的功能缺陷導(dǎo)致需要進行二次開發(fā),因此單位內(nèi)部一定要儲備具備軟件二次開發(fā)能力的團隊來對現(xiàn)有功能欠缺的軟件進行改進。在開發(fā)之前要深入了解每個版本軟件的數(shù)據(jù)表格式,或者通過探測來了解其數(shù)據(jù)表格式,在全部了解之后實現(xiàn)對圖形數(shù)據(jù)庫的訪問,繼而便能夠處理自己需要的圖形信息,然后根據(jù)自己的需求對這些信息進行處理,編寫出適合自己的專用測繪程序。
[1]黃玉勇,熊先源.AutoCAD圖形數(shù)據(jù)庫的訪問及其在測繪工作中的應(yīng)用[J].測繪通報,2001(8).
[2]高何利,何秀國,劉金婷.AutoLISP程序在地形圖圖廓整飾中的應(yīng)用[J].人民長江,2007(10).