999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于DWG文件的圖形轉換方法與程序實現

2012-06-29 07:26:26譚清華張明
城市勘測 2012年4期
關鍵詞:設置方法

譚清華,張明

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

1 引言

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

為了及時采用CGCS2000,各城市首要任務是建立一個與CGCS2000相聯系的、相對獨立和統一的、適宜本地區建設需要的城市或地方坐標系。為此,需要完成的工作之一是完成現有測繪成果的更新改造,保證過渡期內現有成果及CGCS2000成果的共存共用,為CGCS2000正式啟用奠定基礎。

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

2 AutoCAD二次開發環境介紹

由于AutoCAD并沒帶有坐標轉換模塊,因此要實現相應的功能,必須進行二次開發,AutoCAD提供的開發工具主要有 Visual AutoLISP、ObjectARX和 VBA、.NET API。本文采用的是 ObjectARX。ObjectARX是一個以C++語言為基礎的面向對象的開發環境和應用程序接口,ObjectARX并不是獨立的開發平臺,而是運行于Visual C++平臺之上。ObjectARX程序本質上是Windows動態鏈接庫(DLL)。

ObjectARX作為Visual C++動態鏈接庫與其他的動態鏈接庫有著很大的區別,ObjectARX程序在C++語言的基礎上規定了自己的語法,它是專門用來對AutoCAD進行二次開發的工具。因此可以說ObjectARX是Visual C++的一個子集。

3 坐標轉換的實現方法

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

圖1 坐標轉換程序流程圖

4 DWG文件及地形圖中常用對象的坐標轉換程序實現方法

(1)點

對圖形中點對象的轉換只需對坐標值進行轉換,其對應的ObjectARX類為AcDbPoint。通過該類的Position()函數可以獲取該點的坐標信息,然后根據第二節所述的方法得到轉換之后的坐標。調用setPosition()函數設定轉換之后的坐標即可。

(2)直線

直線對應的ObjectARX類為AcDbLine,直線由起點與終點連接而成,可以通過該類的startPoint()與endPoint()函數分別獲取起點和終點的坐標。之后根據第二節所述的方法得到轉換之后的坐標。然后分別調用該類的setStartPoint()與setEndPoint()函數設定坐標即可。

(3)多段線

多段線對應的ObjectARX類為AcDbPolyline。多段線可以通過調用該類的numVerts()函數獲取總點數,然后通過調用該類的getPointAt()函數獲取每個頂點的坐標。然后根據第二節所述的方法得到轉換之后的坐標。通過調用該類的setPointAt()函數設置轉換之后的坐標。

(4)二維多段線

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

(5)三維多段線

三維多段線對應的 ObjectARX類為AcDb3dPolyline。三維多段線的坐標轉換方法與二維多段線類似,只是遍歷過程中的頂點對應的類變為AcDb3dPolylineVertex,其他與(4)所述二維多段線坐標轉換程序相同。

(6)圓弧

圓弧對應的ObjectARX類為AcDbArc。調用該類的center()獲取該類的中心點坐標。,然后根據第二節所述的方法得到轉換之后的中心點坐標。調用該類的setCenter()函數即可以設置轉換之后的坐標。可以調用startAngle()與endAngle()函數獲取起始和終止角度,然后加上根據第二節所述的方法得到轉換之后旋轉的角度。調用setStartAngle()與setEndAngle()設置轉換之后的角度。由于坐標轉換通常尺度變化很小,因此對圓弧的半徑無需改變,至此即完成了圓弧的坐標轉換。

(7)形

形所對應的ObjectARX類為AcDbShape,可以通過調用該類的position()函數獲取該類的坐標信息。然后根據第二節所述的方法得到轉換之后的坐標。調用該類的setPosition()函數實現坐標轉換。由于地形圖中形的指向始終指北,因此無需設置角度變化。

(8)圓

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

(9)橢圓

橢圓所對應的ObjectARX類為AcDbEllipse。橢圓與圓弧的轉換程序類似。

(10)實線

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

(11)單行文字

單行文字對應的ObjectARX類為AcDbText,可以通過調用該類的position()函數獲取文字的坐標信息,然后根據第二節所述的方法得到轉換之后的坐標。調用setPosition()函數設置轉換之后的坐標。至此完成坐標轉換。

(12)多行文字

多行文字對應的ObjectARX類為AcDbMText,可以通過調用該類的location()函數獲取文字的坐標信息,然后根據第二節所述的方法得到轉換之后的坐標。調用setLocation()函數設置轉換之后的坐標。至此完成坐標轉換。

(13)引線

多段線對應的ObjectARX類為AcDbLeader。多段線可以通過調用該類的numVertices()函數獲取總點數。調用該類的vertexAt()函數獲取每個頂點的坐標,然后根據第二節所述的方法得到轉換之后的坐標。調用該類的setVertexAt()函數設置轉換之后的坐標。

(14)標注

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

(15)塊參照

塊參照對應的ObjectARX類名為AcDbBlockReference,可以通過position()獲取塊所在的基點坐標,然后根據第二節所述的方法得到轉換之后的坐標。調用函數setPosition()函數設置轉換之后的坐標。之后調用函數transformBy()實現塊參照整體轉換。此函數的參數為轉換后基點坐標與原基點坐標的構成向量。

5 結語

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

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

[2]CJJ 8-99.城市測量規范[S].

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

[4]姚宜斌,孔建.基于DXF文件的圖件轉換方法研究及程序實現[J].大地測量與地球動力學,2011(1):117~122.

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

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

猜你喜歡
設置方法
中隊崗位該如何設置
少先隊活動(2021年4期)2021-07-23 01:46:22
學習方法
7招教你手動設置參數
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
本刊欄目設置說明
中俄臨床醫學專業課程設置的比較與思考
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
賺錢方法
捕魚
艦船人員編制的設置與控制
主站蜘蛛池模板: 就去吻亚洲精品国产欧美| 成人夜夜嗨| 亚洲天堂日韩在线| 一级毛片在线免费看| 超清无码一区二区三区| 露脸真实国语乱在线观看| 国产欧美综合在线观看第七页| 最新国产午夜精品视频成人| 国产成a人片在线播放| 久久 午夜福利 张柏芝| 成人午夜福利视频| 国产一区二区三区精品久久呦| a级毛片毛片免费观看久潮| 国产第一色| 国产最新无码专区在线| 欧洲av毛片| 亚洲成人动漫在线| 国产网站一区二区三区| 2020国产在线视精品在| 亚洲精品国产精品乱码不卞| 精品视频在线观看你懂的一区| 99久久国产精品无码| AV不卡在线永久免费观看| 青青青国产精品国产精品美女| 国产二级毛片| 国产成人精品优优av| 最新精品久久精品| 免费A∨中文乱码专区| 日韩少妇激情一区二区| 亚洲无码37.| 免费又黄又爽又猛大片午夜| 日韩精品少妇无码受不了| 2020国产免费久久精品99| 国产成人1024精品下载| 久热re国产手机在线观看| 亚洲天堂在线免费| 香蕉综合在线视频91| 亚洲一区免费看| 亚洲男人的天堂久久香蕉网| 亚洲AV无码不卡无码| 幺女国产一级毛片| 日本精品视频| 青青草原国产av福利网站| 亚洲清纯自偷自拍另类专区| 97av视频在线观看| 国产成人精品男人的天堂| 91蜜芽尤物福利在线观看| 欧美精品在线观看视频| 国产资源免费观看| 丝袜国产一区| 91精品啪在线观看国产91九色| 国产无码制服丝袜| 性做久久久久久久免费看| 福利小视频在线播放| 国产精品一区二区在线播放| 亚洲第一视频网| 色偷偷一区二区三区| 免费 国产 无码久久久| 欧美成人精品高清在线下载| 日韩毛片免费观看| 亚洲中文字幕久久无码精品A| 日韩视频免费| 无码视频国产精品一区二区| 国产福利在线观看精品| 国产精品思思热在线| 1024你懂的国产精品| 国产精品午夜福利麻豆| 欧美日韩一区二区在线免费观看| 最新亚洲人成无码网站欣赏网| av一区二区三区高清久久| 鲁鲁鲁爽爽爽在线视频观看| 欧美成在线视频| 亚洲a级毛片| 亚洲欧美另类久久久精品播放的| 国产亚洲精品自在线| 超薄丝袜足j国产在线视频| 韩日无码在线不卡| 亚洲AV无码不卡无码 | 福利片91| 三级欧美在线| 亚洲免费三区| 欧美日韩在线第一页|