曾經(jīng)緯
【摘 要】在鐵路設(shè)計(jì)中,對(duì)于設(shè)計(jì)標(biāo)簽及其它類似表格的處理,基本上都采用插入圖塊后定位寫文本的方式。這樣在移交時(shí)因軟件版本或字體庫(kù)原因,很可能導(dǎo)致圖塊中文字變更或異常,仍需要做大量、繁瑣的人工抄錄及檢索工作。而對(duì)于信號(hào)專業(yè)而言,無(wú)論是信號(hào)機(jī)設(shè)備還是繼電器元件,都是以塊的形式統(tǒng)一輸出。在一張復(fù)雜的設(shè)計(jì)圖中,往往包含著許多形狀相似但參數(shù)不同的各類標(biāo)準(zhǔn)件,這使得設(shè)計(jì)中不可避免的要進(jìn)行大量的標(biāo)準(zhǔn)件繪制工作,從而導(dǎo)致繪圖效率降低,并容易出錯(cuò)。將相關(guān)的數(shù)據(jù)作為屬性附著到塊上以標(biāo)簽或標(biāo)記,可以較好的解決上述問(wèn)題。通過(guò)對(duì)屬性塊的二次開發(fā)來(lái)節(jié)約設(shè)計(jì)者繪圖的時(shí)間,提高設(shè)計(jì)效率,這是本文所探討的命題。
【關(guān)鍵詞】鐵路設(shè)計(jì) 二次開發(fā) 屬性塊 ATTDEF
鐵路設(shè)計(jì)單位通常用屬性塊來(lái)定義圖框中的標(biāo)題欄和會(huì)簽欄等,大家采用相同的圖框,但可以根據(jù)圖紙不同編輯圖名、比例等屬性。在定義塊的時(shí)候?qū)D形和屬性一起選中,就成了屬性塊。
在一張區(qū)間平面圖中,通常需要幾十個(gè)信號(hào)機(jī)模塊共同組合而成,每一個(gè)信號(hào)機(jī)模塊大體相同。但是信號(hào)機(jī)名稱,區(qū)段名稱又各不相同。因此將信號(hào)機(jī)名稱和區(qū)段名稱作為信號(hào)機(jī)模塊的屬性統(tǒng)一插入平面圖中,而不是獨(dú)立以文字形式存在,這樣做既能夠保持圖紙的完整性,又方便隨時(shí)修改調(diào)整,這就是屬性塊的作用。下面就屬性的特點(diǎn)以及如何定義屬性,進(jìn)行詳細(xì)的討論。
1 屬性定義方式
屬性是隨著塊插入的附屬文本信息。對(duì)于一組普通塊而言,其實(shí)是一組實(shí)體的集合,這組實(shí)體被關(guān)聯(lián)起來(lái)組成了一個(gè)對(duì)象。在圖形中可以插入、縮放、旋轉(zhuǎn)、分解和修改塊。在進(jìn)行這些操作之后,所有對(duì)象的塊參照都會(huì)自動(dòng)更新。屬性包含用戶生成技術(shù)報(bào)告所需的信息,它可以是常量或變量、可視或不可視,當(dāng)用戶將一個(gè)塊及屬性插入到圖形中時(shí),屬性按塊的縮放、比例和轉(zhuǎn)動(dòng)來(lái)顯示。[1]
每個(gè)圖形文件都具有一個(gè)稱作塊定義表的不可見(jiàn)數(shù)據(jù)區(qū)域。塊定義表中存儲(chǔ)著全部的塊定義,包括塊的全部關(guān)聯(lián)信息。在圖形中插入塊時(shí),所參照的就是這些塊定義。
圖1是三個(gè)圖形文件的概念性表示。每個(gè)矩形表示一個(gè)單獨(dú)的圖形文件,并分為兩個(gè)部分:較小的部分表示塊定義表,較大的部分表示圖形中的對(duì)象。
插入塊時(shí)即插入了塊參照。不僅僅是將信息從塊定義復(fù)制到繪圖區(qū)域。而是在塊參照與塊定義之間建立了鏈接。因此,如果修改塊定義,所有的塊參照也將自動(dòng)更新。
除此之外,AutoCAD還提供了許多庫(kù)函數(shù)用于屬性塊的設(shè)計(jì)實(shí)現(xiàn),例如AddAttribute、AcadBlockReference、AttBlock等,這些功能型的函數(shù)是為了開發(fā)人員能夠更為方便的設(shè)計(jì)符合本領(lǐng)域需求的屬性塊。下面本文就以“復(fù)式信號(hào)機(jī)”為例闡述屬性塊的設(shè)計(jì)實(shí)現(xiàn)。[2]
2 屬性塊的設(shè)計(jì)實(shí)現(xiàn)
在AutoCAD中,BLOCK命令用于由一個(gè)或多個(gè)對(duì)象創(chuàng)建一個(gè)新的對(duì)象,并按指定的名稱保存,以后可將它插入到圖形中。當(dāng)塊參照被插入到圖形中時(shí),它們可以被整體地放大或縮小,也可以分別沿X軸方向和Y軸方向放大或縮小。而屬性塊是一個(gè)從其它圖形到當(dāng)前圖形的外部鏈接,因?yàn)橥獠繀⒄諌K代表的是一個(gè)圖形的鏈接,而不是幾何圖形本身,因此外部參照塊會(huì)隨著原始圖形的修改而更新。
2.1 屬性塊設(shè)計(jì)流程
屬性塊具體的設(shè)計(jì)實(shí)現(xiàn)流程如下圖2所示。
屬性塊的設(shè)計(jì)實(shí)現(xiàn)流程主要有以下幾個(gè)步驟:
(1)聲明一個(gè)即將創(chuàng)建的屬性塊AttBlock;
(2)如果該塊已存在,則刪除該塊;
(3)通過(guò)設(shè)置點(diǎn)、線、圓等幾何圖形創(chuàng)建如復(fù)式信號(hào)機(jī)在內(nèi)的各類模型;
(4)通過(guò)AddAttribute等內(nèi)置函數(shù)設(shè)置塊屬性;
(5)運(yùn)行程序,拾取圖中插入點(diǎn),插入屬性塊。
對(duì)于嵌套的圖塊,EXPLODE命令一次只能分解一層。帶有屬性的塊被分解后,將丟失屬性值,而以屬性標(biāo)記的形式顯示。使用MINSERT命令插入的塊不得使用EXPLODE命令進(jìn)行分解。[3]
2.2 屬性塊設(shè)計(jì)的編碼實(shí)現(xiàn)
下面是通過(guò)編程插入“復(fù)式信號(hào)機(jī)”模塊的設(shè)計(jì)實(shí)現(xiàn)過(guò)程。
(1)創(chuàng)建復(fù)式信號(hào)機(jī)屬性塊。
在插入屬性塊時(shí)可以對(duì)其屬性進(jìn)行修改,同時(shí)我們也可以在模型空間中修改其參照,來(lái)修改屬性。在CAD定義圖塊屬性的時(shí)候,可以看到三個(gè)輸入框,分別是標(biāo)記、提示、默認(rèn)值,如圖3所示。
3 結(jié)語(yǔ)
本文圍繞著屬性塊的設(shè)置做了詳盡的分析,并結(jié)合實(shí)際工程中經(jīng)常采用的信號(hào)機(jī)模塊,利用AutoCAD中自帶的多個(gè)函數(shù),進(jìn)行了設(shè)計(jì)實(shí)驗(yàn),實(shí)現(xiàn)了屬性塊的編程開發(fā),達(dá)到了預(yù)期目標(biāo)和效果。由于本文是從單個(gè)信號(hào)機(jī)模塊角度設(shè)計(jì)實(shí)驗(yàn),實(shí)際情況下的屬性塊運(yùn)用要更為復(fù)雜,例如批量修改屬性、屬性塊與圖層的關(guān)系等等。都是論文進(jìn)一步研究的方向。
參考文獻(xiàn):
[1]李小青.CAD軟件二次開發(fā)方法及應(yīng)用[J].機(jī)械研究與應(yīng)用,2004,17(2):64-65.
[2]二代龍震工作室.函數(shù)庫(kù)查詢辭典[M].北京:中國(guó)鐵道出版社,2003:22-25.
[3]張帆,鄭立楷,盧擇臨,王成煌.AutoCAD VBA二次開發(fā)教程[M].北京:清華大學(xué)出版社,2006年1月.
[4]鄧偉龍.基于VLisp開發(fā)車站信號(hào)計(jì)算機(jī)聯(lián)鎖輔助設(shè)計(jì)程序[J].鐵道標(biāo)準(zhǔn)設(shè)計(jì),2014(3):127-129.