朱海鵬
(沈陽市市政工程設(shè)計(jì)研究院,遼寧沈陽 110015)
道路工程計(jì)算機(jī)輔助設(shè)計(jì)應(yīng)用廣泛,其中縱斷面設(shè)計(jì)數(shù)據(jù)量大,成圖量多,設(shè)計(jì)方法的改進(jìn)對(duì)提升道路設(shè)計(jì)工作效率至關(guān)重要,多年來國內(nèi)對(duì)縱斷面設(shè)計(jì)方法不斷研究,取得了較好的成果。在計(jì)算機(jī)輔助設(shè)計(jì)領(lǐng)域,AutoCAD.NET API 經(jīng)過十余年的發(fā)展,類庫逐漸完善成熟,新的科技成果應(yīng)該轉(zhuǎn)化為道路設(shè)計(jì)的利器。筆者在多年的道路設(shè)計(jì)實(shí)踐中,編制過多種工作模式的縱斷面設(shè)計(jì)程序。本文介紹的是一種基于夾點(diǎn)拖動(dòng)的縱斷面動(dòng)態(tài)拉坡新方法。該方法應(yīng)用夾點(diǎn)強(qiáng)制協(xié)議技術(shù),對(duì)縱斷面切線和豎曲線對(duì)象的夾點(diǎn)進(jìn)行重定義,通過簡單直觀的夾點(diǎn)拖動(dòng),實(shí)現(xiàn)縱斷面快速設(shè)計(jì)。
道路縱斷面設(shè)計(jì)過程包括數(shù)據(jù)準(zhǔn)備、縱斷拉坡、成圖輸出等,設(shè)計(jì)成果包括縱斷圖、土方橫斷圖、土方量表及多種數(shù)據(jù)表格??v斷面設(shè)計(jì)數(shù)據(jù)量較多,需要編制數(shù)據(jù)文件,在筆者編制的道路設(shè)計(jì)軟件中,數(shù)據(jù)文件采用 Excel 格式文件,包括縱斷高程、變坡點(diǎn)、平曲線、交叉口、橋梁墩臺(tái)、地質(zhì)概況、橫斷高程、橫斷面分段、橫斷面類型、邊坡分段、邊坡類型、清除表土、扣除土方、用地界線工作表。
縱斷面設(shè)計(jì)的成圖格式多種多樣,需要大量的選項(xiàng)設(shè)置來控制,包括標(biāo)注欄、縱斷面標(biāo)注、橫斷面標(biāo)注和圖幅布局設(shè)置。縱斷圖在設(shè)計(jì)文件中是分頁裝訂的,因此圖紙分頁的品質(zhì)具有重要作用。筆者編制的道路設(shè)計(jì)軟件,將縱斷面拉坡設(shè)計(jì)和成品圖表輸出作為兩個(gè)獨(dú)立模塊,首先通過數(shù)字化模型的縱斷面進(jìn)行動(dòng)態(tài)拉坡設(shè)計(jì),確定變坡點(diǎn)方案后再輸出成圖,設(shè)計(jì)過程清晰明確,操作簡單。
分析道路縱斷面,主要由縱斷剖面線、高程標(biāo)注欄、高程格網(wǎng)、高程標(biāo)尺、附加標(biāo)注幾部分組成,圖形元素較多,見圖1所示??v斷剖面線包括原地面線和設(shè)計(jì)線兩種,原地面線是現(xiàn)地實(shí)測(cè)高程的描述,在縱斷面設(shè)計(jì)過程中保持固定不變??v斷面設(shè)計(jì)線由一系列直線段和曲線段組成,為實(shí)現(xiàn)夾點(diǎn)拖動(dòng)式的動(dòng)態(tài)拉坡,軟件將設(shè)計(jì)線用切線和豎曲線兩種對(duì)象來組合,兩者均為多段線實(shí)體。實(shí)際工程設(shè)計(jì)中,經(jīng)常需要多個(gè)設(shè)計(jì)線方案比選,縱斷面拉坡圖需要支持多條設(shè)計(jì)線并存,最后一次編輯的設(shè)計(jì)線為當(dāng)前設(shè)計(jì)線,標(biāo)注欄高程值及所有圖面標(biāo)注,反映的是當(dāng)前設(shè)計(jì)線拉坡結(jié)果。特別要注意的是,道路縱斷面縱向比例和橫向比例通常是不一致的,這一特性對(duì)編程和應(yīng)用均有較大影響,需要予以特別考慮。道路縱斷面設(shè)計(jì)的目的,是在滿足控制點(diǎn)高程要求的情況下,通過平衡沿線土方填挖量,設(shè)計(jì)一條技術(shù)經(jīng)濟(jì)指標(biāo)合理、滿足規(guī)范要求的設(shè)計(jì)線。
現(xiàn)有的縱斷面設(shè)計(jì)動(dòng)態(tài)拉坡方法,大多是通過一個(gè)無模式對(duì)話框顯示縱斷面參數(shù),在表格控件中修改參數(shù)然后更新縱斷面,此法操作繁瑣,效果不直觀。筆者在編制道路設(shè)計(jì)軟件時(shí),通過分析研究,應(yīng)用 AutoCAD.NET API 夾點(diǎn)強(qiáng)制協(xié)議,以夾點(diǎn)拖動(dòng)法實(shí)現(xiàn)了縱斷面設(shè)計(jì)動(dòng)態(tài)拉坡。該方法無須調(diào)用命令,直接選取圖形實(shí)體,拖動(dòng)系列特征夾點(diǎn)即可完成操作。
隨著 Windows 操作系統(tǒng)版本升級(jí),基于.NET Framework 技術(shù)的應(yīng)用程序日益普及,AutoCAD.NET API 編程逐漸成為二次開發(fā)的主流方式,其豐富的類庫足以支持各種類型應(yīng)用軟件。新版本AutoCAD.NET 類庫提供了一種強(qiáng)制協(xié)議(Overrule)類型,包括夾點(diǎn)強(qiáng)制協(xié)議(GripOverrule)、圖形強(qiáng)制協(xié)議(DrawableOverrule)等多種類型,強(qiáng)制協(xié)議允許以編程方式重定義圖形實(shí)體的默認(rèn)行為和外觀樣式。本文所述道路縱斷面設(shè)計(jì)動(dòng)態(tài)拉坡,即應(yīng)用夾點(diǎn)強(qiáng)制協(xié)議技術(shù)實(shí)現(xiàn)。
夾點(diǎn)強(qiáng)制協(xié)議類(GripOverrule)從基類Overrule 派生,使用時(shí)必須創(chuàng)建基于該類的繼承類。在軟件的具體實(shí)現(xiàn)中,對(duì)應(yīng)于縱斷面切線和豎曲線對(duì)象,創(chuàng)建了切線夾點(diǎn)類(ProfileTangentGrip)和豎曲線夾點(diǎn)類(ProfileCurveGrip),兩者均繼承自GripOverrule 類,按規(guī)則要求重寫基類的獲取夾點(diǎn)、移動(dòng)夾點(diǎn)、拖動(dòng)狀態(tài)處理等方法。自定義夾點(diǎn)需要獨(dú)立的位置和形狀,為此創(chuàng)建一個(gè)繼承 GripData類的自定義夾點(diǎn)數(shù)據(jù)類,其中定義了夾點(diǎn)圖形形狀、關(guān)聯(lián)數(shù)據(jù)索引、拖動(dòng)行為目的等用于縱斷面設(shè)計(jì)的屬性。
夾點(diǎn)強(qiáng)制協(xié)議必須在程序加載時(shí)自動(dòng)設(shè)置,以便用戶打開圖形文件后即可執(zhí)行動(dòng)態(tài)拉坡。實(shí)現(xiàn)這一目的需要兩種技術(shù)手段,首先在夾點(diǎn)協(xié)議類中定義一個(gè)該類的靜態(tài)實(shí)例并創(chuàng)建一個(gè)圖形實(shí)體過濾條件的靜態(tài)方法,然后通過IextensionApplication 接口的 Initialize 方法調(diào)用靜態(tài)方法。自定義夾點(diǎn)支持 AutoCAD 基本操作,按 Shift鍵可選擇多個(gè)夾點(diǎn)同時(shí)拖動(dòng),使用正交模式或拖動(dòng)時(shí)按住 Shift 鍵限定在垂直和水平方向拖動(dòng),拖動(dòng)時(shí)按住 Ctrl 鍵的同時(shí)按鼠標(biāo)右鍵可以選擇各種捕捉方式?;趭A點(diǎn)強(qiáng)制協(xié)議的縱斷面設(shè)計(jì)動(dòng)態(tài)拉坡程序,將技術(shù)復(fù)雜性隱藏在幕后,使用者只需專注設(shè)計(jì)工作本身,通過簡單的夾點(diǎn)拖動(dòng)完成大部分縱斷面設(shè)計(jì)工作。
縱斷面切線對(duì)象的自定義夾點(diǎn)設(shè)置為三種,變坡點(diǎn)夾點(diǎn)、坡段中點(diǎn)夾點(diǎn)和坡段拉伸夾點(diǎn),見圖2所示。變坡點(diǎn)夾點(diǎn)位于切線多段線的頂點(diǎn),形狀為正方形,橫向拖動(dòng)時(shí)修改變坡點(diǎn)樁號(hào),豎向拖動(dòng)時(shí)修改變坡點(diǎn)高程,也可任意拖動(dòng)位置,變坡點(diǎn)夾點(diǎn)支持快捷菜單,通過菜單中的添加頂點(diǎn)和刪除頂點(diǎn),可快速執(zhí)行變坡點(diǎn)的添加刪除。坡段中點(diǎn)夾點(diǎn)位于切線線段的中點(diǎn),形狀為矩形,用于拖動(dòng)坡段的橫向和豎向位置,可同時(shí)拖動(dòng)多個(gè)坡段。坡段拉伸夾點(diǎn)位于坡段的延伸線上,形狀為三角形,夾點(diǎn)拖動(dòng)時(shí)限定變坡點(diǎn)在坡段及其延長線上移動(dòng),用于延長或縮短坡段。
圖2 縱斷面切線夾點(diǎn)示意圖
縱斷面切線夾點(diǎn)拖動(dòng)時(shí),即可以用鼠標(biāo)定點(diǎn),也可通過鍵盤輸入數(shù)值在拖拽線方向精確定點(diǎn),后者需要考慮縱斷面縱橫比例。夾點(diǎn)強(qiáng)制協(xié)議類內(nèi)部,設(shè)置了點(diǎn)位動(dòng)態(tài)跟蹤機(jī)制,當(dāng)切線夾點(diǎn)拖動(dòng)時(shí),用瞬態(tài)圖形實(shí)時(shí)更新切線和豎曲線,直觀反映縱斷面的變化,如果拖動(dòng)點(diǎn)位超出合理范圍,設(shè)計(jì)線圖形自動(dòng)還原。夾點(diǎn)拖動(dòng)后,自動(dòng)執(zhí)行縱斷面更新,包括控制點(diǎn)標(biāo)注、豎曲線參數(shù)標(biāo)注和標(biāo)注欄中的大量數(shù)值。
縱斷面豎曲線對(duì)象的自定義夾點(diǎn)設(shè)置為三個(gè),起點(diǎn)夾點(diǎn)、終點(diǎn)夾點(diǎn)和通過點(diǎn)夾點(diǎn),形狀均為圓形,見圖3所示,凸曲線與凹曲線夾點(diǎn)相同。起點(diǎn)夾點(diǎn)和終點(diǎn)夾點(diǎn)用于拖動(dòng)豎曲線切點(diǎn),用豎曲線切線長度反算半徑,通過點(diǎn)夾點(diǎn)用于拖動(dòng)豎曲線的穿越點(diǎn),用支距反算豎曲線半徑。
圖3 縱斷面豎曲線夾點(diǎn)示意圖
縱斷面豎曲線夾點(diǎn)拖動(dòng)時(shí),也可用鼠標(biāo)定點(diǎn)和鍵盤輸入兩種方式定點(diǎn),拖動(dòng)相鄰豎曲線的端點(diǎn),可快速實(shí)現(xiàn)首尾相接的復(fù)合豎曲線。夾點(diǎn)拖動(dòng)時(shí),除了用瞬態(tài)圖形實(shí)時(shí)更新豎曲線,為便于觀察豎曲線切點(diǎn)的變化,軟件在豎曲線端點(diǎn)增設(shè)了標(biāo)識(shí)圓,如果拖動(dòng)點(diǎn)位超出合理范圍,豎曲線圖形自動(dòng)還原。在實(shí)際應(yīng)用中,可以同時(shí)夾選縱斷面切線和多條豎曲線,反復(fù)拖動(dòng)多種夾點(diǎn),快速實(shí)現(xiàn)預(yù)期設(shè)計(jì)效果。
動(dòng)態(tài)拉坡是道路縱斷面設(shè)計(jì)的一種快捷方法,但不是唯一方法,在軟件的具體實(shí)現(xiàn)中,包含了諸多參數(shù)化設(shè)計(jì)命令。縱斷面切線從數(shù)據(jù)文件導(dǎo)入,適用于修改現(xiàn)有道路,切線從原地面擬合生成,適用于舊路補(bǔ)強(qiáng)設(shè)計(jì),切線從任意多段線轉(zhuǎn)換,對(duì)快速實(shí)施方案比選十分有用。此外,變坡點(diǎn)和豎曲線的添加、修改、刪除,縱斷面動(dòng)態(tài)查詢和技術(shù)指標(biāo)統(tǒng)計(jì)等等,均以對(duì)話框和命令行方式支持縱斷面參數(shù)化設(shè)計(jì)。事實(shí)上,僅使用參數(shù)化設(shè)計(jì)方法,亦完全可以實(shí)現(xiàn)縱斷面設(shè)計(jì)。
縱斷面動(dòng)態(tài)拉坡一般采用鼠標(biāo)定點(diǎn)的方式進(jìn)行快速設(shè)計(jì),設(shè)計(jì)參數(shù)里的樁號(hào)、坡長、坡度和豎曲線半徑大多帶有零數(shù),而道路設(shè)計(jì)的習(xí)慣是這些參數(shù)盡可能采用整數(shù),軟件在縱斷面參數(shù)命令中提供了參數(shù)取整功能,按指定的數(shù)值精度,對(duì)縱斷面全線的變坡點(diǎn)里程、縱坡度和豎曲線半徑進(jìn)行取整運(yùn)算,見圖4所示??v斷面設(shè)計(jì)完成后,通過導(dǎo)出變坡點(diǎn)命令將設(shè)計(jì)結(jié)果導(dǎo)出到數(shù)據(jù)文件,與其它工作表組成完整的數(shù)據(jù)文件,即可輸出格式化的縱斷圖、橫斷圖、土方表等成品圖紙。
圖4 縱斷面參數(shù)化設(shè)計(jì)圖示
道路縱斷面設(shè)計(jì)從傳統(tǒng)的手工方法到計(jì)算機(jī)輔助設(shè)計(jì),曾經(jīng)是一個(gè)質(zhì)的飛躍,數(shù)字化縱斷面設(shè)計(jì)為提高生產(chǎn)力做出了巨大貢獻(xiàn)??萍及l(fā)展無止境,筆者在多年的設(shè)計(jì)實(shí)踐工作中,編制過多種工作模式的縱斷面設(shè)計(jì)軟件,從文本格式的數(shù)據(jù)文件到 Excel 表格式數(shù)據(jù)文件,從單純自動(dòng)成圖到交互式參數(shù)化設(shè)計(jì),歷次進(jìn)步都融入了計(jì)算機(jī)科技的發(fā)展成果。近年來 Microsoft Visual Studio 開發(fā)工具發(fā)展很快,AutoCAD 各個(gè)升級(jí)版本均為 .NET API 類庫增加一些新特性。如何將計(jì)算機(jī)科技新成果應(yīng)用到道路工程設(shè)計(jì)工作中,是個(gè)亟待解決的科技成果轉(zhuǎn)化問題。本文所述道路縱斷面設(shè)計(jì)動(dòng)態(tài)拉坡方法研究,提供了一個(gè)研究探索的實(shí)例,且已取得實(shí)際應(yīng)用效果?;趭A點(diǎn)拖動(dòng)的動(dòng)態(tài)拉坡設(shè)計(jì),操作簡單,視覺直觀,給道路設(shè)計(jì)工作帶來全新感受,實(shí)際設(shè)計(jì)應(yīng)用中效果良好。
[1] 楊少偉,等.道路勘測(cè)設(shè)計(jì)[M].北京:人民交通出版社.2004.
[2] 朱照宏,等.道路勘測(cè)設(shè)計(jì)軟件開發(fā)與應(yīng)用指南[M].北京:人民交通出版社,2003.
[3] 符鋅砂.公路計(jì)算機(jī)輔助設(shè)計(jì)[M].北京:人民交通出版社,2008.