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

AutoCAD二次開(kāi)發(fā)在測(cè)量中的應(yīng)用

2016-08-23 10:09:31彭秋萍
廣西水利水電 2016年2期
關(guān)鍵詞:二次開(kāi)發(fā)文本測(cè)量

彭秋萍

(廣東省水文局汕頭水文分局,廣東 汕頭 515041)

AutoCAD二次開(kāi)發(fā)在測(cè)量中的應(yīng)用

彭秋萍

(廣東省水文局汕頭水文分局,廣東 汕頭 515041)

AutoCAD是目前應(yīng)用較為廣泛的計(jì)算機(jī)輔助繪圖軟件,擁有良好的用戶界面,較完善的繪圖功能,操作簡(jiǎn)單的特點(diǎn),但是僅僅基于AutoCAD繪圖是不能滿足測(cè)量繪圖中的特殊需要。為此,概述了AutoCAD的一些基本知識(shí),并用VBA對(duì)AutoCAD進(jìn)行二次開(kāi)發(fā),解決繪圖中一些實(shí)際的問(wèn)題:批量展繪點(diǎn),批量構(gòu)造多段線、直線,批量變換點(diǎn)樣式等。實(shí)現(xiàn)了水文岸邊地形測(cè)量中,自動(dòng)繪制岸邊道路及建筑物功能。

AutoCAD;VBA;開(kāi)發(fā);地形測(cè)量

1 概述

AutoCAD是制圖人員常用的繪圖軟件,以其強(qiáng)大的繪圖功能在建筑、測(cè)量及機(jī)械等領(lǐng)域廣泛應(yīng)用[1],基于AutoCAD的環(huán)境下,可以繪制多種圖形,但是要批量展繪野外測(cè)量點(diǎn)和構(gòu)造線是不能實(shí)現(xiàn)的,同時(shí),在繪圖過(guò)程中,常常需要修改文本的屬性,基于AutoCAD對(duì)于個(gè)別的文字修改起來(lái)并不難,但是如果是想一次性對(duì)文本進(jìn)行修改卻是一件費(fèi)時(shí)又費(fèi)力的事情,如果可以對(duì)AutoCAD進(jìn)行二次開(kāi)發(fā),編寫(xiě)一些程序就可以實(shí)現(xiàn)這一功能,將大大減少繪圖員的工作時(shí)間,提高繪圖員的繪圖效率。將Auto?CAD的繪圖功能與程序開(kāi)發(fā)語(yǔ)言相結(jié)合,利用VBA語(yǔ)言技術(shù)對(duì)AutoCAD進(jìn)行二次開(kāi)發(fā),實(shí)現(xiàn)AutoCAD圖形的自動(dòng)繪制或修改功能[2]。

本文主要論述了AutoCAD開(kāi)發(fā)的一些基本知識(shí)以及利用VBA對(duì)AutoCAD進(jìn)行二次開(kāi)發(fā):①介紹了一些關(guān)于AutoCAD開(kāi)發(fā)需了解到一些基本知識(shí);②用VBA實(shí)現(xiàn)了AutoCAD的展點(diǎn)功能,即實(shí)現(xiàn)批量畫(huà)點(diǎn)并修改點(diǎn)的樣式;③實(shí)現(xiàn)了批量繪制直線與多段線,可采用手工方式輸入點(diǎn)名自動(dòng)繪制直線或多段線,同時(shí)可采用導(dǎo)入的形式自動(dòng)繪制直線或多段線;④對(duì)文字高度實(shí)現(xiàn)了批量修改功能。

2 AutoCAD的對(duì)象模型

2.1 application對(duì)象

用戶訪問(wèn)AutoCAD圖形時(shí),需通過(guò)AutoCA?DActiveXAutomation對(duì)象,而這個(gè)對(duì)象的根是Appli?cation對(duì)象,當(dāng)用戶要通過(guò)某種方法或特性來(lái)訪問(wèn)圖形中的對(duì)象時(shí)都需要通過(guò)Application對(duì)象,同時(shí)Application對(duì)象還提供了指向VBAIDE(通過(guò)VBE特性)、AutoCAD工具欄(通過(guò)MenuGroups和Menu?Bar集合)和菜單以及AutoCAD圖形(通過(guò)Docu?ments集合)的鏈接。

2.2 Document對(duì)象

通過(guò)Document對(duì)象可以訪問(wèn)CAD中所有圖形和大部分非圖形對(duì)象。當(dāng)用戶需訪問(wèn)圖形對(duì)象時(shí)(點(diǎn)、線、圓等圖形)可通過(guò)ModelSpace和PaperSpace集合來(lái)訪問(wèn),訪問(wèn)非圖形對(duì)象時(shí)(文本樣式、線型、圖層等)可通過(guò)具有類(lèi)似名稱(chēng)的集合來(lái)訪問(wèn),訪問(wèn)圖形特性時(shí)可通過(guò)Document對(duì)象的SummaryInfo特性。通過(guò)Document對(duì)象還可訪問(wèn)Utility和Plot對(duì)象。

2.3 Utility對(duì)象

Utility對(duì)象提供應(yīng)用程序中使用的輸入函數(shù)和轉(zhuǎn)換函數(shù),這些輸入函數(shù)可以用來(lái)提示用戶在Auto?CAD命令行上輸入各種類(lèi)型的數(shù)據(jù),例如字符串、整數(shù)、實(shí)數(shù)和點(diǎn)等。

2.4 選擇集

在VBA開(kāi)發(fā)過(guò)程中,如何實(shí)現(xiàn)用戶和AutoCAD之間的交互是需要解決的重點(diǎn),這種交互方式可通過(guò)兩種途徑解決:①Utility對(duì)象的Get系列方法;②選擇集。當(dāng)用戶需同時(shí)選擇多個(gè)圖形對(duì)象時(shí),只有通過(guò)選擇集的方式才可實(shí)現(xiàn),另外,選擇集還提供了豐富的手段供用戶選擇符合某種特定條件下的實(shí)體對(duì)象。

3 AutoCAD開(kāi)發(fā)實(shí)例[3-6]

在水文測(cè)量中常常需要大量導(dǎo)入高程點(diǎn)或是地物特征點(diǎn),特別是用全站儀測(cè)得測(cè)量點(diǎn)后需要導(dǎo)入AutoCAD制圖,而AutoCAD無(wú)法實(shí)現(xiàn)批量展點(diǎn)的功能,同時(shí),岸上測(cè)量的主要構(gòu)筑物又是以道路及建筑物為主。本文的設(shè)計(jì)思路是將現(xiàn)場(chǎng)這些地物的特征點(diǎn)采集后,把采集的地形點(diǎn)批量展繪在CAD上,對(duì)需要連成多段線或是直線的地物地貌的特征點(diǎn)號(hào)存在txt文本中,通過(guò)VBA程序?qū)AD進(jìn)行二次開(kāi)發(fā)實(shí)現(xiàn)自動(dòng)繪圖,實(shí)現(xiàn)了批量的展繪點(diǎn),批量的構(gòu)造多段線、直線,對(duì)點(diǎn)樣式的批量修改,對(duì)文本高度的批量修改,其思路如圖1所示。

圖1 展點(diǎn)、畫(huà)線思路

在具備二維點(diǎn)坐標(biāo)數(shù)據(jù)文件的前提下,通過(guò)對(duì)文本文件中全部點(diǎn)的讀操作來(lái)批量創(chuàng)建點(diǎn)圖元,在點(diǎn)圖元的信息中包括點(diǎn)號(hào)、點(diǎn)坐標(biāo)、點(diǎn)的高程值??紤]其中某幾個(gè)點(diǎn)按順序構(gòu)成直線或多段線,方法有兩種,第一方法是通過(guò)讀取文本文件批量構(gòu)造多條直線或是多段線;第二種方法是通過(guò)在CAD的命令窗口里輸入點(diǎn)號(hào),讓它自動(dòng)按輸入點(diǎn)號(hào)的順序構(gòu)成直線或是多段線。

應(yīng)用循環(huán)的語(yǔ)句批量創(chuàng)建點(diǎn)、多段線、直線、點(diǎn)號(hào)文字、高程文字,存在VBA宏里,加載在菜單欄上運(yùn)行。下面是主要的程序代碼:

(1)創(chuàng)建點(diǎn)坐標(biāo)

Setpointobject=ThisDrawing.ModelSpace.Ad ?dPoint(point)

(2)創(chuàng)建點(diǎn)號(hào)單行文字

Settextobject=ThisDrawing.ModelSpace.AddText(pn(i),interpoint,1)

(3)創(chuàng)建點(diǎn)高程值單行文字

Settextobject1=ThisDrawing.ModelSpace.AddText(pz(i),interpoint1,1)

(4)在命令窗口上輸入字符串,獲取字符串

inputname (i) =ThisDrawing.Utility.GetString(False,vbNewLine&"請(qǐng)輸入點(diǎn)號(hào)")

3.1 批量展點(diǎn)

把全站儀存儲(chǔ)的觀測(cè)的原始數(shù)據(jù)存入電腦,其格式如表1。

表1 原始數(shù)據(jù)存入表

通過(guò)編制的程序,可直接將數(shù)據(jù)導(dǎo)入并將點(diǎn)展示在CAD界面中,如圖2所示。

圖2 批量展點(diǎn)

展繪在AutoCAD的點(diǎn),根據(jù)不同的需要,常常會(huì)改變點(diǎn)的樣式。在水文測(cè)量繪圖中常用的點(diǎn)樣式有:圖根點(diǎn)、埋石圖根點(diǎn)、注記點(diǎn)、十字絲、方塊點(diǎn)。點(diǎn)樣式圖形是以外塊的形式存儲(chǔ)起來(lái),當(dāng)選擇點(diǎn)樣式的時(shí)候,程序會(huì)找到圖紙上點(diǎn)的坐標(biāo),然后賦給圖塊的插入點(diǎn)坐標(biāo),即就在點(diǎn)的坐標(biāo)上插入點(diǎn)樣式圖塊。

在模型空間中插入塊

RetVal=object.InsertBlock(InsPoint,

Name,Xscale,Yscale,ZScale,Rotation[,Password])

批量改變點(diǎn)的點(diǎn)樣式,程序中設(shè)計(jì)的窗體如圖3(a)所示,以埋石圖根點(diǎn)作為例子改變點(diǎn)的樣式,如圖3(b)所示。

圖3 點(diǎn)樣式修改

3.2 批量畫(huà)線

在展繪好的地形點(diǎn)上,把需要連成多段線或是直線的地物地貌的特征點(diǎn)號(hào)存在txt文本中,通過(guò)VBA程序?qū)崿F(xiàn)繪圖。txt文本如圖4(a)所示,多段線的效果圖如圖4(b)所示。

圖4 批量畫(huà)線

(1)創(chuàng)建多段線

Setplineobject1=ThisDrawing.ModelSpace.Ad ?dPolyline(points)

(2)創(chuàng)建直線

Setlineobject1=ThisDrawing.ModelSpace.Ad ?dLine(point1,point2)

3.3 文字變換高度

在CAD圖形中,文字是一個(gè)很重要的屬性信息。在繪圖當(dāng)中,對(duì)文字的修改是經(jīng)常需要的,特別是在需要對(duì)岸上一些構(gòu)筑物的標(biāo)注時(shí),往往不知道哪個(gè)高度大小比較合適,經(jīng)常需要修改比例,想要選中高度在兩個(gè)值之間的文本,或是把選中的文字高度統(tǒng)一加上一個(gè)值,如果能在AutoCAD批量的修改它的高度,這樣就可以大大提高繪圖的效率。筆者針對(duì)CAD的文本的編輯功能比較弱,對(duì)Auto?CAD的文字編輯功能進(jìn)行了二次開(kāi)發(fā)。文字高度變換的程序流程下:

(1)創(chuàng)建選擇集,從AutoCAD屏幕上框選得到Setsset=ThisDrawing.SelectionSets.Add("name")

創(chuàng)建選擇集的時(shí)候需要注意的是:及時(shí)刪掉不需要的選擇集,不然程序運(yùn)行時(shí)會(huì)出現(xiàn)錯(cuò)誤。創(chuàng)建時(shí)可以防止存在已有的選擇集得代碼如下:

IfNotIsNull (ThisDrawing.SelectionSets.Item("name"))Then

Setsset=ThisDrawing.SelectionSets.Item("name")

sset.Delete

EndIf

sset.SelectOnScreen

(2)把從選擇集里得到得對(duì)象存儲(chǔ)在一個(gè)Ex?portEntity函數(shù),以便調(diào)用對(duì)象:

ExportEntity(ByRefobjCollection()AsVariant,nAsInteger,ByRefEntitys()AsVariant)

在AutoCAD上選擇到的選擇集對(duì)象會(huì)顯示虛線。

(3)程序可以只處理單行文字,也可以只處理多行文字,還可以單多行文字一起處理。

(4)調(diào)用窗體根據(jù)不同的過(guò)濾條件得到要做變換的文字對(duì)象。過(guò)濾條件有:大于、小于、等于、不等于、在兩個(gè)值之間,窗體如圖6。

在一幅已經(jīng)標(biāo)好尺寸的構(gòu)筑物平面圖,當(dāng)要出圖的時(shí)候發(fā)現(xiàn)他們圖形和尺寸標(biāo)注大小比例不好,需要批量的修改尺寸的高度,原圖有些標(biāo)注尺寸的字壓到了線,如果用手工去改變這些標(biāo)注尺寸的大小值,是一件很費(fèi)時(shí)的事情,但如果用程序去實(shí)現(xiàn)這一過(guò)程就簡(jiǎn)單了。用程序操作的效果圖和原圖對(duì)比如圖7。

圖6 文字高度過(guò)濾條件窗體

圖7 文字修改效果對(duì)比

4 結(jié)語(yǔ)

在本程序中實(shí)現(xiàn)批量創(chuàng)建點(diǎn)和線,批量展繪地形點(diǎn),點(diǎn)信息包括點(diǎn)的坐標(biāo)、點(diǎn)號(hào)及高程值,根據(jù)地物特征的需要,批量的把這些點(diǎn)連成多段線和直線,也可以在命令行上輸入點(diǎn)號(hào)自動(dòng)繪制多段線和直線。同時(shí),程序?qū)崿F(xiàn)批量變換點(diǎn)的樣式和文字高度,通過(guò)本文中程序的實(shí)現(xiàn),在熟悉AutoCAD實(shí)體和對(duì)象集合、它們的屬性和操作方法的前提下,可以充分利用VBA對(duì)AutoCAD進(jìn)行二次開(kāi)發(fā),明顯地提高繪圖的效率。

[1] 劉克福,牟有忠.VBA與AutoCAD中的二次開(kāi)發(fā)[J].科技資訊,2007,(15):87-88.

[2] 李 建.利用AutoCADVBA獲取等高線上高程點(diǎn)的方法[J].實(shí)驗(yàn)室研究與探索,2009,28(10):172-175.

[3] 丁國(guó)軍.VBA的二次開(kāi)發(fā)在工程測(cè)繪中的應(yīng)用[J].科技經(jīng)濟(jì)市場(chǎng),2007(2):9-10.

[4] 李長(zhǎng)勛.AutoCADVBA程序開(kāi)發(fā)技術(shù)[M].北京:國(guó)防工業(yè)出版社,2005.

[5] 張 帆,鄭立楷,盧擇臨,等.AutoCADVBA二次開(kāi)發(fā)教程/實(shí)例通系列[M].北京:清華大學(xué)出版社,2006.

[6] 吳業(yè)紅.應(yīng)用VBA技術(shù)進(jìn)行AutoCAD二次開(kāi)發(fā)[J].電腦知識(shí)與技術(shù),2009,5(10):7950-7951.

(責(zé)任編輯:周 群)

Application of AutoCAD secondary development achievements in survey

PENG Qiu-ping
(Shantou Branch of Guangdong Hydrology Bureau,Shantou 515041,China)

As the computer-aided drawing software that is now widely used,AutoCAD provides good user interface,relatively perfect drawing functions and permits simple operation,but fails to meet the special requirements for sur?vey drawing.Based on a brief introduction of the basic knowledge of AutoCAD,secondary development of AutoCAD was conducted with VBA to solve the actual problems of drawing such as batch plotting points,batch structural poly?lines and lines,batch conversion of point style etc.,so as to permit automatic drawing of bank roads and buildings required for shore topographic survey.

AutoCAD;VBA;development;topographical survey

TP391.72

B

1003-1510(2016)02-0047-04

2016-01-22

彭秋萍(1987-),女,廣東汕頭人,廣東省水文局汕頭水文分局工程師,學(xué)士,主從事水利水電測(cè)量工程。

猜你喜歡
二次開(kāi)發(fā)文本測(cè)量
淺談基于Revit平臺(tái)的二次開(kāi)發(fā)
甘肅科技(2020年20期)2020-04-13 00:30:02
把握四個(gè)“三” 測(cè)量變簡(jiǎn)單
在808DA上文本顯示的改善
淺談Mastercam后處理器的二次開(kāi)發(fā)
模具制造(2019年3期)2019-06-06 02:11:02
滑動(dòng)摩擦力的測(cè)量和計(jì)算
基于doc2vec和TF-IDF的相似文本識(shí)別
電子制作(2018年18期)2018-11-14 01:48:06
滑動(dòng)摩擦力的測(cè)量與計(jì)算
西門(mén)子Easy Screen對(duì)倒棱機(jī)床界面二次開(kāi)發(fā)
測(cè)量
文本之中·文本之外·文本之上——童話故事《坐井觀天》的教學(xué)隱喻
主站蜘蛛池模板: 亚洲欧美日韩成人高清在线一区| 一级毛片免费不卡在线| 成人精品午夜福利在线播放| 强乱中文字幕在线播放不卡| 国产喷水视频| 色综合天天娱乐综合网| 欧美成人二区| 亚洲福利片无码最新在线播放| 国产手机在线观看| 欧美日本一区二区三区免费| 亚洲色大成网站www国产| 伊人久久综在合线亚洲2019| 9cao视频精品| 国产自在线拍| 高清码无在线看| 日韩精品资源| 亚洲天堂视频网站| 亚洲日韩Av中文字幕无码| 国产91在线免费视频| 成年人福利视频| 国产三级精品三级在线观看| 美女被躁出白浆视频播放| 国产h视频免费观看| 亚洲香蕉在线| 国产精品尤物在线| 国产亚洲精| 99国产精品国产| 亚洲成年人网| 欧美一区二区福利视频| 国产高清在线观看| 亚洲人成人伊人成综合网无码| www成人国产在线观看网站| 亚洲成人77777| 99久久精品视香蕉蕉| 伊人AV天堂| 亚卅精品无码久久毛片乌克兰| 日韩精品成人网页视频在线| 午夜精品久久久久久久无码软件| 国产欧美在线观看精品一区污| 无码综合天天久久综合网| 激情成人综合网| 国产特一级毛片| www.亚洲一区| 亚洲福利一区二区三区| 51国产偷自视频区视频手机观看| 国产极品嫩模在线观看91| 伊人精品视频免费在线| 国产精品成人久久| 亚洲AⅤ综合在线欧美一区| 国产精品视频系列专区| 婷婷丁香在线观看| 九九九精品成人免费视频7| 青青网在线国产| 在线毛片网站| 青青热久免费精品视频6| 精品福利国产| 97在线观看视频免费| 无码电影在线观看| 国产精品 欧美激情 在线播放| 国产精品尤物在线| 亚洲成人福利网站| 毛片免费在线视频| 国产成人a在线观看视频| 久久精品无码国产一区二区三区| 91色在线视频| AV不卡国产在线观看| 国产美女91呻吟求| 一级爆乳无码av| 韩日无码在线不卡| 久久精品电影| 国产成人a毛片在线| 色综合久久久久8天国| 欧美成人精品一级在线观看| 亚洲日韩高清在线亚洲专区| 午夜精品福利影院| 亚洲免费福利视频| 91精品福利自产拍在线观看| 成年看免费观看视频拍拍| 91成人免费观看在线观看| 六月婷婷精品视频在线观看| 日本一本在线视频| 国产女同自拍视频|