" />
所屬欄目:電子技術(shù)論文 發(fā)布日期:2012-10-13 10:49 熱度:
摘要:AutoCADMAP是我們所熟知的地理信息制圖的重要軟件之一,它不僅操作方便,而且功能十分強大.但由于我們需求的多樣性,它在有些方面已經(jīng)不能滿足我們的需求.因此需要我們自己開發(fā)些功能來解決我們的需求問題.AutoCADMAP提供了強大的VBA開發(fā)技術(shù),為我們實現(xiàn)AutoCADMAP的二次開發(fā)提供了有效的途徑.本文在為提高生產(chǎn)效率與準確度的環(huán)境下,基于VBA開發(fā)實現(xiàn)了AutoCADMAP電桿符號的批量轉(zhuǎn)換.
關(guān)鍵詞:VBA,電桿符號,AutoCADMAP
1引言
所謂電桿符號既電力機車軌道兩旁的電桿.在我們進行數(shù)字化的時候,軌道載CAD中是一條平行雙線,而電桿則是作為符號分布在平行線的兩側(cè),而且要求符號的方向要垂直于軌道方向.通常一條軌道兩側(cè)總計會有幾千個電桿符號,如果人工操作,則需要對每個符號進行處理,旋轉(zhuǎn).這將極大的降低工作效率,而且準確度也得不到保障.為解決這種需求。AutoCADMAP提供了強大的VBA開發(fā)技術(shù),為我們實現(xiàn)AutoCADMAP的二次開發(fā)提供了必要的接口,使我們能通過這些接口和VBA語言實現(xiàn)CAD電桿符號的批量轉(zhuǎn)換。
2系統(tǒng)目標
利用VBA語言與AutoCADMAP二次開發(fā)接口的結(jié)合,編寫程序?qū)崿F(xiàn)電桿符號的批量轉(zhuǎn)換,提高生產(chǎn)效率,增強準確度.
3系統(tǒng)設計方案
(1)數(shù)據(jù)錄入,把要數(shù)字化的電力機車軌道和符號輸入到AutoCADMAP中,電桿符號中心線的末端要畫在軌道上或穿過軌道,如圖1所示:
圖1
(2)利用AutoCADMAP的打斷相交線工具,把剛才繪制的所有相交線打斷,刪除多余的部分,如圖2所示:
圖2
(3)通過以上兩個步驟,使電力機車軌道變成了很多條線段,使每相鄰兩個電桿符號都有一段獨立的機車軌道,通過編程獲取這段機車軌道的方向(線角度),把電桿符號分別相對這個角度旋轉(zhuǎn)正90度,負90度.通過程序分別選擇所有的軌道和電桿符號,通過遍歷,最終達到效果如圖3所示:
圖3
4主要程序代碼:
SubDIANGAN()
DimlayerObjAsAcadLayer
SetlayerObj=ThisDrawing.Layers.Add("GBLOCK")
DimAngleFirstAsDouble
DimAngleSecondAsDouble
DimselsetAsAcadSelectionSet
DimselAsAcadSelectionSet
DimFilterType(0)AsInteger
DimFilterData(0)AsVariant
DimvarAAsVariant
DimvarBAsVariant
DimintIAsInteger
FilterType(0)=0
FilterData(0)="LWPOLYLINE"
varA=FilterType
varB=FilterData
IfThisDrawing.SelectionSets.Count<>0Then
ForintI=0ToThisDrawing.SelectionSets.Count-1
Setselset=ThisDrawing.SelectionSets.Item(intI)
selset.Delete
OnErrorResumeNext
NextintI
EndIf
sset.Delete
Setselset=ThisDrawing.SelectionSets.Add("SS3")
selset.SelectOnScreenFilterType,FilterData
Setsel=ThisDrawing.SelectionSets.Add("SS4")
FilterType(0)=0
FilterData(0)="LWPOLYLINE"
sel.SelectOnScreenFilterType,FilterData
DimpobAsAcadLWPolyline
DimPOB2AsAcadLWPolyline
DimJpointAsVariant,TpointAsVariant
DimblockBHAsAcadBlockReference
DimstrDirNameAsString
Dimbj(10000,2)AsDouble
DimrAsInteger,jAsInteger,cjAsInteger
strDirName="D:G500編輯程序dqhtl.dwg"
r=0
cj=0
ForEachpobInselset
ForEachPOB2Insel
cj=0
Jpoint=pob.IntersectWith(POB2,acExtendNone)
IfUBound(Jpoint)>0Then
Forj=0Tor-1
IfJpoint(0)=bj(j,0)AndJpoint(1)=bj(j,1)Then
cj=cj+1
EndIf
Nextj
bj(r,0)=Jpoint(0)
bj(r,1)=Jpoint(1)
r=r+1
Ifcj>0Then
Else
Dimpp(2)AsDouble
pp(0)=Jpoint(0)
pp(1)=Jpoint(1)
pp(2)=0
DimkAsInteger
Fork=0ToUBound(pob.Coordinates)
Ifpob.Coordinate(0)(0)=Jpoint(0)Andpob.Coordinate(0)(1)=Jpoint(1)Then
CallAngle(pob.Coordinate(0)(0),pob.Coordinate(0)(1),pob.Coordinate(1)(0),pob.Coordinate(1)(1),AngleFirst,AngleSecond)
Else
k=(UBound(pob.Coordinates)+1)/2-1
CallAngle(pob.Coordinate(k-1)(0),pob.Coordinate(k-1)(1),pob.Coordinate(k)(0),pob.Coordinate(k)(1),AngleFirst,AngleSecond)
EndIf
Nextk
SetblockBH=ThisDrawing.ModelSpace.InsertBlock(pp,strDirName,0.1,0.1,0.1,AngleFirst)
blockBH.Layer="GBLOCK"
SetblockBH=ThisDrawing.ModelSpace.InsertBlock(pp,strDirName,0.1,0.1,0.1,AngleSecond)
blockBH.Layer="GBLOCK"
EndIf
EndIf
NextPOB2
Nextpob
EndSub
5結(jié)束語
AutoCADMAP二次開發(fā)接口和VBA語言的結(jié)合所產(chǎn)生的作用是非常強大的,本文所實現(xiàn)的功能只是它的一個簡單的典型應用,它個更多功能還需大家去發(fā)掘去體會。
參考文獻
[1]AutoCAD+VBA二次開發(fā)來源:InterNet明經(jīng)通道
文章標題:VBA實現(xiàn)AutoCadMap下電桿符號批量轉(zhuǎn)換
轉(zhuǎn)載請注明來自:http://www.56st48f.cn/fblw/dianxin/dianzijishu/13488.html
攝影藝術(shù)領(lǐng)域AHCI期刊推薦《Phot...關(guān)注:106
Nature旗下多學科子刊Nature Com...關(guān)注:152
中小學教師值得了解,這些教育學...關(guān)注:47
2025年寫管理學論文可以用的19個...關(guān)注:192
測繪領(lǐng)域科技核心期刊選擇 輕松拿...關(guān)注:64
及時開論文檢索證明很重要關(guān)注:52
中國水產(chǎn)科學期刊是核心期刊嗎關(guān)注:54
國際出書需要了解的問題解答關(guān)注:58
合著出書能否評職稱?關(guān)注:48
電信學有哪些可投稿的SCI期刊,值...關(guān)注:66
通信工程行業(yè)論文選題關(guān)注:73
SCIE、ESCI、SSCI和AHCI期刊目錄...關(guān)注:121
評職稱發(fā)論文好還是出書好關(guān)注:68
復印報刊資料重要轉(zhuǎn)載來源期刊(...關(guān)注:51
英文期刊審稿常見的論文狀態(tài)及其...關(guān)注:69
Web of Science 核心合集期刊評估...關(guān)注:59
電子信息論文范文
智能科學技術(shù)論文 廣播電視論文 光電技術(shù)論文 計算機信息管理論文 計算機網(wǎng)絡論文 計算機應用論文 通信論文 信息安全論文 微電子應用論文 電子技術(shù)論文 生物醫(yī)學工程論文 軟件開發(fā)論文
SCI期刊分析
copyright © www.56st48f.cn, All Rights Reserved
搜論文知識網(wǎng) 冀ICP備15021333號-3