• 
    

    
    

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

      ?

      AutoCAD二次開發(fā)在隧道斷面測量中的應(yīng)用

      2015-01-12 05:57:47
      山西建筑 2015年33期
      關(guān)鍵詞:坐標(biāo)軸二次開發(fā)軸線

      張 云 鵬

      (中鐵電氣化勘測設(shè)計(jì)研究院勘測分院,天津 300250)

      ·測量·

      AutoCAD二次開發(fā)在隧道斷面測量中的應(yīng)用

      張 云 鵬

      (中鐵電氣化勘測設(shè)計(jì)研究院勘測分院,天津 300250)

      針對隧道斷面儀自帶軟件無法滿足繪圖要求的問題,采用AutoCAD二次開發(fā)技術(shù)編程對原始測量數(shù)據(jù)進(jìn)行處理,實(shí)現(xiàn)了隧道斷面尺寸圖的自動(dòng)繪制,并自動(dòng)標(biāo)記鐵軌左右軌面的位置,極大的提高了繪圖效率。

      二次開發(fā),AutoCAD,VBA語言,斷面測量

      0 引言

      隧道斷面測量是隧道設(shè)計(jì)施工中必不可少的一個(gè)階段。目前常用的隧道斷面測量方法主要有斷面儀法、全站儀法和三維激光掃描儀法三種。斷面儀法由于儀器價(jià)格低廉、操作簡便、精度較高等優(yōu)點(diǎn),應(yīng)用最為廣泛。激光隧道斷面儀采用激光測距技術(shù)和數(shù)字測角技術(shù),根據(jù)極坐標(biāo)測量原理獲取隧道斷面尺寸,利用圖像后處理軟件能夠迅速得到隧道斷面尺寸圖。

      然而,在具體工程實(shí)踐當(dāng)中,經(jīng)常要根據(jù)工程需求對隧道斷面數(shù)據(jù)進(jìn)行后續(xù)處理,而斷面儀自帶軟件功能有限,往往不能滿足需求,需要另行編制數(shù)據(jù)處理程序。

      本文結(jié)合京通鐵路電氣化改造項(xiàng)目中隧道斷面測量的實(shí)踐,詳細(xì)闡述了基于VBA的CAD二次開發(fā)技術(shù)在隧道斷面測量數(shù)據(jù)處理中的應(yīng)用。

      1 VBA簡介

      VBA全稱Visual Basic for Applications,是由微軟公司開發(fā)的一種標(biāo)準(zhǔn)宏語言,具有完整的高級語言特征。利用VBA語言對AutoCAD進(jìn)行二次開發(fā)可以增加或直接修改AutoCAD中的命令、擴(kuò)大圖形的編輯能力、建立數(shù)據(jù)庫和圖形庫,并能實(shí)現(xiàn)對當(dāng)前圖形的直接訪問或修改。此外,VBA所附的屬性數(shù)據(jù)操作更為簡便,可以直接讀取屬性文件,或者在VBA下或CAD圖上輸入。VBA實(shí)現(xiàn)了面向?qū)ο蟮拈_發(fā)技術(shù),改變了傳統(tǒng)的開發(fā)模式,使開發(fā)人員不用了解AutoCAD的內(nèi)核,即可利用當(dāng)前流行的可視化開發(fā)語言進(jìn)行內(nèi)部開發(fā),極大地提高了開發(fā)效率,是AutoCAD二次開發(fā)的理想工具。

      2 工程要求

      京通鐵路電氣化改造項(xiàng)目初測時(shí)采用了BJSD-2E型激光隧道斷面測距儀對沿線隧道進(jìn)行斷面測量。由于測量工作在既有鐵路上進(jìn)行,在工作期間鐵路正常運(yùn)行,而隧道中心軸線一般在鐵路左右軌之間,不便于在中軸線上架設(shè)儀器,因此,測量時(shí)將儀器直接架設(shè)在軌頂上,設(shè)置好采樣間隔及測量點(diǎn)數(shù)以后,由軟件控制儀器自動(dòng)完成測量工作。根據(jù)工程需求,本次隧道斷面測量需要提供以隧道中心軸線為豎軸的隧道斷面實(shí)際尺寸圖,并在圖上標(biāo)記出隧道中心軸線及鐵路左右鐵軌的位置。

      3 程序開發(fā)的主要功能模塊

      本程序是針對BJSD-2E型激光隧道斷面儀的測量數(shù)據(jù)開發(fā)的。BJSD-2E型激光隧道斷面儀的原始測量數(shù)據(jù)可以導(dǎo)出為txt數(shù)據(jù)文件,文件格式如表1所示。

      表1 BJSD-2E型激光隧道斷面儀原始數(shù)據(jù)文件 m

      程序可以實(shí)現(xiàn)的功能主要有斷面測點(diǎn)的展繪,測點(diǎn)連線,計(jì)算隧道中心軸線位置及鐵軌位置。以下對各項(xiàng)功能的開發(fā)做詳細(xì)論述。

      3.1 計(jì)算隧道中心軸線位置

      BJSD-2E型激光隧道斷面儀測量的數(shù)據(jù)以設(shè)站位置為測量坐標(biāo)系原點(diǎn),而工程要求以隧道中心軸線為豎軸,因此需要先計(jì)算出隧道中心軸線的位置,然后以隧道中心軸線為豎軸將測點(diǎn)坐標(biāo)進(jìn)行平移。

      為了便于數(shù)據(jù)存儲,需要先定義一個(gè)數(shù)據(jù)結(jié)構(gòu)用于存儲每個(gè)測點(diǎn),代碼如下:

      Public Type ppoint

      id As Integer

      localtion(1 To 3) As Double

      End Type

      上述數(shù)據(jù)結(jié)構(gòu)ppoint包括兩個(gè)屬性,其中id用于存儲測點(diǎn)點(diǎn)號,location(1 To 3)用于存儲每個(gè)測點(diǎn)的坐標(biāo)。由于AutoCAD中默認(rèn)的坐標(biāo)格式是三維坐標(biāo),因此要給每個(gè)測點(diǎn)的location(3)賦值0。需要指出的是,原始數(shù)據(jù)中的z坐標(biāo)是測量坐標(biāo)系中的z,讀入CAD時(shí)是當(dāng)作繪圖坐標(biāo)系中的y坐標(biāo)讀入的,對應(yīng)數(shù)據(jù)結(jié)構(gòu)中l(wèi)ocation(2)。

      由于鐵路隧道斷面形狀比較規(guī)則,表面也較為光滑,因此隧道斷面中心軸線位置可以根據(jù)斷面測量點(diǎn)x坐標(biāo)的最大值和最小值進(jìn)行計(jì)算:

      (1)

      其中,xh為隧道中心軸線的x坐標(biāo);xmin,xmax分別為斷面測點(diǎn)x坐標(biāo)的最小值和最大值。

      由式(1)可知,要計(jì)算隧道中心軸線位置需要先求出測點(diǎn)x坐標(biāo)的最大值和最小值。

      求x最大值的子過程代碼如下:

      Public Sub xmax(a() As ppoint)′求x最大值

      Dim i As Integer, j As Integer, pmax As Double

      pmax=a(1).localtion(1)

      For i=2 To UBound(a)

      If a(i).localtion(1)>pmax Then

      pmax=a(i).localtion(1)

      End If

      Next i

      xxmax = pmax

      End Sub

      代碼中的xxmax即為x的最大值,求x的最小值代碼與之類似。求出x坐標(biāo)的最大值和最小值后就可按照式(1)計(jì)算隧道中心軸線位置。

      3.2 斷面測點(diǎn)展繪

      求出隧道中心軸線x坐標(biāo)后,即可將原始測量坐標(biāo)平移到以隧道中心軸線為豎軸的坐標(biāo)系中。

      平移過程按式(2)進(jìn)行:

      (2)

      其中,x′,y′分別為平移后測點(diǎn)的x坐標(biāo)和y坐標(biāo);x0,z0均為測點(diǎn)的原始測量坐標(biāo);xh為隧道中心軸線的x坐標(biāo)。平移后原始測量數(shù)據(jù)中的z坐標(biāo)轉(zhuǎn)換為AutoCAD繪圖坐標(biāo)系下的y坐標(biāo)。坐標(biāo)平移的過程可以通過以下代碼實(shí)現(xiàn):

      p1(i).localtion(1) = p1(i).localtion(1)-xh

      代碼中的localtion(1)為測點(diǎn)的x坐標(biāo)。經(jīng)過平移后的測點(diǎn)坐標(biāo)可直接用于展繪。繪制測點(diǎn)可以使用VBA中的Addpoint方法,具體代碼如下:

      Set pointObj = ThisDrawing.ModelSpace.AddPoint(p1(i).localtion)

      測點(diǎn)展繪完后還需要將測點(diǎn)依次連接起來,可通過以下代碼實(shí)現(xiàn):

      For i=2 To t

      Set lineobj=ThisDrawing.ModelSpace.AddLine(p1(i - 1).localtion, p1(i).localtion)

      Next i

      Set lineobj=ThisDrawing.ModelSpace.AddLine(p1(t).localtion, p1(1).localtion)

      上述代碼中先利用一個(gè)For循環(huán)依次從第一點(diǎn)連接到最后一點(diǎn),最后再將最后一點(diǎn)同第一點(diǎn)連接,使圖形閉合。

      展繪結(jié)果見圖1。

      由于繪圖時(shí)對原始測量坐標(biāo)進(jìn)行了平移,為了便于讀圖還需要繪制坐標(biāo)軸。繪制坐標(biāo)軸時(shí)首先根據(jù)坐標(biāo)的最大值和最小值確定坐標(biāo)軸線的起點(diǎn)和終點(diǎn),然后將坐標(biāo)軸以相同間隔等分,并標(biāo)注刻度。

      將坐標(biāo)軸等分時(shí)可以利用窮舉法來確定等分份數(shù),確定豎軸正半軸等分份數(shù)的代碼如下:

      Do While 0.5*n3 < zzmax

      n3=n3+1

      Loop

      上述代碼中以0.5 m為間隔對豎軸正半軸進(jìn)行等分。zzmax為測點(diǎn)z坐標(biāo)的最大值,n3為豎軸正軸等分份數(shù),當(dāng)0.5*n3的值大于zzmax時(shí),n3即為豎軸正半軸等分份數(shù)。確定等分份數(shù)以后,再依次繪制坐標(biāo)軸刻度線并進(jìn)行標(biāo)注。坐標(biāo)軸刻度線本質(zhì)上是一列短直線,因此繪制刻度線時(shí)可以采用AddLine方法,添加刻度值可以采用AddText方法。

      繪制豎軸的核心代碼如下:

      Set line1obj = ThisDrawing.ModelSpace.AddLine(sp2, ep2)′繪制豎軸

      For i = 1 To n3

      txtp(1) = 0.15

      txtp(2) = 0.5 * i

      txtp(3) = 0

      txtr = i * 0.5

      Set txtobj = ThisDrawing.ModelSpace.AddText(txtr, txtp, 0.1)

      sp1(1) = 0.12

      sp1(2) = i * 0.5

      sp1(3) = 0

      ep1(1) = xh-xh

      ep1(2) = i * 0.5

      ep1(3) = 0

      Set line2 = ThisDrawing.ModelSpace.AddLine(sp1, ep1)

      Next i

      上述代碼中,sp2和ep2分別為豎軸的起點(diǎn)和終點(diǎn),用于繪制豎軸。txtp為文字插入點(diǎn)的坐標(biāo),txtr為刻度數(shù)值,用于標(biāo)注坐標(biāo)軸刻度值。繪制橫軸的過程與橫軸類似。

      坐標(biāo)軸繪制效果見圖2。

      3.3 鐵軌軌面位置標(biāo)注

      在隧道的改造過程中,鐵軌軌面的位置十分重要,因此需要在圖上明確標(biāo)記出鐵軌左右軌的位置。

      由于現(xiàn)場作業(yè)條件的限制,斷面掃描儀只能架設(shè)在鐵軌的軌頂上,因此原始測量坐標(biāo)系的原點(diǎn)在左軌或者右軌上。由于京通鐵路是單線鐵路,沿線隧道中只有一條軌道,因此隧道中心軸線位置大致位于鐵路中心。隧道中心軸線位置xh可根據(jù)式(1)算出。根據(jù)xh的正負(fù)可以判斷出左軌和右軌的位置:若xh>0則原點(diǎn)為左軌,根據(jù)式(2)左軌x坐標(biāo)為-xh,左軌x坐標(biāo)加上標(biāo)準(zhǔn)軌寬1.435 m即為右軌x坐標(biāo);若xh<0則原點(diǎn)為右軌,右軌x坐標(biāo)為-xh,左軌x坐標(biāo)為-xh-1.435 m。

      4 結(jié)語

      在工程實(shí)踐當(dāng)中,一臺斷面儀日均測量斷面40個(gè)~50個(gè),斷面尺寸圖的繪制工作量巨大,若完全由人工完成耗時(shí)較長。采用基于VBA的AutoCAD二次開發(fā)技術(shù)編程對測量數(shù)據(jù)進(jìn)行處理,可以實(shí)現(xiàn)繪圖工作的自動(dòng)完成,繪圖人員只需將原始測量數(shù)據(jù)導(dǎo)入繪圖程序即可,極大地提高了工作效率。由此可以看出,將AutoCAD的二次開發(fā)技術(shù)應(yīng)用于測繪工作中可以極大的提高數(shù)據(jù)處理準(zhǔn)確性及工作效率,具有重要的現(xiàn)實(shí)意義。

      [1] 廖胤齊.地鐵隧道結(jié)構(gòu)斷面測量方法及對比分析.北京測繪,2014(4):84-86.

      [2] 唐志煒.基于Visual Lisp的AUTOCAD的二次開發(fā).長春:吉林大學(xué),2008.

      [3] 康保成.Auto LISP 程序在 AutoCAD 中的應(yīng)用實(shí)例.山西建筑,2002,28(3):157-158.

      [4] 牟 航.基于VBA的CAD二次開發(fā)無縫線路配軌系統(tǒng)研究.蘭州:蘭州交通大學(xué),2013.

      [5] 黃 武.基于Lisp的CAD二次開發(fā)在排水?dāng)?shù)據(jù)處理中的應(yīng)用.地理空間信息,2014(10):137-139.

      [6] 李與權(quán).論AutoCAD的二次開發(fā).電腦編程技巧與維護(hù),1995(3):42-45.

      [7] 陸柏樹,劉云彪,李同林.AutoCAD VBA 在滑坡穩(wěn)定性計(jì)算方面的應(yīng)用.資源環(huán)境與工程,2007(3):331-334.

      Application of AutoCAD secondary development in the tunnel section measuring

      Zhang Yunpeng

      (SurveyBranchInstitute,ChinaRailwayElectrificationSurveyDesignandResearchInstitute,Tianjin300250,China)

      In order to solve the problem that the sofrware of tunnel laser profiler offered by manufacturer can not meet the the requirements of engineering drawings, this paper processes the original measurement data using the program compiled by AutoCAD secondary development technology. This program can draw the tunnel section size chart automatically, and marker the position of the rail tracks, which greatly improves the efficiency of drawing.

      secondary development, AutoCAD, VBA language, section measuring

      2015-09-14

      張?jiān)迄i(1987- ),男,碩士,助理工程師

      1009-6825(2015)33-0201-03

      U452.14

      A

      猜你喜歡
      坐標(biāo)軸二次開發(fā)軸線
      用坐標(biāo)軸平移妙解斜率和(或積)為定值問題
      曲軸線工件劃傷問題改進(jìn)研究
      淺談基于Revit平臺的二次開發(fā)
      甘肅科技(2020年20期)2020-04-13 00:30:02
      淺談Mastercam后處理器的二次開發(fā)
      模具制造(2019年3期)2019-06-06 02:11:02
      西門子Easy Screen對倒棱機(jī)床界面二次開發(fā)
      基于回歸分析的水電機(jī)組軸線曲折預(yù)判斷分析
      巧用仿射變換妙解高考解析幾何題
      行書章法淺析(十五)書寫應(yīng)把握行軸線
      凸輪軸孔軸線與止推面垂直度超差問題研究
      河南科技(2014年16期)2014-02-27 14:13:21
      基于Pro/E二次開發(fā)的推土鏟參數(shù)化模塊開發(fā)
      海口市| 江北区| 浮梁县| 寻乌县| 高邮市| 合江县| 竹溪县| 雅江县| 平顶山市| 道孚县| 青海省| 唐山市| 夏津县| 双柏县| 沙田区| 手游| 绥宁县| 大冶市| 革吉县| 凉山| 昭平县| 桦川县| 仁化县| 盈江县| 江都市| 长汀县| 新邵县| 西贡区| 珲春市| 遵化市| 黑水县| 香港 | 裕民县| 咸丰县| 汤原县| 龙口市| 连南| 南昌市| 阿荣旗| 漯河市| 拜城县|