999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于VBA的道路橫斷面高程點(diǎn)提取方法研究

2018-03-15 03:37:20歐陽(yáng)平
城市勘測(cè) 2018年1期
關(guān)鍵詞:二次開(kāi)發(fā)程序

歐陽(yáng)平

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

1 引 言

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

2 編程思路

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

(1)讀取一個(gè)中樁號(hào),并在圖上點(diǎn)選中樁位置的高程點(diǎn);

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

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

橫斷面高程表 表1

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

3.1 程序設(shè)計(jì)流程

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

圖1 菜單界面

圖2 主程序界面

主程序運(yùn)行流程如圖3所示:

圖3 主程序運(yùn)行流程圖

3.2 主要步驟及程序源碼

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

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

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

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

ThisDrawing.Application.ActiveDocument.Utility.Prompt ("請(qǐng)選擇左邊的高程點(diǎn):" & 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

'對(duì)數(shù)組排序

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

'將數(shù)組寫(xiě)進(jìn)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)對(duì)平距進(jìn)行降序排列函數(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ù)組的中點(diǎn)

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

While (i <= j)

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

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

i = i + 1

Wend

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

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

j = j - 1

Wend

'互換這兩個(gè)數(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

'未完成時(shí)遞歸調(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)用實(shí)例

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

圖4 橫斷面高程圖

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

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

4 結(jié) 論

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

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

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

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

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

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

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

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

猜你喜歡
二次開(kāi)發(fā)程序
淺談基于Revit平臺(tái)的二次開(kāi)發(fā)
甘肅科技(2020年20期)2020-04-13 00:30:02
西門(mén)子Operate高級(jí)編程的旋轉(zhuǎn)坐標(biāo)系二次開(kāi)發(fā)
淺談Mastercam后處理器的二次開(kāi)發(fā)
模具制造(2019年3期)2019-06-06 02:11:02
試論我國(guó)未決羈押程序的立法完善
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
英國(guó)與歐盟正式啟動(dòng)“離婚”程序程序
創(chuàng)衛(wèi)暗訪程序有待改進(jìn)
Micaps3.2 版本二次開(kāi)發(fā)入門(mén)淺析
西藏科技(2015年12期)2015-09-26 12:13:51
ANSYS Workbench二次開(kāi)發(fā)在汽車(chē)穩(wěn)定桿CAE分析中的應(yīng)用
主站蜘蛛池模板: 午夜精品影院| 亚洲综合色在线| 久久公开视频| 自慰高潮喷白浆在线观看| 婷婷午夜影院| 无码专区在线观看| 久久久久青草大香线综合精品| 国内精品久久人妻无码大片高| 亚洲二区视频| 亚洲码一区二区三区| 久久亚洲国产视频| 一级毛片免费观看久| 亚洲天堂精品在线| 一本大道视频精品人妻| 天天激情综合| 色婷婷国产精品视频| P尤物久久99国产综合精品| 国产高清在线丝袜精品一区| 亚洲欧美人成电影在线观看| 四虎综合网| 欧美亚洲中文精品三区| 中文字幕免费视频| 国产成本人片免费a∨短片| 国产成人AV综合久久| 精品福利一区二区免费视频| 99精品免费欧美成人小视频 | 中文一区二区视频| 美女被操91视频| 日本91在线| 免费播放毛片| 国产精品视频公开费视频| 伊人久久久久久久| 亚洲综合色婷婷| 欧美中文一区| 日韩专区欧美| 色综合五月| 欧美精品1区2区| 91无码人妻精品一区二区蜜桃| 日韩小视频在线观看| 成人福利一区二区视频在线| 在线观看国产黄色| 成年人午夜免费视频| 色噜噜狠狠狠综合曰曰曰| 91精品国产情侣高潮露脸| 国产福利免费视频| 亚洲热线99精品视频| 4虎影视国产在线观看精品| 成人免费午间影院在线观看| 欧美中文字幕在线播放| 粉嫩国产白浆在线观看| 国产在线视频导航| 国产精品理论片| 国产精品夜夜嗨视频免费视频| 91外围女在线观看| 色屁屁一区二区三区视频国产| 中文字幕永久在线观看| 精品亚洲国产成人AV| 日本精品αv中文字幕| 国产成人1024精品下载| 久久人人妻人人爽人人卡片av| 91精品视频播放| 亚洲精品国产成人7777| 欧美成人看片一区二区三区| 成人免费网站久久久| 一级毛片在线直接观看| 日本欧美成人免费| 国产永久无码观看在线| 国产女人综合久久精品视| 狠狠久久综合伊人不卡| 欧美日韩在线国产| 国产成人精品一区二区秒拍1o| 精品国产网| 99精品热视频这里只有精品7| 伊人久久精品亚洲午夜| 色色中文字幕| 亚洲swag精品自拍一区| 日本人妻一区二区三区不卡影院 | 9丨情侣偷在线精品国产| 亚洲成A人V欧美综合| 99re在线免费视频| 国产熟女一级毛片| 国产乱人免费视频|