精品人妻无码一区二区三区软件 ,麻豆亚洲AV成人无码久久精品,成人欧美一区二区三区视频,免费av毛片不卡无码

您現(xiàn)在的位置是:首頁建筑設計論文

Excel VBA在工程測量上的應用_建筑設計論文發(fā)表

發(fā)布時間:2011-08-29 08:44:21更新時間:2011-08-29 08:46:58 1

Excel VBA在工程測量上的應用
孫天義

摘要:Excel是工作中經(jīng)常使用的辦公軟件。在測量工作中,也有很大的應用,比如,計算一個角度的三角函數(shù)值、導線計算。Excel本身提供了強大的二次開發(fā)功能,本文將闡述用它來解決上面所提到的問題。

關鍵詞:Excel VBA 工程測量 導線計算


0引言
Excel是大家很熟悉的辦公軟件,相信大家在工作中經(jīng)常使用。在測量工作中,計算一個角度的三角函數(shù)值,而角度的單位是60進制的,計算起來比較困難,Excel本身無法直接計算60進制的角度的三角函數(shù),將利用函數(shù)語言解決轉(zhuǎn)換問題,從而完成導線計算。
1實例DEG的函數(shù)
初識VBAIDE,首先,必須懂得一些簡單的VB編程常識。
打開Excel,按Alt+F11即進入VBAIDE,學過VB的人一看就知道那就是熟悉的VB界面。下面看看如何定義一個函數(shù),然后利用它來解決60進制的角度的三角函數(shù)計算問題。在菜單上依次點擊[插入]----->[模塊],然后輸入如下代碼
Public Const pi = 3.14159265359
Public Function DEG(n As Double)
Dim A As Double, B As Double, C As Double, D As Double, E As Double, F As Double, G As Double, KA As Double
D = Abs(n) + 0.000000000000001
F = Sgn(n)
A = Int(D)
B = Int((D - A) * 100)
C = D - A - B / 100
DEG = F * (A + B / 60 + C / 0.36) * pi / 180
End Function
這樣,就定義了一個名字叫DEG的函數(shù),它的作用就是轉(zhuǎn)換60進制的角度為Excel認識的弧度。編輯完后按Alt+Q即返回Excel,再在某一單元格輸入=sin(deg(A1))(A1既可以是單元格的值,也可以是輸入的角度值),回車,就計算出了成果,可以用計算器檢驗一下是否正確。如果出現(xiàn)#NAME?那就要設置一下安全設置。依次點[工具]->[宏]->[安全性],在安全級選項卡上選擇“中”或者“低”,然后關閉后重新打開就可以了,以后只要是60進制的角度,就用它轉(zhuǎn)換,非常方便。
2導線計算
工程測量中,經(jīng)常碰到導線的計算,如果手頭沒有平差計算程序就只有手工計算了,這時候可以編個小程序來計算,其實,這很簡單,只要編寫了一個附合導線計算程序,代碼很簡單,但很實用。下面是該程序的代碼:
Sub附合導線計算()
Dim m As Integer, n As Integer, ms As Double, gg As Double, sht As Object, xx As Double, yy As Double, S As Double
Set sht = ThisWorkbook.ActiveSheet
Do While sht.Cells(m + 3, 4) <> ""
m = m + 1
Loop
For n = 3 To m + 2
ms = DEG(ms) + DEG(sht.Cells(n, 4))
ms = RAD(ms)
S = S + sht.Cells(n, 3)
Next
ms = DEG(ms)
gg = RAD(DEG(sht.Cells(3, 5)) + ms - DEG(sht.Cells(3 + m, 5)) - pi * m)
xx = 0: yy = 0
For n = 4 To m + 2
'方位角
sht.Cells(n, 5) = RAD(DEG(sht.Cells(n - 1, 5)) + DEG(sht.Cells(n - 1, 4)) - pi - DEG(gg) / m)
'坐標增量
sht.Cells(n, 6) = Format(sht.Cells(n - 1, 3) * Cos(DEG(sht.Cells(n, 5))), "#####.####")
sht.Cells(n, 7) = Format(sht.Cells(n - 1, 3) * Sin(DEG(sht.Cells(n, 5))), "#####.####")
'坐標增量和
xx = xx + sht.Cells(n, 6)
yy = yy + sht.Cells(n, 7)
Next
xx = xx + sht.Cells(3, 10) - sht.Cells(m + 2, 10)
yy = yy + sht.Cells(3, 11) - sht.Cells(m + 2, 11)
sht.Cells(m + 4, 5) = "△α=" & Format(gg, "###.######")
sht.Cells(m + 4, 6) = "△X=" & Format(xx, "###.###")
sht.Cells(m + 4, 7) = "△Y=" & Format(yy, "###.###")
sht.Cells(m + 4, 3) = "∑S=" & Format(S, "###.###")
sht.Cells(m + 4, 9) = "△S=" & Format(Sqr(xx * xx + yy * yy), "###.###")
sht.Cells(m + 4, 10) = "相對精度 1/" & Format(S / Sqr(xx * xx + yy * yy), "######")
For n = 4 To m + 2
sht.Cells(n, 8) = Format(xx / S * sht.Cells(n - 1, 3), "###.####")
sht.Cells(n, 9) = Format(yy / S * sht.Cells(n - 1, 3), "###.####")
Next
For n = 4 To m + 1
sht.Cells(n, 10) = sht.Cells(n - 1, 10) + sht.Cells(n, 6) - sht.Cells(n, 8)
sht.Cells(n, 11) = sht.Cells(n - 1, 11) + sht.Cells(n, 7) - sht.Cells(n, 9)
Next
Columns("F:K").Select
Selection.NumberFormatLocal = "0.000_ "
End Sub
Public Function RAD(Nu As Double) As Double
Dim A As Double, B As Double, C As Double, D As Double, E As Double, F As Double, G As Double, p As Double
D = Abs(Nu)
F = Sgn(Nu)
p = 180# / pi
G = p * 60#
A = Int(D * p)
B = Int((D - A / p) * G)
W = B
C = (D - A / p - B / G) * 20.62648062
RAD = (C + A + B / 100) * F
End Function
值得注意的是,前面提到的DEG函數(shù)別忘記加進去。
  如果自己定義一個名字叫“計算”的按鈕,指定此工具的宏為“單一附合導線計算”,那么,只要按上面的格式輸入原始數(shù)據(jù),點“計算”就可以得到計算結(jié)果了。所有的過程都是自動的,無須再手工填寫,是不是很方便?
當然,也可以利用Excel把工作表中點的坐標值(二維或者三維)在CAD中展繪出來,同樣可以再加個工具按鈕。這里就不在一一介紹。
  Excel的功能是非常強大的,利用他可完成許多測量上的計算,而且方法要方便的多。
 


轉(zhuǎn)載請注明來自:http://www.jinnzone.com/jianzhushejilw/14643.html