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
賺錢方法
捕魚
艦船人員編制的設置與控制
主站蜘蛛池模板: 国产午夜福利亚洲第一| 亚洲精品成人片在线观看| 国产国拍精品视频免费看| 欧美在线视频不卡第一页| 日韩毛片免费| 亚洲天堂啪啪| 亚洲日韩图片专区第1页| av在线人妻熟妇| 国产精品性| 欧美特黄一免在线观看| 在线视频97| 国产欧美在线观看视频| 久久综合色天堂av| 亚洲欧美另类专区| 午夜国产精品视频黄 | julia中文字幕久久亚洲| 伊人成人在线视频| 免费观看精品视频999| 尤物视频一区| 97精品久久久大香线焦| 中文字幕不卡免费高清视频| A级毛片无码久久精品免费| 一级毛片免费的| 又爽又黄又无遮挡网站| 三上悠亚精品二区在线观看| 精品午夜国产福利观看| 国产成人久视频免费| 日韩不卡高清视频| 亚洲人成色在线观看| 国产欧美日韩在线在线不卡视频| 在线免费观看AV| 国产精品亚洲精品爽爽| 国产日韩欧美中文| 一本综合久久| 国产精品一区二区不卡的视频| 国产在线观看一区精品| 无码精油按摩潮喷在线播放| 成人免费一级片| 99激情网| 亚洲国产精品日韩av专区| 亚洲欧美另类日本| 波多野结衣视频网站| 亚洲黄网视频| 中文成人无码国产亚洲| 看你懂的巨臀中文字幕一区二区| 久久99国产乱子伦精品免| 国产成人无码AV在线播放动漫 | 国内精品一区二区在线观看| 国产成人高清精品免费5388| 18禁黄无遮挡免费动漫网站| 九色综合伊人久久富二代| 日韩欧美一区在线观看| 国产亚洲精品97AA片在线播放| 免费国产在线精品一区| 色综合五月| 天天色天天操综合网| 国产大片喷水在线在线视频| 美女高潮全身流白浆福利区| 中文字幕乱码二三区免费| 高清久久精品亚洲日韩Av| 国产福利影院在线观看| 波多野结衣无码AV在线| 六月婷婷综合| 亚洲水蜜桃久久综合网站| 欧美日韩中文国产| 毛片免费观看视频| 农村乱人伦一区二区| 国产精品自在自线免费观看| 亚洲有无码中文网| 日本高清视频在线www色| 亚洲色中色| 国产丰满大乳无码免费播放| 免费一级成人毛片| 精品国产www| 欧美日本一区二区三区免费| 日本日韩欧美| 久久久久无码国产精品不卡| 欧美a网站| 视频一本大道香蕉久在线播放| 日韩无码一二三区| 亚洲国产成人精品青青草原| 大乳丰满人妻中文字幕日本|