陳冠臣
摘要:本文利用VB.NET對AutoCad進行二次開發,實現了對不同數據格式的控制點繪制,不僅提高了工作效率,而且避免了數據轉換而出現的錯誤。
關鍵詞:控制點VB.NET
中圖分類號:TP393 文獻標識碼:A 文章編號:1672-3791(2012)04(c)-0031-01
隨著測繪技術的不斷發展,GPS-RTK在測繪工作中的運用越來越廣泛。它的出現使我們的工作變的非常便捷,在測量領域越來越受到廣大測量人員的重視和青睞。尤其是在大面積的測圖中,使用GPS-RTK施測圖根控制相比傳統的導線測量效率要提高很多。在施測好圖根控制點后,需要在南方CASS中展點時,問題就出現了。因為RTK手簿導出的數據格式與南方CASS中的格式不一致,需要在EXCEL中進行一系列的轉換才能展點成功。而且在轉換過程中,稍不注意就會出現錯誤,給外業工作帶來不必要的麻煩。本文就是利用AutoCad二次開發程序來實現了展點的功能,避免了轉換數據的麻煩。
現在AutoCad二次開發的語言很多,如AutoLISP、ObjectARX、VBA、.NET等,各種語言有各自的優點。其中使用VB.NET來開發AutoCad不僅實用,而且非常的方便。從AutoCad 2006開始的時候,AutoDesk就開發了針對.NET的類庫,使開發者很方便的操縱CAD中的各種圖元。雖然AutoCad 2006版本支持.NET并不是很好,但隨著時間的推移,.NET的功能將越來越強大。
1程序思路和編程實現
(1)RTK數據的提取。
不同廠家生產的儀器,其數據格式可能不盡相同,所以要對不同的數據格式進行處理。結合生產中的應用,編寫了一種實現程序,以下是提取數據的主要代碼:
Dim data1 As String
data1 = TextBox1.Text
Dim strLines() As String
strLines = data1.Split(New String() {ControlChars.CrLf}, _
StringSplitOptions.RemoveEmptyEntries)
For Each strLine As String In strLines
Dim surData() As String
surData = strLine.Split(New String() {","}, StringSplitOptions.None)
If RadioButton1.Checked = True Then
ElseIf RadioButton2.Checked = True Then
(2)實現展點。
根據不同的控制點類型來展繪控制點,其實不同的控制點對應不同的塊定義和不同的實體代碼,所以在處理不同的控制點類型的時候,只要插入不同的塊定義,再附于不同的實體代碼就可以達到目的了。下面是部分實現代碼:
If RadioButton5.Checked = True Then
''''遍歷集合中的每個元素
For Each kongzhiData As Data In AllPtColl
''''獲取控制點的坐標
Dim kzPt As Point3d = New Point3d(kongzhiData.Y, kongzhiData.X, kongzhiData.Z)
''''插入塊定義
Block.InsertBlockRef("gc261", kzPt, CassScale, 0)
''''添加控制點的文字
AddKZText(kongzhiData, "KZD", 95)
Next
ElseIf RadioButton6.Checked = True Then
For Each kongzhiData As Data In AllPtColl
Dim kzPt As Point3d = New Point3d(kongzhiData.Y, kongzhiData.X, kongzhiData.Z)
Block.InsertBlockRef("gc168", kzPt, CassScale, 0)
AddKZText(kongzhiData, "KZD", 95)
Next
ElseIf RadioButton7.Checked = True Then
For Each kongzhiData As Data In AllPtColl
Dim kzPt As Point3d = New Point3d(kongzhiData.Y, kongzhiData.X, kongzhiData.Z)
Block.InsertBlockRef("gc257", kzPt, CassScale, 0)
AddKZText(kongzhiData, "KZD", 95)
Next
End If
2結語
Visual Basic 2005是一種易學易懂的.NET語言。用此語言結合CAD的托管API來進行AutoCad二次開發非常的方便。本程序根據在實際工作中的應用而開發出來的,實現了多種數據格式的轉換,進而來實現控制點的展繪。本程序編制結束后,一直應用于生產,不僅提高了工作效率,而且避免了數據之間轉換而產生的錯誤。
參考文獻
[1] AutoCAD.NET開發人員手冊.
[2] AutoCAD 2006幫助文件.
[3] (美)Thearon Willis Bryan Newsome.Visual Basic 2005入門經典[M].北京:清華大學出版社,2006.
[4] 秦洪現,崔惠嵐,孫劍,等.Autodesk系列產品開發培訓教程[M].北京:化學工業出版社,2008.