• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于VBA自動(dòng)提取坐標(biāo)插件的設(shè)計(jì)及在±0驗(yàn)線中的應(yīng)用

      2015-06-28 06:15:00王衛(wèi)華盧云輝
      城市勘測(cè) 2015年2期
      關(guān)鍵詞:輕量多義坐標(biāo)值

      王衛(wèi)華,盧云輝

      (宜昌市測(cè)繪大隊(duì),湖北 宜昌 443100)

      1 引 言

      建設(shè)工程±0 驗(yàn)線是指建設(shè)工程施工至±0 位置時(shí),對(duì)建筑單體外圍軸線位置的檢測(cè)及±0 標(biāo)高的檢測(cè)。目的是檢查建設(shè)工程基礎(chǔ)是否按規(guī)劃主管部門放線的要求進(jìn)行施工,±0 驗(yàn)線是灰線檢驗(yàn)工作的進(jìn)一步深入,也是建設(shè)工程規(guī)劃報(bào)批后管理的重要環(huán)節(jié)。±0驗(yàn)線報(bào)告作為規(guī)劃部門管理的重要依據(jù),必須能準(zhǔn)確、直觀地反映建筑物外圍軸線與放線軸線偏移量的方位和數(shù)值,圖1 所示的坐標(biāo)較差表,是宜昌市規(guī)劃局要求的±0 驗(yàn)線報(bào)告的一個(gè)附件。

      圖1 ±0 驗(yàn)線坐標(biāo)較差表

      表格中放線坐標(biāo)和驗(yàn)線坐標(biāo)數(shù)值需要手工輸入,如果建筑物結(jié)構(gòu)比較復(fù)雜,則輸入的工作量非常大而且容易出錯(cuò)。雖然用CAD 命令“l(fā)ist”能列出多義線坐標(biāo)列表,但是導(dǎo)入Excel 軟件時(shí)不能直觀的找到對(duì)應(yīng)坐標(biāo)軸,工作量仍然很大。因此,借助CAD 二次開發(fā)編寫插件無(wú)疑是解決此類問(wèn)題最好的方法。

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

      2 實(shí)例和編程思路

      2.1 工程概況

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

      圖2 放線驗(yàn)線對(duì)照?qǐng)D

      2.2 編程思路

      由于“坐標(biāo)較差表”的格式較為固定,便于與Excel 軟件結(jié)合,本插件主要通過(guò)將提取的坐標(biāo)數(shù)據(jù)自動(dòng)寫入到表格中相應(yīng)的單元格中。首先需要用輕量多義線(CAD中命令“PL”輸入,此線條只有二維坐標(biāo))依次連接所有提取坐標(biāo)的交點(diǎn),通過(guò)提取此輕量多義線的“Coordinates”屬性得到線上所有點(diǎn)的坐標(biāo),將坐標(biāo)值賦值給一個(gè)數(shù)組,然后分別讀取數(shù)組中對(duì)應(yīng)的值并寫入Excel 表格。數(shù)據(jù)寫入?yún)^(qū)首個(gè)單元格為“D4”,往下依次寫入放線坐標(biāo)值,然后從單元格“G4”開始往下依次寫入驗(yàn)線坐標(biāo)值,本插件的主要難點(diǎn)在于寫入表格時(shí)的流程控制。

      3 程序的實(shí)現(xiàn)

      為了實(shí)現(xiàn)坐標(biāo)的讀取,需要先用“輕量多義線”連接所有需要比較坐標(biāo)的軸線交點(diǎn),用“PL”命令依次連接圖3 中1 號(hào)~12 號(hào)點(diǎn),得到的藍(lán)色多義線就有了插件需要的所有坐標(biāo)值,并以此為基礎(chǔ)來(lái)完成插件的編寫。

      完整代碼如下:

      圖3 繪制連線圖

      主要代碼過(guò)程解釋:

      (1)代碼“ThisDrawing.Utility.GetEntity line,pt1,"拾取連線"”的功能是為輕量多義線賦值,調(diào)試過(guò)程中充分利用“本地窗口”的查詢功能,如圖4 所示,點(diǎn)開“本地窗口”中“l(fā)ine”的“Coordinates”屬性,即坐標(biāo)屬性,可以看到本例中“Coordinates”是一個(gè)24 維的數(shù)組,由于測(cè)繪坐標(biāo)系和CAD 直角坐標(biāo)系的差異,Coordinates(0)和Coordinates(1)的值分別對(duì)應(yīng)1 號(hào)點(diǎn)的Y坐標(biāo)和X 坐標(biāo),同理,Coordinates(22)和Coordinates(23)的值分別對(duì)應(yīng)12 號(hào)點(diǎn)的Y 坐標(biāo)和X 坐標(biāo),深入了解數(shù)據(jù)的結(jié)構(gòu),有助于插件的編寫。

      圖4 “Coordinates”屬性列表

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

      圖5 變量“j”結(jié)構(gòu)列表

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

      圖6 “K”值查詢

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

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

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

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

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

      4 實(shí)例操作

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

      圖7 坐標(biāo)較差成果表

      5 結(jié) 語(yǔ)

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

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

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

      [3]李風(fēng)華.Autocad 2002/2000 BVA 開發(fā)指南[M].北京:清華大學(xué)出版社,2001.

      [4]曾洪飛,張帆,盧擇臨.Autocad VBA&VB.NET 開發(fā)基礎(chǔ)與實(shí)例教程[M].北京:中國(guó)電力出版社,2008.

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

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

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

      猜你喜歡
      輕量多義坐標(biāo)值
      并繼竿之我見(四)
      ——輕量竿只有新手才用?
      垂釣(2023年1期)2023-03-03 05:06:20
      麥弗遜懸架主銷軸線對(duì)半軸滑移的影響
      北京汽車(2023年1期)2023-03-03 00:50:38
      輕量新能源汽車應(yīng)用開關(guān)磁阻電機(jī)系統(tǒng)匹配的研究
      我對(duì)輕量型并繼竿的看法
      垂釣(2018年6期)2018-09-10 08:22:02
      基于二分法迭代的凸模數(shù)控銑削加工編程*
      維吾爾語(yǔ)動(dòng)詞“t∫iqmap”多義范疇的語(yǔ)義延伸機(jī)制
      一個(gè)所謂多義句式的本來(lái)面目
      多車道自由流技術(shù)在多義路徑識(shí)別領(lǐng)域的應(yīng)用
      降低車用發(fā)動(dòng)機(jī)燃油耗的高強(qiáng)度輕量氣門彈簧
      俄語(yǔ)動(dòng)詞隱喻的語(yǔ)義解讀*——兼動(dòng)詞多義的分析
      山阳县| 屯留县| 子洲县| 东海县| 佛山市| 昭通市| 博爱县| 鹤峰县| 榆林市| 扎鲁特旗| 大英县| 鹿泉市| 枣庄市| 黄大仙区| 繁昌县| 玉溪市| 双牌县| 绥德县| 大城县| 靖安县| 四会市| 孟津县| 黄陵县| 四平市| 临湘市| 广元市| 邵阳县| 崇礼县| 大庆市| 太湖县| 渑池县| 桐城市| 即墨市| 集贤县| 玛沁县| 南宁市| 通辽市| 星座| 台山市| 南岸区| 中牟县|