王婉秋,莊國方,蒲 浩
(1.同濟(jì)大學(xué)道路與交通工程教育部重點(diǎn)實(shí)驗(yàn)室,上海200092;2.上海建科建設(shè)監(jiān)理咨詢有限公司,上海200032;3.中南大學(xué)土建學(xué)院,湖南長(zhǎng)沙410004)
隨著經(jīng)濟(jì)、社會(huì)的不斷進(jìn)步,公路交通事業(yè)不斷向縱深發(fā)展,既有公路不斷升級(jí)改造為高等級(jí)公路,新建的高等級(jí)公路不斷向山區(qū)、荒漠延伸擴(kuò)展,在此過程中分離式路基越來越得到廣泛的應(yīng)用。路基橫斷面形式的復(fù)雜多樣性使得橫斷面自動(dòng)設(shè)計(jì)難以完成設(shè)計(jì)人員的設(shè)計(jì)意圖,橫斷面交互設(shè)計(jì)顯得尤為重要。
國內(nèi)路基設(shè)計(jì)軟件提供的交互設(shè)計(jì)功能從實(shí)際應(yīng)用情況來看存在以下不足:
1)人機(jī)交互設(shè)計(jì)時(shí),大多采用編輯橫斷面設(shè)計(jì)模板的方式,由系統(tǒng)運(yùn)算后刷新圖形對(duì)象,而不能實(shí)現(xiàn)直接操作圖形對(duì)象,由系統(tǒng)根據(jù)圖形的實(shí)時(shí)變化自動(dòng)更新橫斷面數(shù)據(jù),即圖形驅(qū)動(dòng)數(shù)據(jù)的方式。
2)不能實(shí)現(xiàn)橫斷面某一部分的圖形修改自動(dòng)觸發(fā)與其相關(guān)的其他圖形的自動(dòng)更新。
針對(duì)以上不足之處,筆者提出了一種基于圖形和數(shù)據(jù)聯(lián)動(dòng)的交互設(shè)計(jì)思想。該思想基于圖形與數(shù)據(jù)是一個(gè)整體的思想,注重圖形和數(shù)據(jù)的有機(jī)聯(lián)系,即數(shù)據(jù)的修改可使圖形同步變化;反之,圖形的編輯也能使數(shù)據(jù)自動(dòng)刷新,從而實(shí)現(xiàn)操作過程的高效、自動(dòng)化。
為了實(shí)現(xiàn)圖形與數(shù)據(jù)聯(lián)動(dòng)的交互設(shè)計(jì)思想,筆者在研究路基橫斷面自動(dòng)設(shè)計(jì)方法的基礎(chǔ)上,引入與常規(guī)路基CAD軟件不同的編制思想:采用面向?qū)ο蟮木幊谭椒?,?yīng)用ObjectARX的實(shí)體定制技術(shù)構(gòu)造橫斷面實(shí)體。通過巧妙應(yīng)用響應(yīng)器和通知技術(shù),實(shí)現(xiàn)聯(lián)動(dòng)的交互設(shè)計(jì)功能。
公路路基橫斷面的數(shù)量龐大,國內(nèi)學(xué)者針對(duì)橫斷面自動(dòng)設(shè)計(jì)方法進(jìn)行了大量研究,探討了簡(jiǎn)潔、靈活和通用的橫斷面幾何描述和定義模型及其CAD開發(fā)實(shí)現(xiàn)方法[1]、研究了將 BP 神經(jīng)網(wǎng)絡(luò)技術(shù)[2]、數(shù)據(jù)庫技術(shù)[3-5]應(yīng)用于道路路基橫斷面設(shè)計(jì)系統(tǒng)的方法。然而這些研究方法大多只針對(duì)整體式路基的設(shè)計(jì),對(duì)分離式路基橫斷面的設(shè)計(jì)研究不多。鑒于路基橫斷面形式的復(fù)雜多樣性,筆者采取“化繁為簡(jiǎn)”的思路,首先引入特征點(diǎn)將全線劃分成多段具有相同特征橫斷面形式的局部段落,通過從面到線再到點(diǎn)(面:全線;線:某段線路;點(diǎn):特定的斷面形式)層層細(xì)化的方式,最終將設(shè)計(jì)方法的研究重點(diǎn)鎖定至具有共同特征的橫斷面設(shè)計(jì)方法的研究上。
公路路基橫斷面形式由于受地形、地質(zhì)條件限制,一條主線逐漸分成左右兩幅路,路基形式從整體式路基過渡到分離式路基,路基形式漸變過程如圖1。路基橫斷面形式復(fù)雜,路基形式從整體式路基變化至部分分離式路基,直至路基完全分離。
圖1 過渡段橫斷面漸變過程Fig.1 Gradual process of cross-section
根據(jù)路基橫斷面形式的變化特點(diǎn),引入2個(gè)特征點(diǎn):路面分離點(diǎn)和路基分離點(diǎn)。路面分離點(diǎn)即整體式路基路面分離的臨界點(diǎn)斷面;路基分離點(diǎn)指左右路幅路基所夾邊坡不相交的臨界點(diǎn)斷面。利用這2個(gè)特征點(diǎn)進(jìn)行段落劃分:①整體式路基段,即里程小于路面分離點(diǎn)里程段,此時(shí)橫斷面形式為整體式路基;②部分分離段,即介于路面分離點(diǎn)和路基分離點(diǎn)之間的路段,路基按2個(gè)互相關(guān)聯(lián)的路基來進(jìn)行設(shè)計(jì),橫斷面形式為部分分離式路基。
左右兩幅路合為一幅路的路基橫斷面形式漸變過程與分出端類似。
基于以上段落劃分,橫斷面設(shè)計(jì)歸結(jié)為3種路基的設(shè)計(jì):整體式路基、部分分離式路基和完全分離式路基的設(shè)計(jì)。根據(jù)每種路基不同的橫斷面特點(diǎn),提出相應(yīng)的計(jì)算機(jī)輔助設(shè)計(jì)方法。
1.2.1 整體式路基機(jī)助設(shè)計(jì)方法
整體式路基的自動(dòng)設(shè)計(jì)方法即計(jì)算機(jī)依據(jù)設(shè)計(jì)者給定的標(biāo)準(zhǔn)橫斷面模板,自動(dòng)完成逐樁橫斷面設(shè)計(jì)及土石方工程數(shù)量計(jì)算。標(biāo)準(zhǔn)橫斷面模板的定義依地形、地質(zhì)等情況的不同采取分段定義的方式 。依據(jù)定義好的標(biāo)準(zhǔn)橫斷面模板進(jìn)行橫斷面自動(dòng)設(shè)計(jì)的方法與人工常規(guī)設(shè)計(jì)方法一致,在程序中分左、右側(cè)分別進(jìn)行設(shè)計(jì)。
1.2.2 分離式路基機(jī)助設(shè)計(jì)方法
1)部分分離式路基機(jī)助設(shè)計(jì)方法。部分分離式路基一般在整體式路基和完全分離式路基的過渡段出現(xiàn),此時(shí)左幅路基和右幅路基互相關(guān)聯(lián),設(shè)計(jì)方法是先對(duì)左幅路采取整體式路基橫斷面設(shè)計(jì)方法設(shè)計(jì),然后沿左幅路的法線方向?qū)τ曳坊鶛M斷面進(jìn)行相應(yīng)設(shè)計(jì),最后依據(jù)左幅路基右側(cè)和右幅路基左側(cè)邊坡的相交形式,將兩個(gè)橫斷面進(jìn)行拼合設(shè)計(jì)。
2)完全分離式路基機(jī)助設(shè)計(jì)。完全分離式路基分別對(duì)兩幅路基采取與整體式路基設(shè)計(jì)方法相同的設(shè)計(jì):分段設(shè)置標(biāo)準(zhǔn)橫斷面模板,依據(jù)定義好的模板進(jìn)行自動(dòng)設(shè)計(jì)。
如何將設(shè)計(jì)好的路基橫斷面實(shí)體高效地存儲(chǔ)到AutoCAD的數(shù)據(jù)庫中,是實(shí)現(xiàn)橫斷面高交互性能的前提條件。
在早期研究中,橫斷面自動(dòng)設(shè)計(jì)生成的若干橫斷面子實(shí)體以無序的方式存儲(chǔ)于AutoCAD數(shù)據(jù)庫的模型空間(MODEL_SPACE)中。這種存儲(chǔ)方式,當(dāng)模型空間中實(shí)體很多時(shí),即使是簡(jiǎn)單的查詢操作也將變得費(fèi)時(shí)費(fèi)力。
為了找到一種效率更高的圖形存儲(chǔ)方法,文獻(xiàn)[3]中提出了應(yīng)用面向?qū)ο蟮膲K表技術(shù),減化了在圖形數(shù)據(jù)庫中記錄橫斷面實(shí)體的工作量。然而,由于模型空間中記錄的是圖塊的塊引用,橫斷面交互設(shè)計(jì)過程中首先必須將圖塊解塊(explode)才能實(shí)現(xiàn)對(duì)各實(shí)體的交互操作,而且在交互設(shè)計(jì)完成后,還需將各實(shí)體重新組合成圖塊存入數(shù)據(jù)庫中。交互設(shè)計(jì)過程繁瑣,效率不高。
文獻(xiàn)[3]提出了面向?qū)ο蟮乃枷?,然而在?shí)際應(yīng)用中,橫斷面的各組成實(shí)體卻是相互獨(dú)立分散的,僅僅通過塊表技術(shù)將它們生硬地聯(lián)系在一起,沒有從根本上貫徹面向?qū)ο蟮乃枷耄磳⒙坊鶛M斷面看成客觀“對(duì)象”,在對(duì)象的內(nèi)部定義屬性和操作或方法來完成對(duì)象內(nèi)部私有狀態(tài)的描述。為此,筆者提出了對(duì)象-屬性的思想,將路基橫斷面看成一個(gè)“對(duì)象”,為橫斷面對(duì)象添加屬性以實(shí)現(xiàn)相應(yīng)的功能,并運(yùn)用ObjectARX的實(shí)體定制技術(shù),將橫斷面構(gòu)造成與AutoCAD內(nèi)部實(shí)體一樣易于操作的自定義實(shí)體。
對(duì)象-屬性思想就是將路基橫斷面視為“對(duì)象”,其組成實(shí)體視為屬性實(shí)體,屬性實(shí)體包括幾何屬性實(shí)體和標(biāo)注屬性實(shí)體。各屬性實(shí)體又作為單獨(dú)的對(duì)象分別定義相應(yīng)的屬性參數(shù)和行為函數(shù)。分類和層次關(guān)系如圖2。
圖2 路基橫斷面屬性分類及層次關(guān)系Fig.2 Attribute classification and hierarchical relationship of crosssection section
通過對(duì)象-屬性思想設(shè)計(jì)的路基橫斷面對(duì)象封裝了對(duì)象的屬性實(shí)體及屬性實(shí)體的參數(shù)與操作,突破了傳統(tǒng)的將數(shù)據(jù)與操作分離的模式,該對(duì)象具有繼承性。將一般路基橫斷面作為一種典型的實(shí)體對(duì)象,特殊路基的設(shè)計(jì)即可采用“繼承”的方式在典型設(shè)計(jì)的基礎(chǔ)上添加各自的屬性,如在一般路基的基礎(chǔ)上分別添加矮墻、護(hù)肩、擋墻、砌石、護(hù)腳等“屬性”即可派生出相應(yīng)的路基橫斷面對(duì)象,實(shí)現(xiàn)對(duì)象增量式的擴(kuò)充。
根據(jù)對(duì)象-屬性思想,一個(gè)橫斷面可以視為屬性實(shí)體組合成的復(fù)合實(shí)體。因此在AutoCAD數(shù)據(jù)庫中定制橫斷面實(shí)體的關(guān)鍵是解決各屬性實(shí)體的定制問題。ObjectARX類層次結(jié)構(gòu)的AcDbEntity類是所有具有圖形表現(xiàn)的數(shù)據(jù)庫對(duì)象的基類,通過AcD-bEntity類繼承派生的方式實(shí)現(xiàn)對(duì)屬性實(shí)體內(nèi)部屬性和行為的定制。以橫斷面邊坡屬性實(shí)體的定義為例,說明實(shí)體的定制方法[6-7]:
1)從AcDbEntity類派生新的邊坡實(shí)體類Side-Slop,可借助工具軟件ObjectARX Wizard實(shí)現(xiàn),它生成派生類SideSlop的框架;
2)定義SideSlop的數(shù)據(jù)成員,數(shù)據(jù)成員包括邊坡級(jí)數(shù),邊坡系數(shù),邊坡高度,平臺(tái)寬度,邊坡的圖形顯示坐標(biāo)點(diǎn)等;
3)定義數(shù)據(jù)成員的行為函數(shù),包括查詢、繪制、對(duì)象捕捉、編輯等。定義邊坡設(shè)計(jì)計(jì)算的私有成員函數(shù),它完成邊坡屬性數(shù)據(jù)修改后,邊坡點(diǎn)坐標(biāo)的重新設(shè)計(jì)與計(jì)算工作;
4)定制實(shí)體還必須完成4個(gè)filer函數(shù),才能使對(duì)象歸檔:
其余屬性實(shí)體的定制參照邊坡屬性實(shí)體的定制方法,將定義好的各屬性實(shí)體作為橫斷面實(shí)體的屬性成員進(jìn)行橫斷面實(shí)體的定制,就可構(gòu)造出完整的橫斷面實(shí)體。
橫斷面交互設(shè)計(jì)過程實(shí)際是設(shè)計(jì)人員對(duì)橫斷面屬性實(shí)體進(jìn)行交互修改的過程。對(duì)某一屬性實(shí)體的修改,勢(shì)必會(huì)引起其它相關(guān)屬性實(shí)體隨之做出相應(yīng)的調(diào)整。通過自定義實(shí)體技術(shù)定制的橫斷面實(shí)體集成了各屬性實(shí)體的幾何、標(biāo)注參數(shù)及操作函數(shù),對(duì)屬性實(shí)體的任何查詢、修改如同編輯AutoCAD內(nèi)部實(shí)體一樣簡(jiǎn)單、方便。然而將該橫斷面實(shí)體應(yīng)用于交互設(shè)計(jì)仍待解決一個(gè)關(guān)鍵問題,即對(duì)某一屬性實(shí)體的修改如何自動(dòng)觸發(fā)其他相關(guān)屬性實(shí)體的關(guān)聯(lián)變化。ObjectARX的反應(yīng)器與通知技術(shù)提供了較好的解決辦法。
反應(yīng)器與通知技術(shù)的原理是將作為接受事件的反應(yīng)器附加到通知者的對(duì)象中,當(dāng)系統(tǒng)有事件發(fā)生時(shí),通知者對(duì)象自動(dòng)傳遞事件給反應(yīng)器,并調(diào)用反應(yīng)器所對(duì)應(yīng)的通知函數(shù)(modified)[8]。
基于此原理,為了實(shí)現(xiàn)多個(gè)實(shí)體的相互關(guān)聯(lián),在創(chuàng)建某個(gè)實(shí)體時(shí),可以向?qū)嶓w附加一個(gè)反應(yīng)器,并在反應(yīng)器的成員變量中包含另一個(gè)實(shí)體的對(duì)象ID。具體實(shí)現(xiàn)過程為:當(dāng)AutoCAD修改一個(gè)已附有反應(yīng)器的實(shí)體時(shí),反應(yīng)器會(huì)得到響應(yīng),發(fā)生響應(yīng)的反應(yīng)器通過讀出所依附實(shí)體的對(duì)象ID,打開所依附的實(shí)體,執(zhí)行通知函數(shù)預(yù)先設(shè)定的操作,從而實(shí)現(xiàn)實(shí)體之間的關(guān)聯(lián)變化。
反應(yīng)器的實(shí)時(shí)監(jiān)測(cè),多個(gè)實(shí)體關(guān)聯(lián),通知函數(shù)等功能很好地滿足了交互設(shè)計(jì)過程中屬性實(shí)體間關(guān)聯(lián)變化的需求。
在創(chuàng)建橫斷面屬性實(shí)體時(shí),根據(jù)交互操作的需要預(yù)先放置反應(yīng)器,在反應(yīng)器的通知函數(shù)中設(shè)定相應(yīng)的響應(yīng)操作。通過反應(yīng)器的實(shí)時(shí)監(jiān)測(cè),被操作實(shí)體處于被監(jiān)測(cè)狀態(tài),設(shè)計(jì)人員的任何操作,系統(tǒng)都能迅速做出反應(yīng),捕捉與其關(guān)聯(lián)的其他實(shí)體,并提取屬性數(shù)據(jù),完成重新設(shè)計(jì)與計(jì)算。
以邊坡線實(shí)體反應(yīng)器為例說明反應(yīng)器的設(shè)置方法與工作流程[4]:
第1步:創(chuàng)建邊坡實(shí)體反應(yīng)器。
1)從反應(yīng)器類AcDbEntityReactor派生新的邊坡實(shí)體反應(yīng)器SideSlopReact。
2)將地面線,水溝,標(biāo)注實(shí)體對(duì)象的ID作為數(shù)據(jù)成員,建立邊坡實(shí)體與該斷面地面線、水溝及文本標(biāo)注等實(shí)體的關(guān)聯(lián)。
3)定義通知函數(shù):modified(const AcDbObject*pObj)。函數(shù)中獲取當(dāng)前編輯修改的邊坡對(duì)象實(shí)體指針,并以只讀方式打開與當(dāng)前邊坡實(shí)體關(guān)聯(lián)的地面線實(shí)體,作為地面線設(shè)計(jì)依據(jù);并以寫方式打開與當(dāng)前邊坡實(shí)體關(guān)聯(lián)的水溝實(shí)體、文本標(biāo)注實(shí)體,提取屬性參數(shù)。根據(jù)邊坡實(shí)體的變化重新設(shè)計(jì)橫斷面并計(jì)算面積,繪制新設(shè)計(jì)的水溝,刷新標(biāo)注內(nèi)容。
第2步:為邊坡實(shí)體添加反應(yīng)器 addReactor(LeftSideSlopReactor)。
現(xiàn)有設(shè)計(jì)方法中主要通過對(duì)話框方式,直接修改設(shè)計(jì)參數(shù)模板實(shí)現(xiàn)交互設(shè)計(jì),然而設(shè)計(jì)人員在進(jìn)行實(shí)際交互設(shè)計(jì)時(shí),往往難以確切知道設(shè)計(jì)參數(shù)的準(zhǔn)確修改值,只能通過不斷修正以實(shí)現(xiàn)合理的設(shè)計(jì),而且設(shè)計(jì)人員在設(shè)計(jì)參數(shù)模板與設(shè)計(jì)界面中反復(fù)的切換也降低了設(shè)計(jì)效率。數(shù)據(jù)對(duì)圖形聯(lián)動(dòng)的交互設(shè)計(jì)方法克服了現(xiàn)有交互設(shè)計(jì)方法的弱點(diǎn),基于本文的研究成果,系統(tǒng)開發(fā)了更加人性化的間接參數(shù)化法和通過夾點(diǎn)操作直接修改圖形的方法。
間接參數(shù)化法屬于數(shù)據(jù)對(duì)圖形驅(qū)動(dòng)的設(shè)計(jì)方法,設(shè)計(jì)人員只需根據(jù)設(shè)計(jì)意圖,使用多義線繪出屬性實(shí)體的大致形狀,系統(tǒng)自動(dòng)提取所需信息,重新設(shè)計(jì)生成與多義線形狀類似的屬性實(shí)體,而且通過附加到屬性實(shí)體的反應(yīng)器的作用,自動(dòng)激發(fā)牽連屬性實(shí)體的聯(lián)動(dòng)改變,從而實(shí)現(xiàn)更加直觀靈活的交互設(shè)計(jì)。以邊坡屬性實(shí)體的交互設(shè)計(jì)過程為例,如圖3、圖4。
圖3 多義線轉(zhuǎn)邊坡線Fig.3 Turn polyline into slope line
圖4 多義線成功轉(zhuǎn)成邊坡線Fig.4 Turn polyline into slope line successfully
夾點(diǎn)操作圖形的方法是一種面向圖形對(duì)象的圖形對(duì)數(shù)據(jù)驅(qū)動(dòng)的交互設(shè)計(jì)方法,由前文的研究成果定義的實(shí)體類與AutoCAD內(nèi)部實(shí)體一樣,當(dāng)Auto-CAD中選中某屬性實(shí)體時(shí),AutoCAD通過運(yùn)行期間的類檢查機(jī)制獲得該實(shí)體對(duì)象的類,當(dāng)拖動(dòng)某個(gè)夾點(diǎn)或通過右鍵快捷菜單選擇相應(yīng)命令時(shí),AutoCAD自動(dòng)調(diào)用該實(shí)體對(duì)象類的相應(yīng)“操作函數(shù)”,隨著鼠標(biāo)的移動(dòng),圖形被不斷刷新重繪,形成動(dòng)態(tài)橡皮線的效果。當(dāng)操作完畢后,與之關(guān)聯(lián)的其他屬性實(shí)體,標(biāo)注屬性(填挖面積、中心填挖高等)被自動(dòng)刷新,數(shù)據(jù)庫文件也被同步更新。夾點(diǎn)操作的動(dòng)態(tài)可視性,使設(shè)計(jì)者能觀察屬性實(shí)體的實(shí)時(shí)變化,從而完成高效、靈活的交互設(shè)計(jì)。以修改邊坡的夾點(diǎn)操作為例(圖5)。
圖5 修改邊坡的夾點(diǎn)操作Fig.5 Clip-point operations of slop line
筆者深入研究了路基橫斷面自動(dòng)設(shè)計(jì)與交互設(shè)計(jì)的若干關(guān)鍵技術(shù),實(shí)現(xiàn)了路基橫斷面基于圖形與數(shù)據(jù)聯(lián)動(dòng)的交互設(shè)計(jì)功能。它具有如下優(yōu)點(diǎn):
1)應(yīng)用ObjectARX自定義實(shí)體技術(shù)定制橫斷面實(shí)體對(duì)象,使橫斷面這樣的復(fù)雜實(shí)體能象Auto-CAD內(nèi)部實(shí)體一樣,具有AutoCAD實(shí)體的各種屬性和操作方式;
2)應(yīng)用響應(yīng)器的實(shí)時(shí)監(jiān)測(cè),多個(gè)實(shí)體關(guān)聯(lián),響應(yīng)函數(shù)等功能,實(shí)現(xiàn)橫斷面屬性實(shí)體之間的相互關(guān)聯(lián);
3)基于圖形與數(shù)據(jù)聯(lián)動(dòng)的交互設(shè)計(jì)方法:間接參數(shù)化法、夾點(diǎn)操作法,以其靈活性,動(dòng)態(tài)可視化實(shí)現(xiàn)了對(duì)橫斷面高效的交互功能。
[1]裴大明,王福建.公路路基橫斷面CAD開發(fā)研究[J].重慶交通學(xué)院學(xué)報(bào),1999,18(3):21 -25.
[2]裴大明,王福建.基于BP神經(jīng)網(wǎng)絡(luò)的公路路基橫斷面填挖方信息提取方法及應(yīng)用[J].重慶交通學(xué)院學(xué)報(bào),1999,18(3):26-29.
[3]王衛(wèi)東,詹振炎.基于數(shù)據(jù)庫的道路路基橫斷面設(shè)計(jì)系統(tǒng)[J].中國鐵道科學(xué),2002,23(3):77 -81.
[4]王衛(wèi)東,詹振炎.道路路基橫斷面數(shù)據(jù)庫及其輔助設(shè)計(jì)[J].中南工業(yè)大學(xué)學(xué)報(bào),2002,33(5):462-465.
[5]王衛(wèi)東,詹振炎.ObjectARX技術(shù)在道路路基橫斷面圖形存儲(chǔ)中的應(yīng)用[J].計(jì)算機(jī)工程,2002,28(3):251 -252.
[6]邵俊昌,李旭東.AutoCAD ObjectARX 2000開發(fā)技術(shù)指南[M].北京:電子工業(yè)出版社,2000.
[7]陳英時(shí),張其林,王健,等.空間鋼結(jié)構(gòu)CAD軟件后處理系統(tǒng)的實(shí)體造型技術(shù)[J].同濟(jì)大學(xué)學(xué)報(bào),2000,28(3):297 -300.
[8]孫悅紅.永久反應(yīng)器的作用及實(shí)現(xiàn)方法[J].北京輕工業(yè)學(xué)院學(xué)報(bào),2001,19(1):41-45.