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