荊 毅 ,莊宿軍,姚麒麟
(上海華東電力設(shè)計(jì)巖土工程有限公司,上海 200331)
當(dāng)今,AutoCAD在設(shè)計(jì)施工與地形測(cè)繪中的應(yīng)用已經(jīng)相當(dāng)?shù)膹V泛,CAD圖已經(jīng)成為圖形數(shù)據(jù)編輯和各種成果提交的主要形式。例如在施工放樣樁位時(shí),若工程樁施工圖就是在其設(shè)計(jì)坐標(biāo)系統(tǒng)下,則可以直接在圖中“拾取”樁位坐標(biāo)用于指導(dǎo)放樣。但在多數(shù)情況下,CAD圖中的實(shí)體坐標(biāo)與其的設(shè)計(jì)坐標(biāo)并不一致,使得實(shí)體的在CAD圖中的位置信息不能直接使用,給設(shè)計(jì)和施工人員雙方之間信息的共享帶來(lái)了不便。常規(guī)的做法是根據(jù)圖紙中標(biāo)注的某點(diǎn)的設(shè)計(jì)坐標(biāo)和距離間接地算出工程樁的設(shè)計(jì)坐標(biāo)后再用于放樣。這樣不但效率低下,而且也很容易出錯(cuò)。為此考慮通過(guò)平面坐標(biāo)轉(zhuǎn)換的方法將工程樁施工圖轉(zhuǎn)換到其設(shè)計(jì)坐標(biāo)系統(tǒng)下,則工程樁的圖上坐標(biāo)就是其設(shè)計(jì)坐標(biāo),這樣不但提高了效率也大大降低了計(jì)算樁位時(shí)出錯(cuò)的概率,充分發(fā)揮CAD電子圖的優(yōu)勢(shì)。
坐標(biāo)轉(zhuǎn)換的具體過(guò)程可以描述為:首先將圖中設(shè)計(jì)坐標(biāo)已知的點(diǎn)作為同名點(diǎn),通過(guò)若干同名點(diǎn)求出坐標(biāo)轉(zhuǎn)換參數(shù);然后根據(jù)得到的轉(zhuǎn)換參數(shù)對(duì)CAD圖進(jìn)行坐標(biāo)系的旋轉(zhuǎn)、縮放和平移,將整幅圖上的實(shí)體轉(zhuǎn)換到設(shè)計(jì)坐標(biāo)系下。對(duì)此問(wèn)題已有不少有益的研究,但對(duì)CAD圖進(jìn)行坐標(biāo)轉(zhuǎn)換的方法各異,例如可通過(guò)CAD中提供的旋轉(zhuǎn),平移,縮放等命令實(shí)現(xiàn)坐標(biāo)的轉(zhuǎn)換[1],此方法雖然簡(jiǎn)便,但是對(duì)于行業(yè)之外的人來(lái)說(shuō),操作起來(lái)還是有一定的難度。另有一些通過(guò)編寫(xiě)程序?qū)?CAD中(交換數(shù)據(jù)格式)DXF中地物的坐標(biāo)數(shù)據(jù)進(jìn)行坐標(biāo)轉(zhuǎn)換達(dá)到坐標(biāo)轉(zhuǎn)換的目的[2]、[3]。
本文主要介紹了一種基于最小二乘的平面坐標(biāo)轉(zhuǎn)換算法和對(duì)此算法的VBA實(shí)現(xiàn),達(dá)到對(duì)CAD圖坐標(biāo)的自動(dòng)轉(zhuǎn)換。
由相似變換公式
其中,(x, y)是圖形中某點(diǎn)在新坐標(biāo)系下的坐標(biāo);(x′, y′)是圖形中某點(diǎn)在舊坐標(biāo)系下的坐標(biāo);(m, n)是就坐標(biāo)系原點(diǎn)在新坐標(biāo)系下的坐標(biāo)即橫向和縱向的平移參數(shù);s為比例系數(shù);θ為旋轉(zhuǎn)角度。
令a = s·cosθ,b = s·sinθ ,則可將式⑴寫(xiě)為:
選取m、n、a、b作為平差參數(shù),并將新坐標(biāo)系下的坐標(biāo)作為觀測(cè)值,舊坐標(biāo)系中的坐標(biāo)設(shè)為無(wú)誤差,可列出誤差方程[4]
即
按上式組成法方程:
可得:
將求出的δx加到給定的參數(shù)初值上,帶回法方程迭代至收斂,得到坐標(biāo)轉(zhuǎn)換參數(shù)m、n、a、b。
Visual Basic for Applications(簡(jiǎn)稱(chēng)VBA)是新一代標(biāo)準(zhǔn)宏語(yǔ)言,提供了面向?qū)ο蟮某绦蛟O(shè)計(jì)方法,并提供了相當(dāng)完整的程序設(shè)計(jì)語(yǔ)言。Autodesk公司從AutoCAD R14.01版開(kāi)始,內(nèi)置了VBA開(kāi)發(fā)工具,它易學(xué)易用、功能強(qiáng)大,并借助于VB提供的ActiveX對(duì)象強(qiáng)大功能,使它已經(jīng)成為CAD二次開(kāi)發(fā)中一種最為常見(jiàn)的形式,可以大大減輕CAD中重復(fù)性的繪圖和計(jì)算工作[5]。
根據(jù)上一節(jié)算法得到的轉(zhuǎn)換參數(shù),利用ActiveX對(duì)象封裝的函數(shù)實(shí)現(xiàn)圖形坐標(biāo)轉(zhuǎn)換,轉(zhuǎn)換過(guò)程見(jiàn)圖1。
選取紹興濱海熱電廠主廠房工程樁施工(CAD)圖進(jìn)行實(shí)驗(yàn)分析。見(jiàn)圖2,圖上左下角標(biāo)有設(shè)計(jì)坐標(biāo)(A=417.500 B=553.000)的角點(diǎn)與其圖上的實(shí)際坐標(biāo)(X=1038954.4740 Y= -91838.4526)并不一致。此外,從圖上右下角(標(biāo)有設(shè)計(jì)坐標(biāo)A=272.500 B=553.000)的角點(diǎn)與其對(duì)應(yīng)的圖上實(shí)際坐標(biāo)(X=1184454.4740 Y=-91838.4526)可以看出,設(shè)計(jì)坐標(biāo)系統(tǒng)與圖上坐標(biāo)系統(tǒng)比例因子也不為1,且設(shè)計(jì)橫坐標(biāo)向左為正與圖上橫坐標(biāo)向右為正的方向相反,說(shuō)明兩個(gè)坐標(biāo)系之間還存在著一定的旋轉(zhuǎn)角度。適于本文要解決的問(wèn)題。
圖1 轉(zhuǎn)換流程圖
已知同名點(diǎn)的設(shè)計(jì)坐標(biāo)如表1的第2、3兩列所示,選取其中的點(diǎn)1和2作為同名點(diǎn)進(jìn)行坐標(biāo)系統(tǒng)的轉(zhuǎn)換。
圖2 主廠房打樁設(shè)計(jì)樁位圖(局部)
表1 同名點(diǎn)設(shè)計(jì)坐標(biāo)和殘差分析結(jié)果 單位:m
首先在圖中“拾取”同名點(diǎn)的圖上坐標(biāo)值,然后輸入其設(shè)計(jì)坐標(biāo)值(A=417.500 B=553.000)。輸入點(diǎn)1和2兩個(gè)同名點(diǎn)后,點(diǎn)擊“計(jì)算”,則計(jì)算的轉(zhuǎn)換參數(shù)見(jiàn)圖3。
圖3 軟件操作界面圖
點(diǎn)擊“轉(zhuǎn)換”按鈕后,軟件按照計(jì)算得到的轉(zhuǎn)換參數(shù)對(duì)原圖自動(dòng)地進(jìn)行坐標(biāo)系的旋轉(zhuǎn),縮放和平移,完成圖形的坐標(biāo)的轉(zhuǎn)換。將轉(zhuǎn)換后的同名點(diǎn)坐標(biāo)值列于表1的第4、5兩列,將同名點(diǎn)的設(shè)計(jì)坐標(biāo)和轉(zhuǎn)換后得到的坐標(biāo)求其坐標(biāo)殘差并列于表的第6、7兩列。經(jīng)轉(zhuǎn)換后的主廠房打樁設(shè)計(jì)樁位圖,比較其同名點(diǎn)的設(shè)計(jì)坐標(biāo)值,在165m×61m的主廠房打樁區(qū)域內(nèi),坐標(biāo)轉(zhuǎn)換的殘差全部為0,轉(zhuǎn)換的效果非常好。
本文針對(duì)CAD圖上坐標(biāo)與設(shè)計(jì)坐標(biāo)不一致的問(wèn)題,介紹了一種坐標(biāo)轉(zhuǎn)換的算法并給出了坐標(biāo)轉(zhuǎn)換的VBA實(shí)現(xiàn),最后以一幅實(shí)際工程的施工樁位圖為例,驗(yàn)證了算法可行性?,F(xiàn)軟件已在實(shí)際工程中得到應(yīng)用并得出以下結(jié)論:
⑴ 本文所介紹的轉(zhuǎn)換模型和相應(yīng)軟件因?yàn)槭撬膫€(gè)參數(shù),因此需要兩個(gè)以上的同名點(diǎn)新舊坐標(biāo)值;
⑵ 本文所介紹的轉(zhuǎn)換模型和相應(yīng)軟件只適合于二維平面坐標(biāo)的相似轉(zhuǎn)換,即縱向的縮放比例和橫向縮放比例是一致的情況;
⑶ 本文介紹的旋轉(zhuǎn)是對(duì)坐標(biāo)軸的旋轉(zhuǎn),因?yàn)槿魧?chuàng)建為塊(block)的圖形進(jìn)行旋轉(zhuǎn),雖然也可達(dá)到坐標(biāo)系旋轉(zhuǎn)的目的,但旋轉(zhuǎn)后的圖形相對(duì)于視圖窗口會(huì)有一個(gè)角度,不方便使用者查看和使用。
[1]石永樂(lè),梁宏奇,李國(guó)林.AutoCAD繪圖中的坐標(biāo)轉(zhuǎn)換[J].礦山測(cè)量,2006.
[2]吳銘杰.CAD數(shù)據(jù)坐標(biāo)轉(zhuǎn)換方法研究[J].江西測(cè)繪,2009.
[3]任沂軍.AutoCAD中DXF文件的坐標(biāo)轉(zhuǎn)換分析與實(shí)現(xiàn)[J].測(cè)繪通報(bào),2006(7).
[4]武漢大學(xué)測(cè)繪學(xué)院測(cè)量平差組.誤差理論與測(cè)量平差基礎(chǔ)[M].武漢:武漢大學(xué)出版社,2003.
[5]曾洪飛,張帆,盧擇臨.AutoCAD VBA &VB.NET開(kāi)發(fā)基礎(chǔ)與實(shí)例教程[M].北京:中國(guó)電力出版社,2008.