国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于單元的鐵路線路平面設(shè)計(jì)及其數(shù)據(jù)管理方法

2010-08-07 08:42蔣紅斐孫曉麗
關(guān)鍵詞:鏈表應(yīng)用程序直線

石 星,蔣紅斐,孫曉麗

(中南大學(xué)土木建筑學(xué)院, 長沙410075)

在傳統(tǒng)的鐵路平面計(jì)算機(jī)輔助設(shè)計(jì)中大多采用交點(diǎn)法,交點(diǎn)法雖然簡單,但存在一定的局限性。例如線路要連續(xù)繞過兩個(gè)地形不利地段,這時(shí)線位應(yīng)該由曲線控制,如果使用交點(diǎn)法來定線,實(shí)施起來相當(dāng)?shù)睦щy。如果能先把兩段曲線的位置固定下來,然后再在兩曲線間插入直線,便可輕松實(shí)現(xiàn)。考慮到在曲線毗連地段交點(diǎn)法帶來的不便,一種新的基于單元的鐵路線路平面設(shè)計(jì)方法,將整條線路中線看成是由一系列線路單元按順序連接而成,稱之為單元法。單元法使布線更加的靈活,在一定程度上提高工作效率。程序采用ObjectARX作為開發(fā)工具。

1 基于單元的鐵路線路平面設(shè)計(jì)方法

在單元法中將整條線路中線看成是由一系列線路單元按順序連接而成。即線路單元是線路最基本的構(gòu)成元素。由于鐵路線路的線形比較簡單,系統(tǒng)將線路單元區(qū)分為曲線單元和直線單元。曲線單元由中間的一段圓弧和兩端的對稱緩和曲線組成。可以把直線單元看成特殊的曲線單元。應(yīng)用程序采用了2種線路定位方式:(1)在兩端用直線單元定位,中間再插入曲線單元如圖1。(2)在兩端用曲線單元定位,中間再插入直線單元如圖2。在插入單元后,只需對3條線路單元的位置(兩端的線路單元定位用)進(jìn)行重新計(jì)算,然后連接3條連續(xù)的線路單元,一段線路中線便形成了。

圖1 兩直線單元間插入曲線單元

圖2 兩曲線單元間插入直線單元

2 數(shù)據(jù)管理方法

如何才能輕松便捷地實(shí)現(xiàn)上述功能?這就涉及到數(shù)據(jù)處理的問題了。以在兩曲線單元間插入直線單元為例。首先要知道第1個(gè)曲線單元的位置,然后在它的后面插入新生成的直線單元。然后還要獲取這連續(xù)的3個(gè)單元的具體數(shù)據(jù),如圓弧半徑,偏轉(zhuǎn)方向等。有了這些數(shù)據(jù)才能來計(jì)算出新位置參數(shù),然后更新數(shù)據(jù)。如何快速便捷的實(shí)現(xiàn)這些數(shù)據(jù)的處理,這時(shí)數(shù)據(jù)管理方法的選取顯得尤為重要。在傳統(tǒng)的鐵路選線CAD系統(tǒng)中,大多采用基于外部文件或外部數(shù)據(jù)庫來進(jìn)行數(shù)據(jù)的存取。而這種方式存在許多的不足。由于要頻繁的對線路進(jìn)行改動,而線路中所有圖形的數(shù)據(jù)均存儲于外部文件或數(shù)據(jù)庫中。一旦改動圖形,就必須保證外部數(shù)據(jù)庫得到實(shí)時(shí)更新即數(shù)據(jù)與圖形的同步。一旦外部數(shù)據(jù)庫出錯或丟失,圖形文件也就沒有用了。而且采用外部文件或數(shù)據(jù)庫管理數(shù)據(jù)時(shí),由于文件多而雜,對這些數(shù)據(jù)文件的管理與維護(hù)也是一個(gè)麻煩的問題,容易出錯。而CAD的圖形文件本來就是一個(gè)數(shù)據(jù)庫,如果能夠直接在其圖形數(shù)據(jù)庫中讀取與存儲數(shù)據(jù),以上的問題便迎刃而解。利用自定義對象來讀取與存儲數(shù)據(jù)便可以輕松解決這一問題。

3 實(shí)現(xiàn)方法

3.1 使用自定義對象進(jìn)行數(shù)據(jù)存取

從AcDbObject派生自己的自定義對象。該自定義對象中含有一個(gè)鏈表,鏈表用于存儲線路中線各線路單元(自定義實(shí)體)的ID,其存儲ID的順序與線路中線中各線路單元的順序一致。該自定義對象類重定義其dwgOut()、dwgIn()、dxfOut()和dxfIn()函數(shù)使其能夠按正確順序?qū)懭雽懗鲦湵砣萜髦兴鎯Φ膶ο驣D。并定義各種接口函數(shù),用于對鏈表容器進(jìn)行相應(yīng)的操作。應(yīng)用程序利用自定義對象中所存儲的線路單元的ID來讀取相應(yīng)線路單元的數(shù)據(jù)進(jìn)行其他操作。該自定義對象的實(shí)例存儲在命名對象字典中,每當(dāng)新建或打開一個(gè)圖形時(shí),應(yīng)用程序自動檢查其命名對象字典,如果沒有該自定義對象實(shí)例,則自動添加一個(gè)。

3.2 單元的數(shù)據(jù)結(jié)構(gòu)

線路中線中,不論是曲線單元(兩端為對稱緩和曲線中間為一段圓?。€是直線單元,都用同一個(gè)自定義實(shí)體類來表示。該自定義實(shí)體共有3個(gè)構(gòu)造函數(shù):(1)默認(rèn)構(gòu)造函數(shù),由于初始化所有的數(shù)據(jù)成員,默認(rèn)構(gòu)造該單元為直線;(2)直線單元的構(gòu)造函數(shù),通過指定直線的起點(diǎn)和終點(diǎn)來構(gòu)造直線單元;(3)曲線單元的構(gòu)造函數(shù),通過指定圓弧的起點(diǎn),終點(diǎn),圓弧的半徑,曲線偏轉(zhuǎn)方向以及緩和曲線長來構(gòu)造曲線單元。

除去表示曲線和直線所必須的數(shù)據(jù)成員之外,還額外定義了兩個(gè)數(shù)據(jù)成員Flag1和Flag2。Flag1用來標(biāo)識該單元是直線單元還是曲線單元,F(xiàn)lag2用來標(biāo)識該單元是否已經(jīng)從數(shù)據(jù)庫中擦除。當(dāng)從塊表的模型空間刪除一個(gè)單元時(shí),應(yīng)用程序并不從上述自定義對象的鏈表中刪除該單元對應(yīng)的ID,而是通過改變該單元的數(shù)據(jù)成員Flag2的值來表示該單元已被刪除的狀態(tài)。直到該圖形保存或關(guān)閉時(shí),才從鏈表中真正刪除已經(jīng)被擦除的單元對應(yīng)的ID。

3.3 合理使用反應(yīng)器

從圖形中擦除一個(gè)線路單元時(shí),該單元的數(shù)據(jù)成員Flag2被置為擦除狀態(tài)?;謴?fù)一個(gè)線路單元時(shí),F(xiàn)lag2被置為未刪除狀態(tài)?;蛘弋?dāng)修改一個(gè)線路單元時(shí),相鄰的單元能夠?qū)@次修改自動作出反應(yīng),以生成一段新的線路中線??梢酝ㄟ^數(shù)據(jù)庫臨時(shí)反應(yīng)器來實(shí)現(xiàn)上述功能。當(dāng)打開或新建一個(gè)圖形時(shí),應(yīng)用程序自動添加一個(gè)數(shù)據(jù)庫反應(yīng)器。關(guān)閉一個(gè)圖形時(shí),應(yīng)用程序自動將反應(yīng)器移除。通過重定義相應(yīng)的通知函數(shù)來對不同的通知作出反應(yīng)。

3.4 數(shù)據(jù)處理具體流程

以在兩曲線單元間插入直線單元為例。首先,創(chuàng)建一個(gè)直線單元,并把它添加到快表的模型空間中。然后要求用戶指定該新建單元的前部單元,得到其ID。從命名對象字典中找到自定義對象,打開它,遍歷鏈表尋找上述ID。找到之后,便在鏈表中該元素的后面插入新建單元的ID。這樣新建單元的數(shù)據(jù)便完整的保存到圖形數(shù)據(jù)庫中了,接下來要連接3個(gè)單元。找到該新建單元的ID之后,依次向前和向后遍歷鏈表。從模型空間中打開它們,返回所需的數(shù)據(jù)進(jìn)行計(jì)算,利用計(jì)算后的新數(shù)據(jù)來更新線路單元實(shí)體,然后分別從屏幕刷新它們,連接單元的工作便完成了。

4 結(jié)束語

使用單元法來進(jìn)行鐵路線路的平面設(shè)計(jì),較之傳統(tǒng)的交點(diǎn)法布線手段更加靈活,修改方便,適應(yīng)性更強(qiáng),可以提高的工作效率。而通過利用自定義對象,直接將數(shù)據(jù)存儲于圖形文件中的方法,使應(yīng)用程序不必訪問外部數(shù)據(jù)庫便能輕松實(shí)現(xiàn)數(shù)據(jù)的存取,讓操作更加直接、方便和快捷。由于所有數(shù)據(jù)均存儲于單一的圖形文件中,對數(shù)據(jù)的維護(hù)和管理也更加的輕松簡單并且更不易出錯。

[1] 邵俊昌,李旭東.AutoCAD ObjectARX 2000 開發(fā)技術(shù)指南[M] . 北京:電子工業(yè)出版社,1999.

[2] 李世國,潘建忠,平雪良. AutoCAD 2000 ObjectARX 編程指南[M] . 北京:機(jī)械工業(yè)出版社,2000.

[3] 詹振炎. 鐵路選線設(shè)計(jì)方法的現(xiàn)代理論和方法[M] . 北京:中國鐵道出版社,2001.

[4] 郝瀛. 鐵道工程[M] . 北京:中國鐵道出版社,2007.

猜你喜歡
鏈表應(yīng)用程序直線
刪除Win10中自帶的應(yīng)用程序
基于二進(jìn)制鏈表的粗糙集屬性約簡
跟麥咭學(xué)編程
畫直線
谷歌禁止加密貨幣應(yīng)用程序
基于鏈表多分支路徑樹的云存儲數(shù)據(jù)完整性驗(yàn)證機(jī)制
兩條直線 變變變
畫直線
一種基于有序雙端鏈表的高效排序算法
三星電子將開設(shè)應(yīng)用程序下載商店