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
賺錢方法
捕魚
艦船人員編制的設置與控制
主站蜘蛛池模板: www.亚洲国产| lhav亚洲精品| 成人免费午夜视频| 91九色国产porny| 久久福利片| 国产欧美日韩视频一区二区三区| 特黄日韩免费一区二区三区| 亚洲成人一区二区三区| 真实国产精品vr专区| 午夜无码一区二区三区| 久久香蕉国产线看观| 日韩中文精品亚洲第三区| 99re热精品视频国产免费| 欧美精品成人一区二区视频一| 91精品综合| 久久人人妻人人爽人人卡片av| 国产一区二区福利| 日本五区在线不卡精品| 91成人在线观看| 18禁影院亚洲专区| 久久精品国产一区二区小说| 国产自产视频一区二区三区| 波多野结衣一区二区三区AV| 免费高清a毛片| 欧美啪啪一区| 国产精品永久不卡免费视频| 精品国产aⅴ一区二区三区| 中文字幕无线码一区| 免费国产黄线在线观看| 91久久天天躁狠狠躁夜夜| 免费人成视网站在线不卡| 在线免费看片a| 最新痴汉在线无码AV| 亚洲午夜国产片在线观看| 欧洲日本亚洲中文字幕| 国产av一码二码三码无码| 日本一本正道综合久久dvd | 国产日韩欧美成人| 99热这里只有精品在线观看| 日韩在线2020专区| 中文字幕资源站| 国产成人免费| 国产精品无码翘臀在线看纯欲| 久久免费视频6| 毛片在线区| 在线播放91| 天堂va亚洲va欧美va国产 | 亚洲精品欧美重口| 国产导航在线| 免费人成网站在线观看欧美| 日韩视频免费| 国产成人精品高清在线| 波多野结衣一二三| 97成人在线视频| 亚洲日韩Av中文字幕无码| 国产视频资源在线观看| 欧美视频在线播放观看免费福利资源 | 国产在线视频福利资源站| 国产美女在线免费观看| 久久精品最新免费国产成人| AV在线麻免费观看网站| 国产精品综合色区在线观看| 五月天丁香婷婷综合久久| 国产福利免费在线观看| 久久国产高清视频| 欧美一区二区啪啪| 亚洲人成网址| 国产精品无码作爱| 国内精自线i品一区202| 色综合久久无码网| 亚洲人成网站18禁动漫无码| 国产精品无码一二三视频| 午夜激情婷婷| 日韩午夜福利在线观看| 国产精品男人的天堂| 亚洲欧洲自拍拍偷午夜色无码| 伊人久久福利中文字幕| 久久久久久高潮白浆| 免费播放毛片| 波多野结衣第一页| 亚洲精品在线观看91| 99久久精品无码专区免费|