【摘 要】隨著科學(xué)技術(shù)的發(fā)展,建筑測(cè)量儀器的不斷更新,全站儀的出現(xiàn)使得工程施工測(cè)量技術(shù)更加的準(zhǔn)確和高效,與此同時(shí)卻增加了極坐標(biāo)內(nèi)業(yè)計(jì)算的工作量。通過將施工圖紙1:1在AutoCAD計(jì)算機(jī)輔助設(shè)計(jì)軟件中放樣,調(diào)用VBA程序設(shè)計(jì),可完成便捷、直觀和準(zhǔn)確的極坐標(biāo)計(jì)算。 
【關(guān)鍵詞】VBA程序設(shè)計(jì);全站儀;極坐標(biāo) 
   
  傳統(tǒng)的極坐標(biāo)計(jì)算主要采用勾股定理和反三角函數(shù)來計(jì)算出目標(biāo)點(diǎn)和控制樁點(diǎn)間的角度、距離關(guān)系,計(jì)算過程較為繁瑣,當(dāng)目標(biāo)點(diǎn)較多,控制樁點(diǎn)變化時(shí),都需要大量的重復(fù)和重新計(jì)算,工作量很大。如今極坐標(biāo)計(jì)算多采用將目標(biāo)點(diǎn)和控制樁點(diǎn)在AutoCAD計(jì)算機(jī)輔助設(shè)計(jì)軟件中1:1放樣,量取角度、距離值(或坐標(biāo)點(diǎn)),雖然簡化了計(jì)算程序,縮短了單位計(jì)算時(shí)間,但大量的重復(fù)和重新計(jì)算仍無法應(yīng)對(duì),F(xiàn)代工程日趨龐大和復(fù)雜,放線點(diǎn)成千上萬,利用極坐標(biāo)法,使用全站儀進(jìn)行定位測(cè)量是最佳選擇,但重復(fù)和重新計(jì)算、量取及整理數(shù)據(jù)就要成千上萬次,甚至更多,不僅繁瑣,而且容易出現(xiàn)錯(cuò)誤。 
  為解決此問題,可通過VBA編程,將計(jì)算原理及操作步驟一次性寫入源程序,今后只需在AutoCAD中調(diào)用此程序,在確定置鏡點(diǎn)及后視點(diǎn)后,直接選取目標(biāo)點(diǎn)即可完成極坐標(biāo)計(jì)算及標(biāo)注工作,使得操作更加便捷,結(jié)果更加直觀,計(jì)算更加準(zhǔn)確。在將施工圖紙1:1在AutoCAD軟件中放樣完成的基礎(chǔ)上,上百個(gè)點(diǎn)的計(jì)算及標(biāo)注只需幾分鐘便可完成。 
  1 源程序設(shè)計(jì) 
  本程序設(shè)計(jì)基于全站儀在建筑工程中測(cè)量放線的基本原理,運(yùn)用空間坐標(biāo)點(diǎn)位置關(guān)系的計(jì)算規(guī)則,通過VBA語言環(huán)境及AutoCAD命令語句,實(shí)現(xiàn)了極坐標(biāo)的標(biāo)注計(jì)算工作。 
  本程序由標(biāo)注式樣的定義、標(biāo)注格式的實(shí)現(xiàn)、極坐標(biāo)的計(jì)算三大部分組成,進(jìn)而達(dá)到操作便捷、標(biāo)注直觀、計(jì)算準(zhǔn)確的目的,為測(cè)量內(nèi)業(yè)計(jì)算提供了便利。 
  1.1 程序關(guān)鍵步驟分析 
  1.1.1 申明變量 
  根據(jù)編程及計(jì)算規(guī)則的需要,程序開始申明不同作用及類型的變量供編程使用。 
  1.1.2 設(shè)定出錯(cuò)陷阱 
  本程序通過“Do …… Loop”循環(huán)語句實(shí)現(xiàn)了目標(biāo)點(diǎn)的無限選取,為避免死循環(huán),通過“On Error”出錯(cuò)陷阱語句來控制循環(huán)的結(jié)束。當(dāng)操作出現(xiàn)錯(cuò)誤、點(diǎn)擊鼠標(biāo)右鍵或點(diǎn)擊Enter(回車鍵)時(shí),On Error語句后面的“GoTo Err_contorl”語句將在程序中搜索“Err_control”,并執(zhí)行這一行后面的語句,本程序Err_Control:后設(shè)置結(jié)束語句,故只要出現(xiàn)錯(cuò)誤或標(biāo)注完成,程序?qū)⒅兄埂?nbsp;
  1.1.3 標(biāo)注式樣定義 
  本程序?qū)崿F(xiàn)將所有標(biāo)注放在同一個(gè)圖層中并采用同一種文字式樣標(biāo)注,方便制圖管理且保證標(biāo)注清晰美觀。 
  (1)圖層定義 
  通過“For …… Next”語句對(duì)acad文件進(jìn)行圖層查找,如果找到標(biāo)注圖層,直接將找到的“極坐標(biāo)標(biāo)注”圖層激活為當(dāng)前圖層;如果沒有找到標(biāo)注圖層,則需新建名稱為“極坐標(biāo)標(biāo)注”圖層并將其設(shè)置為當(dāng)前圖層。 
 。2)標(biāo)注文字定義 
  1.1.4 各點(diǎn)獲取及標(biāo)注格式的實(shí)現(xiàn) 
  通過“ThisDrawing.Utility.GetPoint()”語句獲取坐標(biāo)點(diǎn),程序控制將手動(dòng)獲得的第一點(diǎn)分配為“全站儀置鏡點(diǎn)”,第二點(diǎn)分配為“后視點(diǎn)”,3~n點(diǎn)分配為“目標(biāo)點(diǎn)”。 
  標(biāo)注格式中引出線定位點(diǎn)可手動(dòng)自由獲取,這樣設(shè)計(jì)在標(biāo)注操作時(shí)會(huì)更加靈活實(shí)用。其他定位點(diǎn)以引出線定位點(diǎn)為參考,確定其各自相對(duì)位置。 
  1.1.5 目標(biāo)點(diǎn)極坐標(biāo)計(jì)算 
 。1)距離計(jì)算 
  程序設(shè)計(jì)將獲取的“全站儀置鏡點(diǎn)”坐標(biāo)賦值給變量P1,將“目標(biāo)點(diǎn)”坐標(biāo)賦值給P2,則P1、P2兩點(diǎn)間距離計(jì)算可根據(jù)空間坐標(biāo)點(diǎn)距離計(jì)算公式 求得。 
  距離計(jì)算源碼如下: 
  “x = p1(0) - p2(0) 
  y = p1(1) - p2(1) 
  z = p1(2) - p2(2) 
  l = Int(Sqr((x ^ 2) + (y ^ 2) + (z ^ 2)) + 0.5)” 
 。ㄗⅲ核纳嵛迦肴≌,精確到毫米。) 
 。2)方位角計(jì)算 
  通過“ThisDrawing.Utility.AngleFromX Axis()”語句分別獲取置鏡點(diǎn)與后視點(diǎn)連線,置鏡點(diǎn)與目標(biāo)點(diǎn)連線與以置鏡點(diǎn)為原點(diǎn)的直角坐標(biāo)系y軸之間的角度,我們所要求得的方位角為置鏡點(diǎn)與目標(biāo)點(diǎn)連線同置鏡點(diǎn)與后視點(diǎn)連線之間的角度值,根據(jù)全站儀正倒鏡測(cè)量方法的需要,可分別計(jì)算出順時(shí)針及逆時(shí)針兩個(gè)方向的互為360°的兩個(gè)角度值。 
  下面以后視點(diǎn)在第一象限,目標(biāo)點(diǎn)在第二象限為例,說明方位角計(jì)算方法: 
   P1為全站儀置鏡點(diǎn),P2為后視點(diǎn),P2′為目標(biāo)點(diǎn)。直線P1 P2 與y軸夾角為angle0,直線P1 P2′與y軸夾角為angle1,需求方位角為全站儀正鏡(順時(shí)針)角度值angle2及全站儀倒鏡(逆時(shí)針)角度值angle2′: 
  angle2=angle1-angle0 
  angle2′=360°-(angle1-angle0) 
  2 總結(jié) 
  全站儀測(cè)量除可使用極坐標(biāo)法外,也可通過坐標(biāo)建站即坐標(biāo)法實(shí)現(xiàn)測(cè)量工作,本程序稍加調(diào)整即可實(shí)現(xiàn)同平面內(nèi)坐標(biāo)點(diǎn)的連續(xù)計(jì)算及標(biāo)注。 
  坐標(biāo)法具有統(tǒng)一性,而極坐標(biāo)法具有靈活性,二者科學(xué)合理配合使用將使測(cè)量工作變得更加高效,而二者的共同缺點(diǎn)就是增加了內(nèi)業(yè)計(jì)算的工作量,將本文中的極坐標(biāo)及坐標(biāo)計(jì)算作為兩個(gè)功能模塊在AutoCAD中調(diào)用輕松解決了內(nèi)業(yè)計(jì)算問題。 
  參考文獻(xiàn): 
  [1]武漢測(cè)繪科技大學(xué)《測(cè)量學(xué)》編寫組。測(cè)量學(xué),第3版,北京:測(cè)繪出版社,1993 
  [2]李青岳,陳永奇主編,工程測(cè)量學(xué),北京:人民交通出版社,1995 
  [3]工程測(cè)量規(guī)范(GB50026-93),北京:中國計(jì)劃出版社,1993