亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于VBA的道路橫斷面高程點提取方法研究

        2018-03-15 03:37:20歐陽平
        城市勘測 2018年1期
        關(guān)鍵詞:輔助設(shè)計道路設(shè)計橫斷面

        歐陽平

        (漳州市測繪設(shè)計研究院,福建 漳州 363000)

        1 引 言

        現(xiàn)代經(jīng)濟發(fā)展迅速,舊有道路標(biāo)準(zhǔn)已經(jīng)不能適應(yīng)現(xiàn)代交通、物流的需要,新修道路及舊有道路的更新都需要測繪提供準(zhǔn)確的道路縱橫斷面數(shù)據(jù),而不同道路設(shè)計軟件所要求的縱橫斷面數(shù)據(jù)格式不一。南方CASS一類常用測圖軟件并不能直接生成常用道路設(shè)計軟件所需格式斷面數(shù)據(jù)。道路橫斷面高程點很多,純手工編輯道路設(shè)計所需斷面數(shù)據(jù),工作量大且容易出錯。本文以常用的緯地道路輔助設(shè)計系統(tǒng)(HintCAD)所要求的橫斷面數(shù)據(jù)格式為例(縱斷面比較簡單,在此不與描述),利用AutoCAD的VBA編程語言進行二次開發(fā)來實現(xiàn)半自動提取高程點及平距,使得工作起來事半功倍,準(zhǔn)確快捷[1]。

        2 編程思路

        在實際工作中,我們需要測繪出道路各個橫斷面上的實際高程,沿道路中心線的里程增加方向,左側(cè)高程點到中樁點的平距(通過兩點的坐標(biāo)反算得到[2])為負(fù),右側(cè)高程點到中樁點的平距為正,并按照從左到右的順序依次排序,將高程點高程及相應(yīng)平距輸入到表格中,一個橫斷面為一行,格式如表1橫斷面高程表(緯地道路輔助設(shè)計系統(tǒng)要求格式之一)所示。為了方便闡述程序的編寫過程,將分為以下幾個步驟分別說明:

        (1)讀取一個中樁號,并在圖上點選中樁位置的高程點;

        (2)框選左側(cè)橫斷面上的高程點,并根據(jù)距中樁點的位置遠(yuǎn)近進行降序,并在距離值前加上負(fù)號;

        (3)框選右側(cè)橫斷面上的高程點,并根據(jù)距中樁點的位置遠(yuǎn)近進行升序排列,將成果依次輸入Excel表格中,如表1所示。

        橫斷面高程表 表1

        3 程序?qū)崿F(xiàn)

        3.1 程序設(shè)計流程

        首先在啟動程序之后自動加載菜單,其界面如圖1所示。點選道路橫斷面高程點提取子菜單后,彈出圖2窗口,設(shè)置好成果保存路徑,即可進行高程點提取工作。

        圖1 菜單界面

        圖2 主程序界面

        主程序運行流程如圖3所示:

        圖3 主程序運行流程圖

        3.2 主要步驟及程序源碼

        AutoCAD二次開發(fā)語言有VBA、LISP以及Object-ARX等,VBA及其環(huán)境易于學(xué)習(xí)和使用,它是一個面向?qū)ο蟮木幊汰h(huán)境,提供了豐富的開發(fā)工程。VBA工程可以是獨立的,也可以嵌入到圖形中,為開發(fā)人員提供了非常靈活的方式來發(fā)布程序[3],下面給出本程序的部分VBA源代碼。

        (1)選擇高程點并將結(jié)果寫入Excel中[4]

        Set sSet = ThisDrawing.Application.ActiveDocument.SelectionSets.Add("GCDZDM")

        dxf_code(0) = 2: dxf_value(0) = "GC200"

        ThisDrawing.Application.ActiveDocument.Utility.Prompt ("請選擇左邊的高程點:" & vbCr)

        sSet.SelectOnScreen dxf_code,dxf_value

        If sSet.Count > 0 Then

        ReDim DISTANDGCD(sSet.Count - 1,1)

        numofssetcount = sSet.Count

        End If

        i = 0

        For Each objEnt In sSet

        xyz(0) = objEnt.InsertionPoint(0)

        xyz(1) = objEnt.InsertionPoint(1)

        xyz(2) = objEnt.InsertionPoint(2)

        DISTANDGCD(i,0) = dist(pointMid,xyz)

        DISTANDGCD(i,1) = xyz(2)

        i = i + 1

        Next

        '對數(shù)組排序

        Call QuickSortDecend (DISTANDGCD(),0,sSet.Count - 1)

        '將數(shù)組寫進excel中

        xlsheet.Cells(num,1) = strlicheng

        xlsheet.Cells(num,2) = pointMid(2)

        For i = 0 To sSet.Count - 1

        xlsheet.Cells(num,2 * i + 3) = -DISTANDGCD(i,0)

        xlsheet.Cells(num,2 * i + 4) = DISTANDGCD(i,1)

        Next

        sSet.Delete

        (2)對平距進行降序排列函數(shù)[5]

        Sub QuickSortDecend(MyArray() As Variant,L,R)

        Dim i As Integer,j As Integer,X As Single,Y As Single,M As Single

        i = L

        j = R

        '找出數(shù)組的中點

        M = MyArray((L + R) / 2,0)

        While (i <= j)

        '找出比中點大的數(shù)

        While (MyArray(i,0) > M And i < R)

        i = i + 1

        Wend

        '找出比中點小的數(shù)

        While (M > MyArray(j,0) And j > L)

        j = j - 1

        Wend

        '互換這兩個數(shù)

        If (i <= j) Then

        X = MyArray(i,0)

        Y = MyArray(i,1)

        MyArray(i,0) = MyArray(j,0)

        MyArray(i,1) = MyArray(j,1)

        MyArray(j,0) = X

        MyArray(j,1) = Y

        i = i + 1

        j = j - 1

        End If

        Wend

        '未完成時遞歸調(diào)用

        If (L < j) Then Call QuickSortDecend(MyArray(),L,j)

        If (i < R) Then Call QuickSortDecend(MyArray(),i,R)

        End Sub

        3.3 應(yīng)用實例

        圖4為某古城內(nèi)道路改造工程現(xiàn)有道路實測橫斷面高程圖(部分),此圖不能被緯地道路輔助設(shè)計系統(tǒng)直接讀取、使用,需把實測高程點轉(zhuǎn)換為其自定義格式Excel表后讀取使用。

        圖4 橫斷面高程圖

        運行本程序后橫斷面高程點轉(zhuǎn)換為表2。

        橫斷面高程表(成果) 表2

        4 結(jié) 論

        (1)本插件在本院多條道路改造項目的原始橫斷面數(shù)據(jù)提取中投入使用,節(jié)省了時間及人力,取得了一定的經(jīng)濟效益。

        (2)本插件運行仍需手工輸入道路設(shè)計里程,選取斷面高程點,后期優(yōu)化方向是自動識別里程,讀取高程點,判斷道路方向及平距的正負(fù)。

        (3)本插件僅僅針對緯地道路輔助設(shè)計系統(tǒng)讀取原始地面橫斷面使用,針對不同軟件需進行調(diào)整,輸出不同格式。

        [1] 李文柱. AutoCAD VBA二次開發(fā)在道路橫斷面數(shù)據(jù)處理中的應(yīng)用[J]. 城市勘測,2008(3):127~129.

        [2] 吳獻(xiàn)豐. 道路橫斷面文件自動生成程序開發(fā)與實現(xiàn)[J]. 城市勘測,2013(3):150~151,154.

        [3] 劉軍,王小維. 基于AutoCAD地形高程基準(zhǔn)轉(zhuǎn)化程序設(shè)計[J]. 城市勘測,2015(1):116~118.

        [4] 潘瑜. Visual Basic程序設(shè)計[M]. 北京:科學(xué)出版社,2006.

        [5] 高春艷,李俊民,劉彬彬. Visual Basic應(yīng)用開發(fā)完全手冊[M]. 北京:人民郵電出版社,2006.

        猜你喜歡
        輔助設(shè)計道路設(shè)計橫斷面
        城市道路橫斷面設(shè)計研究
        基于圖形特征識別技術(shù)的電碼化輔助設(shè)計軟件開發(fā)與應(yīng)用
        某碼頭大件運輸?shù)缆吩O(shè)計淺析
        基于道路設(shè)計中的選線優(yōu)化設(shè)計研究
        軌道交通疏解道路設(shè)計研究
        試驗顯示方案輔助設(shè)計軟件的設(shè)計與實現(xiàn)
        三維“廠房CAD”輔助設(shè)計系統(tǒng)開發(fā)研究
        一種道路視野育區(qū)的全車輔助設(shè)計
        廣州市健康體檢人群種植修復(fù)情況的橫斷面研究
        2014年某院醫(yī)院感染橫斷面調(diào)查
        精品无码av无码专区| 一区二区三区日本大片| 久久人妻av无码中文专区| 日本激情久久精品人妻热| 人妻少妇中文字幕,久久精品| 色综合久久网| 看黄a大片日本真人视频直播| 久久亚洲av成人无码国产| 色哟哟av网站在线观看| 午夜视频在线观看国产| 国产精品视频自拍在线| 国产福利视频在线观看| 欧洲-级毛片内射| 成激情人妻视频| 久久国产精品免费一区二区三区| 国产偷国产偷亚洲高清视频| 国产综合在线观看| 国产亚洲精品第一综合麻豆| 无码高潮少妇毛多水多水免费| 免费看黄片视频在线观看| 亚洲av日韩av卡二| 亚洲国产午夜精品理论片在线播放 | 美腿丝袜视频在线观看| 色综合久久中文字幕综合网| 边喂奶边中出的人妻| 亚洲天堂2017无码中文| 免费在线观看亚洲视频| 国产自拍91精品视频| 特黄aaaaaaaaa毛片免费视频| 国产精品亚洲二区在线观看| 九九99久久精品午夜剧场免费| 久久精品亚洲成在人线av| 在线播放av不卡国产日韩| 一本色道无码道在线观看| 永久无码在线观看| 日本一区二区高清视频在线播放| 国语淫秽一区二区三区四区| 国产超碰女人任你爽| 亚洲精品无码久久毛片| 亚洲人成伊人成综合网中文 | 男女高潮免费观看无遮挡|