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

基于VBA自動提取坐標插件的設計及在±0驗線中的應用

2015-06-28 06:15:00王衛華盧云輝
城市勘測 2015年2期

王衛華,盧云輝

(宜昌市測繪大隊,湖北 宜昌 443100)

1 引 言

建設工程±0 驗線是指建設工程施工至±0 位置時,對建筑單體外圍軸線位置的檢測及±0 標高的檢測。目的是檢查建設工程基礎是否按規劃主管部門放線的要求進行施工,±0 驗線是灰線檢驗工作的進一步深入,也是建設工程規劃報批后管理的重要環節。±0驗線報告作為規劃部門管理的重要依據,必須能準確、直觀地反映建筑物外圍軸線與放線軸線偏移量的方位和數值,圖1 所示的坐標較差表,是宜昌市規劃局要求的±0 驗線報告的一個附件。

圖1 ±0 驗線坐標較差表

表格中放線坐標和驗線坐標數值需要手工輸入,如果建筑物結構比較復雜,則輸入的工作量非常大而且容易出錯。雖然用CAD 命令“list”能列出多義線坐標列表,但是導入Excel 軟件時不能直觀的找到對應坐標軸,工作量仍然很大。因此,借助CAD 二次開發編寫插件無疑是解決此類問題最好的方法。

CAD 二次開發比較常用的工具是Visual LISP 和VBA,兩者各有所長,互為補充。Visual LISP 適合描述人機交互的工程,長于編寫模擬設計師思路的專業設計程序,對于各種用戶的輸入、錯誤的識別與恢復等有相當強大的功能,能充分發揮交互操作的特長,同時具有最多樣式的程序運行模式和很好的兼容性。缺點是編譯困難,對話框DCL 的設計編寫很難熟練掌握,因為其編譯困難,很難編寫大型程序。VBA 可以很方便地使用Windows 系統資源,使AutoCAD 很容易和Windows 下的Excel 等應用程序交互;對話框功能比LISP DCL 好很多,多圖檔環境下的應用程序也比Visual LISP 提供了更多的支持,且VBA 代碼有較好的可讀性,能進行復雜計算公式的編制。不足之處是不能像Visual LISP 一樣方便地調用CAD 的命令,許多交互操作的技巧在VBA中不能直接調用。綜上所述,熟練、靈活的掌握兩種語言的技巧和精髓,能幫助我們寫出實用高效,強壯性好的程序,本文中“驗線坐標較差表”坐標自動提取插件用VBA 編寫,輕松解決了坐標輸入的問題。

2 實例和編程思路

2.1 工程概況

某項目±0 驗線結果如圖2 所示,紅色線條為放線軸線,黑色線條為驗線軸線。為了圖面清晰,省略了與主題無關的要素,且人為拉大了差距,本案例需要分別列出1/K、56/K、48/A、35/A、22/A、9/A 等6 處軸線交點處的放線和驗線坐標:

圖2 放線驗線對照圖

2.2 編程思路

由于“坐標較差表”的格式較為固定,便于與Excel 軟件結合,本插件主要通過將提取的坐標數據自動寫入到表格中相應的單元格中。首先需要用輕量多義線(CAD中命令“PL”輸入,此線條只有二維坐標)依次連接所有提取坐標的交點,通過提取此輕量多義線的“Coordinates”屬性得到線上所有點的坐標,將坐標值賦值給一個數組,然后分別讀取數組中對應的值并寫入Excel 表格。數據寫入區首個單元格為“D4”,往下依次寫入放線坐標值,然后從單元格“G4”開始往下依次寫入驗線坐標值,本插件的主要難點在于寫入表格時的流程控制。

3 程序的實現

為了實現坐標的讀取,需要先用“輕量多義線”連接所有需要比較坐標的軸線交點,用“PL”命令依次連接圖3 中1 號~12 號點,得到的藍色多義線就有了插件需要的所有坐標值,并以此為基礎來完成插件的編寫。

完整代碼如下:

圖3 繪制連線圖

主要代碼過程解釋:

(1)代碼“ThisDrawing.Utility.GetEntity line,pt1,"拾取連線"”的功能是為輕量多義線賦值,調試過程中充分利用“本地窗口”的查詢功能,如圖4 所示,點開“本地窗口”中“line”的“Coordinates”屬性,即坐標屬性,可以看到本例中“Coordinates”是一個24 維的數組,由于測繪坐標系和CAD 直角坐標系的差異,Coordinates(0)和Coordinates(1)的值分別對應1 號點的Y坐標和X 坐標,同理,Coordinates(22)和Coordinates(23)的值分別對應12 號點的Y 坐標和X 坐標,深入了解數據的結構,有助于插件的編寫。

圖4 “Coordinates”屬性列表

(2)代碼“j=line.Coordinates”的功能是通過“Variant”型變量“j”將line 的“Coordinates”屬性取出,才能進行以后的操作,如圖5 所示,在賦值之后,本案例中變量“j”是一個24 維的數組,通過對數組的操作,能方便取出需要的值。

圖5 變量“j”結構列表

(3)代碼“k=UBound(j)-LBound(j):”的功能是通過調用函數“UBound”及“LBound”分別讀取數組“j”的上標和下標,本例中執行完本語句后,“K”值由默認的“0”變成“23”,所以“(K+1)/2”的值為12,即“j(0)”至“j(11)”中存儲放線數據,“j(12)”至“j(23)”中存儲驗線數據,通過變量“i”的“FOR”循環,依次讀取數組中的數據。如圖6 所示:

圖6 “K”值查詢

(4)代碼“For i=0 To(k-3)* 0.5 Step 2

Next i”中:“i”循環的步進設置為“2”是因為每個端點有X、Y 兩個值,每個“i”值能同時取j(i)和j(i+1)兩個值分別用來填充對應的單元格。由于數據寫入的開始單元格為“cells(4,,4)”和“cells(4,,5),所以循環中有變量“i”的表達式分別為“cells(i * 0.5+4,4)”和“cells(i * 0.5+4,5)”,“i”值變化范圍定義成0 至“(k-3)* 0.5”,本案例中“K”值為23,步進為2 的情況下,“i”值依次能取到“0、2、4、6、8、10”,這樣可讀取所有放線坐標。

(5)代碼“i=(k+1)* 0.5

Next i”中,驗線數數據可以用“i”取值范圍“(k+1)* 0.5 To k – 1”、步進為2 的循環來讀取,單元格的操作和放線數據的操作類似,這里不再贅述。

本插件在繪制連接主要軸線交點的連線無誤的情況下,坐標取值和填寫位置能保證絕對準確,杜絕了手工輸入帶來的誤差和繁瑣的操作,對復雜的建筑物尤其如此。此編程思路具有廣泛的擴展性和衍生性,對于有不同要求和格式的坐標提取,只需要對寫入坐標值的單元格定位做相應的調整。由于不涉及復雜的函數和調用,本插件在AutoCAD 2004~AutoCAD 2014 各版本均可正常工作。

4 實例操作

打開Excel 程序,根據較差表模板建立標準空白工作表,用“PL”(輕量多義線)依次連接需要比較的放線點和驗線點,運行插件,根據提示選取連線,就能自動生成如圖7 所示,同時圖中連線自動刪除。由于模板自身帶有計算公式,計算自動完成,但需要手工填寫軸號、作業時間和備注。

圖7 坐標較差成果表

5 結 語

本文基于VBA 編程技術,比較輕松地解決了較差表中坐標輸入的問題,極大提高了±0 驗線“坐標較差表”輸入的效率和準確性。本單位在使用過程中遇到了一些特殊情況,通過反復修改和完善,現已能穩定高效地運行,而且在這個插件的基礎上衍生出了更多的坐標提取和展點的插件。只是軸線的自動判斷和輸入的問題比較難解決,AutoCAD 的圖元本身不帶這個屬性,人工定義工作量很大,所以現在作業中還是需要人工判斷和輸入。

[1]張帆.AutoCAD VBA 二次開發教程[M].北京:清華大學出版社,2006.

[2]張帆,鄭立凱,王華杰.Autocad VBA 開發精彩實例教程[M].北京:清華大學出版社,2004.

[3]李風華.Autocad 2002/2000 BVA 開發指南[M].北京:清華大學出版社,2001.

[4]曾洪飛,張帆,盧擇臨.Autocad VBA&VB.NET 開發基礎與實例教程[M].北京:中國電力出版社,2008.

[5]二代龍震工作室.Autocad VBA 函數庫查詢辭典[M].北京:中國鐵路出版社,2003.

[6]Micrsoft 公司.Microsoft visual basic 6.0 程序員指南[M].北京:希望電子出版社,1998.

[7]Micrsoft 公司.Microsoft visual basic 6.0 語言參考手冊[M].北京:希望電子出版社,1998.

主站蜘蛛池模板: 国产超碰一区二区三区| 亚洲精品桃花岛av在线| 不卡视频国产| 免费国产好深啊好涨好硬视频| 在线国产91| 日日拍夜夜操| 亚洲人成网站观看在线观看| 漂亮人妻被中出中文字幕久久| 99国产精品国产高清一区二区| 免费在线看黄网址| 澳门av无码| 亚洲综合专区| 亚洲香蕉久久| 国产原创自拍不卡第一页| 国产成人成人一区二区| 成人国产精品网站在线看| 久久精品人妻中文视频| 亚洲欧美综合另类图片小说区| 欧美色视频在线| 日韩高清一区 | 另类重口100页在线播放| 欧美国产日产一区二区| 国产福利不卡视频| 国产精品妖精视频| 国产乱子伦视频在线播放| 久久久久亚洲AV成人网站软件| 不卡国产视频第一页| 亚洲伊人天堂| 啪啪国产视频| 国产成人精品无码一区二| 久久综合丝袜日本网| 亚洲视频在线观看免费视频| 精品夜恋影院亚洲欧洲| 日韩天堂在线观看| 精品视频福利| 国内毛片视频| 国产网站免费看| 久青草免费视频| 自拍偷拍欧美| 国产在线精彩视频二区| 国产白丝av| 国产午夜无码片在线观看网站| 美女裸体18禁网站| 色综合手机在线| 国产一区二区精品高清在线观看 | 国产日韩精品欧美一区喷| 欧美日韩国产在线播放| 国产高清无码第一十页在线观看| 成人午夜视频免费看欧美| 国产一区二区网站| 日日噜噜夜夜狠狠视频| 精品人妻无码中字系列| 亚洲欧洲日韩综合色天使| 国产欧美高清| 日本黄网在线观看| 99久久免费精品特色大片| 热久久国产| 国产精品第一区| 日韩一级二级三级| 福利在线免费视频| 91亚洲精选| 97视频在线精品国自产拍| 中文字幕日韩视频欧美一区| 视频在线观看一区二区| 日本黄色a视频| 久操中文在线| 日日拍夜夜操| 人妻出轨无码中文一区二区| 欧美97色| 97综合久久| 91精选国产大片| 在线亚洲天堂| 亚洲女同欧美在线| 全免费a级毛片免费看不卡| 2020国产精品视频| 中文成人在线视频| 久久精品人人做人人爽97| 99re66精品视频在线观看| 婷婷综合在线观看丁香| 99视频在线观看免费| 日韩无码黄色网站| 国产欧美日韩综合一区在线播放|