• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

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

      歐陽平

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

      1 引 言

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

      2 編程思路

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

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

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

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

      橫斷面高程表 表1

      3 程序實現(xiàn)

      3.1 程序設計流程

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

      圖1 菜單界面

      圖2 主程序界面

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

      圖3 主程序運行流程圖

      3.2 主要步驟及程序源碼

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

      (1)選擇高程點并將結果寫入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

      '未完成時遞歸調用

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

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

      End Sub

      3.3 應用實例

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

      圖4 橫斷面高程圖

      運行本程序后橫斷面高程點轉換為表2。

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

      4 結 論

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

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

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

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

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

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

      [4] 潘瑜. Visual Basic程序設計[M]. 北京:科學出版社,2006.

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

      猜你喜歡
      輔助設計道路設計橫斷面
      城市道路橫斷面設計研究
      基于圖形特征識別技術的電碼化輔助設計軟件開發(fā)與應用
      某碼頭大件運輸?shù)缆吩O計淺析
      工程與建設(2019年5期)2020-01-19 06:22:34
      基于道路設計中的選線優(yōu)化設計研究
      中華建設(2019年4期)2019-07-10 11:51:00
      軌道交通疏解道路設計研究
      試驗顯示方案輔助設計軟件的設計與實現(xiàn)
      測控技術(2018年11期)2018-12-07 05:49:08
      三維“廠房CAD”輔助設計系統(tǒng)開發(fā)研究
      一種道路視野育區(qū)的全車輔助設計
      廣州市健康體檢人群種植修復情況的橫斷面研究
      2014年某院醫(yī)院感染橫斷面調查
      马关县| 锦屏县| 利辛县| 株洲市| 武清区| 巩留县| 正宁县| 鄂尔多斯市| 塔城市| 金溪县| 增城市| 寿光市| 湖北省| 什邡市| 南部县| 陆良县| 丁青县| 剑川县| 江油市| 巴林左旗| 陆河县| 化隆| 通州区| 交口县| 黑河市| 广德县| 长沙县| 桐庐县| 镇康县| 辉县市| 奈曼旗| 布尔津县| 普安县| 临海市| 秀山| 息烽县| 尖扎县| 安仁县| 潞城市| 江津市| 顺平县|