亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于DWG文件的圖形轉(zhuǎn)換方法與程序?qū)崿F(xiàn)

        2012-06-29 07:26:26譚清華張明
        城市勘測 2012年4期
        關(guān)鍵詞:調(diào)用頂點坐標(biāo)系

        譚清華,張明

        (南寧市勘測院,廣西南寧 530000)

        1 引言

        我國于上世紀(jì)50年代和80年代,分別建立了1954年北京坐標(biāo)系和1980西安坐標(biāo)系,為國民經(jīng)濟(jì)建設(shè)和社會發(fā)展提供了基礎(chǔ)的測繪保障。隨著社會進(jìn)步,經(jīng)濟(jì)建設(shè)、國防建設(shè)、科學(xué)研究等對國家大地坐標(biāo)系提出了新的要求,迫切需要采用原點位于地球質(zhì)量中心的坐標(biāo)系統(tǒng)(以下簡稱地心坐標(biāo)系)作為國家大地坐標(biāo)系。國務(wù)院批準(zhǔn)自2008年7月1日啟用我國的地心坐標(biāo)系—2000國家大地坐標(biāo)系,英文名稱為China Geodetic Coordinate System 2000,英文縮寫為CGCS2000。

        為了及時采用CGCS2000,各城市首要任務(wù)是建立一個與CGCS2000相聯(lián)系的、相對獨立和統(tǒng)一的、適宜本地區(qū)建設(shè)需要的城市或地方坐標(biāo)系。為此,需要完成的工作之一是完成現(xiàn)有測繪成果的更新改造,保證過渡期內(nèi)現(xiàn)有成果及CGCS2000成果的共存共用,為CGCS2000正式啟用奠定基礎(chǔ)。

        我國的測繪成果多以CAD的DWG格式或DXF格式存儲,其中DWG格式是二進(jìn)制文件,而DXF文件是文本文件,因此DWG文件占用的存儲空間較小,程序啟動的速度較快,絕大部分成果采用DWG文件存儲,而且DWG與DXF之間可以互相轉(zhuǎn)換,因此本文主要討論在CAD環(huán)境下DWG文件的坐標(biāo)轉(zhuǎn)換。

        2 AutoCAD二次開發(fā)環(huán)境介紹

        由于AutoCAD并沒帶有坐標(biāo)轉(zhuǎn)換模塊,因此要實現(xiàn)相應(yīng)的功能,必須進(jìn)行二次開發(fā),AutoCAD提供的開發(fā)工具主要有 Visual AutoLISP、ObjectARX和 VBA、.NET API。本文采用的是 ObjectARX。ObjectARX是一個以C++語言為基礎(chǔ)的面向?qū)ο蟮拈_發(fā)環(huán)境和應(yīng)用程序接口,ObjectARX并不是獨立的開發(fā)平臺,而是運行于Visual C++平臺之上。ObjectARX程序本質(zhì)上是Windows動態(tài)鏈接庫(DLL)。

        ObjectARX作為Visual C++動態(tài)鏈接庫與其他的動態(tài)鏈接庫有著很大的區(qū)別,ObjectARX程序在C++語言的基礎(chǔ)上規(guī)定了自己的語法,它是專門用來對AutoCAD進(jìn)行二次開發(fā)的工具。因此可以說ObjectARX是Visual C++的一個子集。

        3 坐標(biāo)轉(zhuǎn)換的實現(xiàn)方法

        為了充分利用已有測繪成果,必須將已有測繪成果轉(zhuǎn)換到CGCS2000坐標(biāo)系,因此不同坐標(biāo)系之間相互轉(zhuǎn)換是CGCS2000正式啟用后必須解決的技術(shù)問題。通常情況下,大范圍高精度坐標(biāo)轉(zhuǎn)換任務(wù)采用空間七參數(shù)法來實現(xiàn),而小范圍高斯平面坐標(biāo)的轉(zhuǎn)換采用平面四參數(shù)法來實現(xiàn)。由于數(shù)字地形圖數(shù)據(jù)均采用分幅存儲,即每一幅圖的范圍有限,因此本文采用四參數(shù)法實現(xiàn)圖形的坐標(biāo)轉(zhuǎn)換,坐標(biāo)轉(zhuǎn)換程序流程圖如圖1所示。

        圖1 坐標(biāo)轉(zhuǎn)換程序流程圖

        4 DWG文件及地形圖中常用對象的坐標(biāo)轉(zhuǎn)換程序?qū)崿F(xiàn)方法

        (1)點

        對圖形中點對象的轉(zhuǎn)換只需對坐標(biāo)值進(jìn)行轉(zhuǎn)換,其對應(yīng)的ObjectARX類為AcDbPoint。通過該類的Position()函數(shù)可以獲取該點的坐標(biāo)信息,然后根據(jù)第二節(jié)所述的方法得到轉(zhuǎn)換之后的坐標(biāo)。調(diào)用setPosition()函數(shù)設(shè)定轉(zhuǎn)換之后的坐標(biāo)即可。

        (2)直線

        直線對應(yīng)的ObjectARX類為AcDbLine,直線由起點與終點連接而成,可以通過該類的startPoint()與endPoint()函數(shù)分別獲取起點和終點的坐標(biāo)。之后根據(jù)第二節(jié)所述的方法得到轉(zhuǎn)換之后的坐標(biāo)。然后分別調(diào)用該類的setStartPoint()與setEndPoint()函數(shù)設(shè)定坐標(biāo)即可。

        (3)多段線

        多段線對應(yīng)的ObjectARX類為AcDbPolyline。多段線可以通過調(diào)用該類的numVerts()函數(shù)獲取總點數(shù),然后通過調(diào)用該類的getPointAt()函數(shù)獲取每個頂點的坐標(biāo)。然后根據(jù)第二節(jié)所述的方法得到轉(zhuǎn)換之后的坐標(biāo)。通過調(diào)用該類的setPointAt()函數(shù)設(shè)置轉(zhuǎn)換之后的坐標(biāo)。

        (4)二維多段線

        二維多段線對應(yīng)的 ObjectARX類為AcDb2dPolyline。通過調(diào)用該類的vertexIterator()函數(shù)獲取遍歷該類頂點的指針。該指針對應(yīng)的類為AcD-bObjectIterator,以該指針為參數(shù)調(diào)用二維多段線的openVertex函數(shù),可以獲取該指針對應(yīng)的頂點。該頂點對應(yīng)的類為AcDb2dVertex。,利用該頂點的position()函數(shù),則可以獲取該頂點的坐標(biāo)。然后根據(jù)第二節(jié)所述的方法得到轉(zhuǎn)換之后的坐標(biāo)。調(diào)用該頂點的set-Position()函數(shù),則完成了該頂點的轉(zhuǎn)換。繼續(xù)如此程序遍歷整條二維多段線即可以完成坐標(biāo)轉(zhuǎn)換。

        (5)三維多段線

        三維多段線對應(yīng)的 ObjectARX類為AcDb3dPolyline。三維多段線的坐標(biāo)轉(zhuǎn)換方法與二維多段線類似,只是遍歷過程中的頂點對應(yīng)的類變?yōu)锳cDb3dPolylineVertex,其他與(4)所述二維多段線坐標(biāo)轉(zhuǎn)換程序相同。

        (6)圓弧

        圓弧對應(yīng)的ObjectARX類為AcDbArc。調(diào)用該類的center()獲取該類的中心點坐標(biāo)。,然后根據(jù)第二節(jié)所述的方法得到轉(zhuǎn)換之后的中心點坐標(biāo)。調(diào)用該類的setCenter()函數(shù)即可以設(shè)置轉(zhuǎn)換之后的坐標(biāo)??梢哉{(diào)用startAngle()與endAngle()函數(shù)獲取起始和終止角度,然后加上根據(jù)第二節(jié)所述的方法得到轉(zhuǎn)換之后旋轉(zhuǎn)的角度。調(diào)用setStartAngle()與setEndAngle()設(shè)置轉(zhuǎn)換之后的角度。由于坐標(biāo)轉(zhuǎn)換通常尺度變化很小,因此對圓弧的半徑無需改變,至此即完成了圓弧的坐標(biāo)轉(zhuǎn)換。

        (7)形

        形所對應(yīng)的ObjectARX類為AcDbShape,可以通過調(diào)用該類的position()函數(shù)獲取該類的坐標(biāo)信息。然后根據(jù)第二節(jié)所述的方法得到轉(zhuǎn)換之后的坐標(biāo)。調(diào)用該類的setPosition()函數(shù)實現(xiàn)坐標(biāo)轉(zhuǎn)換。由于地形圖中形的指向始終指北,因此無需設(shè)置角度變化。

        (8)圓

        圓所對應(yīng)的ObjectARX類為AcDbCircle。調(diào)用該類的center()獲取該類的中心點坐標(biāo),然后根據(jù)第二節(jié)所述的方法得到轉(zhuǎn)換之后的坐標(biāo)。調(diào)用該類的set-Center()函數(shù)即可以設(shè)置轉(zhuǎn)換之后的中心點坐標(biāo)。由于坐標(biāo)轉(zhuǎn)換通常尺度變化很小,因此對圓的半徑無需改變。至此即完成了圓的坐標(biāo)轉(zhuǎn)換。

        (9)橢圓

        橢圓所對應(yīng)的ObjectARX類為AcDbEllipse。橢圓與圓弧的轉(zhuǎn)換程序類似。

        (10)實線

        實線對應(yīng)的ObjectARX類為AcDbSolid。實線有4個頂點,只需通過getPointAt()函數(shù)獲取每一個頂點坐標(biāo),然后通過程序獲取轉(zhuǎn)換之后的坐標(biāo)。再利用set-PointAt()函數(shù)設(shè)置相應(yīng)的坐標(biāo)即可。

        (11)單行文字

        單行文字對應(yīng)的ObjectARX類為AcDbText,可以通過調(diào)用該類的position()函數(shù)獲取文字的坐標(biāo)信息,然后根據(jù)第二節(jié)所述的方法得到轉(zhuǎn)換之后的坐標(biāo)。調(diào)用setPosition()函數(shù)設(shè)置轉(zhuǎn)換之后的坐標(biāo)。至此完成坐標(biāo)轉(zhuǎn)換。

        (12)多行文字

        多行文字對應(yīng)的ObjectARX類為AcDbMText,可以通過調(diào)用該類的location()函數(shù)獲取文字的坐標(biāo)信息,然后根據(jù)第二節(jié)所述的方法得到轉(zhuǎn)換之后的坐標(biāo)。調(diào)用setLocation()函數(shù)設(shè)置轉(zhuǎn)換之后的坐標(biāo)。至此完成坐標(biāo)轉(zhuǎn)換。

        (13)引線

        多段線對應(yīng)的ObjectARX類為AcDbLeader。多段線可以通過調(diào)用該類的numVertices()函數(shù)獲取總點數(shù)。調(diào)用該類的vertexAt()函數(shù)獲取每個頂點的坐標(biāo),然后根據(jù)第二節(jié)所述的方法得到轉(zhuǎn)換之后的坐標(biāo)。調(diào)用該類的setVertexAt()函數(shù)設(shè)置轉(zhuǎn)換之后的坐標(biāo)。

        (14)標(biāo)注

        標(biāo)注分為6類:對齊標(biāo)注、轉(zhuǎn)角標(biāo)注、半徑標(biāo)注、角度標(biāo)注、直徑標(biāo)注、坐標(biāo)標(biāo)注。地形圖中通常用到的為對齊標(biāo)注與轉(zhuǎn)角標(biāo)注,其他沒有用到。他們對應(yīng)的ObjectARX類分別為 AcDbRotatedDimension、AcD-bAlignedDimension。轉(zhuǎn)角標(biāo)注對應(yīng)的textPosition()可以獲取調(diào)用的頂點,然后根據(jù)第二節(jié)所述的方法得到轉(zhuǎn)換之后的坐標(biāo)。調(diào)用setTextPosition()可以設(shè)置轉(zhuǎn)角標(biāo)注的文字位置。調(diào)用dimLinePoint()函數(shù)可以獲取該尺寸通過的一點坐標(biāo),然后根據(jù)第二節(jié)所述的方法得到轉(zhuǎn)換之后的坐標(biāo)??梢哉{(diào)用setDimLinePoint()設(shè)置該點坐標(biāo)。調(diào)用xLine1Point()函數(shù)可以獲取第一條尺寸邊界點的坐標(biāo)信息,然后根據(jù)第二節(jié)所述的方法得到轉(zhuǎn)換之后的坐標(biāo)??梢哉{(diào)用setXLine1Point()函數(shù)設(shè)置第一條尺寸邊界點的坐標(biāo)。調(diào)用xLine2Point()函數(shù)可以獲取第二條尺寸邊界點的坐標(biāo)信息,然后根據(jù)第二節(jié)所述的方法得到轉(zhuǎn)換之后的坐標(biāo)??梢哉{(diào)用setXLine2Point()函數(shù)設(shè)置第二條尺寸邊界點的坐標(biāo)。對齊標(biāo)注與此相同。

        (15)塊參照

        塊參照對應(yīng)的ObjectARX類名為AcDbBlockReference,可以通過position()獲取塊所在的基點坐標(biāo),然后根據(jù)第二節(jié)所述的方法得到轉(zhuǎn)換之后的坐標(biāo)。調(diào)用函數(shù)setPosition()函數(shù)設(shè)置轉(zhuǎn)換之后的坐標(biāo)。之后調(diào)用函數(shù)transformBy()實現(xiàn)塊參照整體轉(zhuǎn)換。此函數(shù)的參數(shù)為轉(zhuǎn)換后基點坐標(biāo)與原基點坐標(biāo)的構(gòu)成向量。

        5 結(jié)語

        完成現(xiàn)有測繪成果向CGCS2000的改造,保證過渡期內(nèi)現(xiàn)有成果及CGCS2000成果的共存共用,是CGCS2000正式啟用必須解決的技術(shù)問題。由于DWG文件存儲量小,并且啟動速度快的特點,目前國內(nèi)的地形圖數(shù)據(jù)主要是以DWG文件格式存儲,因此實現(xiàn)DWG文件從傳統(tǒng)的參心坐標(biāo)系向CGCS2000轉(zhuǎn)換是很有現(xiàn)實意義的。本文通過對ObjectARX中地形圖常用實體類的研究,實現(xiàn)了地形圖中常用實體的坐標(biāo)轉(zhuǎn)換。

        [1]李征航,黃勁松.GPS測量與數(shù)據(jù)處理[M].武漢大學(xué)出版社,2005,3(1).

        [2]CJJ 8-99.城市測量規(guī)范[S].

        [3]曾祥新,譚清華,黃炳強(qiáng).一種2000國家大地坐標(biāo)系與參心坐標(biāo)系間的轉(zhuǎn)換方法[J].廣西科學(xué),2010(11):340~342.

        [4]姚宜斌,孔建.基于DXF文件的圖件轉(zhuǎn)換方法研究及程序?qū)崿F(xiàn)[J].大地測量與地球動力學(xué),2011(1):117~122.

        [5]董玉德,趙韓.CAD二次開發(fā)理論與技術(shù)[M].合肥工業(yè)大學(xué)出版社,2009,11(1).

        [6]張帆,鄭立楷,王華杰.AutoCAD VBA開發(fā)精彩實例教程[M].清華大學(xué)出版社,2004,4(1).

        猜你喜歡
        調(diào)用頂點坐標(biāo)系
        過非等腰銳角三角形頂點和垂心的圓的性質(zhì)及應(yīng)用(下)
        核電項目物項調(diào)用管理的應(yīng)用研究
        關(guān)于頂點染色的一個猜想
        LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
        解密坐標(biāo)系中的平移變換
        坐標(biāo)系背后的故事
        基于重心坐標(biāo)系的平面幾何證明的探討
        基于系統(tǒng)調(diào)用的惡意軟件檢測技術(shù)研究
        極坐標(biāo)系下移動機(jī)器人的點鎮(zhèn)定
        利用RFC技術(shù)實現(xiàn)SAP系統(tǒng)接口通信
        中文字幕久久人妻av| 天堂国精产品2023年| 亚洲日韩精品欧美一区二区| 免费观看一区二区| 精品国产一品二品三品| 国产乱子伦一区二区三区国色天香| 欧美精品无码一区二区三区 | 在线欧美中文字幕农村电影| 亚洲综合无码一区二区| 欧美日韩一二三区高在线| 亚洲综合国产精品一区二区| av在线观看免费天堂| 国产边摸边吃奶叫床视频| 欧美成人看片黄a免费看| 亚洲无码中文字幕日韩无码| 最新日本久久中文字幕| 国产自拍精品一区在线观看| 久久青青草原亚洲av无码麻豆| 日日干夜夜操高清视频| 丝袜人妻无码中文字幕综合网 | 日本熟妇hd8ex视频| 色综合久久五十路人妻| 手机在线观看日韩不卡av| 亚洲av片在线观看| 7777精品久久久大香线蕉| 台湾佬中文偷拍亚洲综合| 曰日本一级二级三级人人| 人妻 偷拍 无码 中文字幕| 亚洲av永久无码天堂网手机版| 97超级碰碰碰久久久观看| 国产一区二区三区成人av| 国精产品一区一区二区三区mba| 激情第一区仑乱| 国内成人精品亚洲日本语音| 女同中文字幕在线观看| 亚洲国产精品亚洲一区二区三区| 久久久久无码精品国产app| 亚洲国产A∨无码影院| 国内精品久久人妻互换| 国产毛片av最新视频| 欧美一区二区三区激情|