国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

AutoCAD二次開發(fā)在測量中的應用

2016-08-23 10:09彭秋萍
廣西水利水電 2016年2期
關鍵詞:批量二次開發(fā)樣式

彭秋萍

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

AutoCAD二次開發(fā)在測量中的應用

彭秋萍

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

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

AutoCAD;VBA;開發(fā);地形測量

1 概述

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

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

2 AutoCAD的對象模型

2.1 application對象

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

2.2 Document對象

通過Document對象可以訪問CAD中所有圖形和大部分非圖形對象。當用戶需訪問圖形對象時(點、線、圓等圖形)可通過ModelSpace和PaperSpace集合來訪問,訪問非圖形對象時(文本樣式、線型、圖層等)可通過具有類似名稱的集合來訪問,訪問圖形特性時可通過Document對象的SummaryInfo特性。通過Document對象還可訪問Utility和Plot對象。

2.3 Utility對象

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

2.4 選擇集

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

3 AutoCAD開發(fā)實例[3-6]

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

圖1 展點、畫線思路

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

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

(1)創(chuàng)建點坐標

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

(2)創(chuàng)建點號單行文字

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

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

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

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

inputname (i) =ThisDrawing.Utility.GetString(False,vbNewLine&"請輸入點號")

3.1 批量展點

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

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

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

圖2 批量展點

展繪在AutoCAD的點,根據(jù)不同的需要,常常會改變點的樣式。在水文測量繪圖中常用的點樣式有:圖根點、埋石圖根點、注記點、十字絲、方塊點。點樣式圖形是以外塊的形式存儲起來,當選擇點樣式的時候,程序會找到圖紙上點的坐標,然后賦給圖塊的插入點坐標,即就在點的坐標上插入點樣式圖塊。

在模型空間中插入塊

RetVal=object.InsertBlock(InsPoint,

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

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

圖3 點樣式修改

3.2 批量畫線

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

圖4 批量畫線

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

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

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

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

3.3 文字變換高度

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

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

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

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

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

sset.Delete

EndIf

sset.SelectOnScreen

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

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

在AutoCAD上選擇到的選擇集對象會顯示虛線。

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

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

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

圖6 文字高度過濾條件窗體

圖7 文字修改效果對比

4 結語

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

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

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

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

[4] 李長勛.AutoCADVBA程序開發(fā)技術[M].北京:國防工業(yè)出版社,2005.

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

[6] 吳業(yè)紅.應用VBA技術進行AutoCAD二次開發(fā)[J].電腦知識與技術,2009,5(10):7950-7951.

(責任編輯:周 群)

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-),女,廣東汕頭人,廣東省水文局汕頭水文分局工程師,學士,主從事水利水電測量工程。

猜你喜歡
批量二次開發(fā)樣式
CPMF-I 取樣式多相流分離計量裝置
CPMF-I 取樣式多相流分離計量裝置
批量提交在配置分發(fā)中的應用
取樣式多相流分離計量裝置
淺談基于Revit平臺的二次開發(fā)
淺談Mastercam后處理器的二次開發(fā)
西門子Easy Screen對倒棱機床界面二次開發(fā)
基于VBA井斜數(shù)據(jù)批量校正方法
這是巴黎發(fā)布的新樣式
在數(shù)控車床上批量鉆鉸孔類工件的實踐
麻城市| 温州市| 洛浦县| 黄大仙区| 灯塔市| 永嘉县| 瑞安市| 连城县| 新竹县| 利津县| 左权县| 平南县| 伊宁县| 安阳市| 库尔勒市| 松阳县| 永胜县| 读书| 乌兰县| 怀安县| 桦川县| 虞城县| 北流市| 九寨沟县| 台中市| 宁强县| 马山县| 浠水县| 桃江县| 丹巴县| 浦东新区| 密云县| 靖边县| 博罗县| 徐水县| 永仁县| 淮北市| 浦北县| 咸阳市| 合作市| 读书|