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

基于VBA的AutoCAD二次開發(fā)站場道岔繪制

2013-09-04 00:47:10黃冠濤吳德芳趙加奎
機(jī)械工程與自動化 2013年6期
關(guān)鍵詞:可視化定義

黃冠濤,吳德芳,趙加奎

(中鐵二院 昆明勘察設(shè)計研究院有限責(zé)任公司,云南 昆明 650200)

0 引言

在鐵路站場平面布置圖的繪制過程中,道岔繪制是一個重要的組成部分,所耗費(fèi)的時間也多,因此提高道岔繪制速度可大大提高工作效率。在傳統(tǒng)的道岔繪制過程中,主要是采用查表法進(jìn)行手工繪制。對于一般的道岔(如單開道岔),可以根據(jù)道岔表[1]的參數(shù)手動快速繪制出,對于復(fù)雜道岔(如岔后縮短曲線、切線不平行無緩和曲線的反向縮短曲線)也可以通過查表法進(jìn)行手動繪制,但是存在著兩個缺陷:一是復(fù)雜道岔參數(shù)多,需要繪制輔助線;二是查表法存在局限性,如果表中沒有需要的數(shù)據(jù)只能根據(jù)公式進(jìn)行手工計算,然后再根據(jù)輔助線進(jìn)行繪制,這種繪制方法操作時間長,工作量大。針對這種情況,本文提出了在Auto-CAD的平臺上用VBA對其進(jìn)行二次開發(fā),對需要的數(shù)據(jù)進(jìn)行參數(shù)化,自動繪制復(fù)雜道岔,并以岔后縮短曲線為例對本方法進(jìn)行驗(yàn)證。

1 道岔選擇

在實(shí)際鐵路站場平面布置圖中道岔的類型很多,諸如單開道岔、對稱道岔、交叉渡線等。對于這些簡單的道岔可以直接根據(jù)道岔的型號和類型在AutoCAD里面繪制,體現(xiàn)不出復(fù)雜道岔自動化繪制的優(yōu)勢,因此,本文選擇稍微復(fù)雜的道岔——后縮短曲線作為案例對象。

2 VBA編程設(shè)計思路

為了在復(fù)雜道岔繪制過程中使用方便,本設(shè)計采用可視化參數(shù)繪圖的原則進(jìn)行設(shè)計。可視化參數(shù)繪圖的設(shè)計流程如圖1所示。

3 可視化參數(shù)繪圖界面

為提高本設(shè)計方案的可操作性,根據(jù)道岔的特點(diǎn)以及所需的相關(guān)參數(shù)設(shè)計對應(yīng)的可視化界面,如圖2所示。

圖1 可視化參數(shù)繪圖的設(shè)計流程

圖2 道岔繪制可視化界面圖

4 代碼實(shí)現(xiàn)

針對岔后縮短曲線的特點(diǎn),首先對岔后縮短曲線進(jìn)行抽象化處理,定義出各相關(guān)點(diǎn),如圖3所示。

圖3中,a點(diǎn)為岔心,k點(diǎn)為岔后直線上任一點(diǎn),其他點(diǎn)都是由輸入的參數(shù)根據(jù)《鐵路工程設(shè)計技術(shù)手冊-站場及樞紐》中的相關(guān)公式進(jìn)行計算確定的。

圖3 岔后縮短曲線抽象示意圖

最后編制的相關(guān)代碼如下:

Sub繪制岔后縮短曲線_Click()

Dim pa(0To 2)As Double'道岔岔心

Dim pb(0To 2)As Double'切點(diǎn)一

Dim pc(0To 2)As Double'交點(diǎn)一

Dim pd(0To 2)As Double'切點(diǎn)二

Dim pe(0To 2)As Double'切點(diǎn)三

Dim pf(0To 2)As Double'交點(diǎn)二

Dim pg(0To 2)As Double'切點(diǎn)四

Dim ph(0To 2)As Double'圓心二

Dim pi(0To 2)As Double'圓心一

Dim pj(0To 2)As Double'直線點(diǎn),與pf對應(yīng)

Dim pk(0To 2)As Double'岔后直線任一點(diǎn)

Dim dch As Double'定義道岔號

Dim R1As Double'定義第一個圓半徑

Dim R2As Double'定義第二個圓半徑Dim jzx As Double'定義夾直線

Dim chzx As Double'定義岔后直線

Dim xjj As Double'定義線間距

Dim Angpapk As Double'定義ak線角度,即基礎(chǔ)線的旋轉(zhuǎn)角度

Dim dcj As Double'定義道岔角度

Dim ppi As Double'定義pi值

ppi= Atn(1)*4

If Txt1.Text=""Or Txt1.Text=""Or Txt2.Text=""Or Txt3.Text=""Or Txt4.Text=""Or Txt5.Text= ""Or Txt6.Text=""Then

MsgBox("請確認(rèn)輸入數(shù)據(jù)!")'防止輸錯數(shù)據(jù)

End

Else

dch= Txt1.Text

R1= Txt2.Text

R2= Txt3.Text

jzx= Txt4.Text

chzx= Txt5.Text

xjj= Txt6.Text

Me.Hide

End If

Dim cc As Variant

cc= ThisDrawing.Utility.GetPoint(,vbCrLf & "選擇岔心:")'選擇相對初始點(diǎn)

pa(0)=cc(0)

pa(1)=cc(1)

pa(2)=cc(2)

cc= ThisDrawing.Utility.GetPoint(,vbCrLf & "選擇岔后直線上任一點(diǎn):")'選擇相對終點(diǎn)

pk(0)=cc(0)

pk(1)=cc(1)

pk(2)=cc(2)

Angpapk= ThisDrawing.Utility.AngleFromXAxis(pa,pk)'計算出ak線與X軸的夾角

pa(2)=0'定義a點(diǎn)的Z坐標(biāo)為0

pk(2)=0'定義k點(diǎn)的Z坐標(biāo)為0

'Call ThisDrawing.ModelSpace.AddLine(pa,pk)'繪制ak直線

If dch= 6Then

dcj=9.4622222222*ppi/180

ElseIf dch = 7Then

dcj=8.13*ppi/180

ElseIf dch = 9Then

dcj=6.3402777778*ppi/180

ElseIf dch = 12Then

dcj=4.7636111111*ppi/180

ElseIf dch = 18Then

dcj=3.1797222222*ppi/180

Else

MsgBox("道岔角度輸入有誤,請重新輸入!")

End

End If

'計算相關(guān)參數(shù)-EXCLE

Dim beta,T1,T2,fi,x1,y1,x2,y2,L,temp As Double

beta= Atn(jzx/(R1+ R2))

temp= (R1*Cos(dcj)+chzx*Sin(dcj)+ R2-xjj)* Cos(beta)/(R1+ R2)

fi= Atn(-temp/Sqr(-temp*temp+1))+2* Atn(1)-beta-dcj'計算fi角

T1= R1* (Sin(fi/2)/Cos(fi/2))

T2= R2* (Sin((fi+dcj)/2)/Cos((fi+dcj)/2))

x1= (chzx+ T1)* Cos(dcj)

y1= (chzx+ T1)*Sin(dcj)

x2=x1+ (T1+T2+jzx)*Cos(dcj+fi)

y2=xjj-y1

L=x2+T2

Dim tmp As Variant

Angpapk= ThisDrawing.Utility.AngleFromXAxis(pa,pk)

'求b點(diǎn)坐標(biāo)

tmp= ThisDrawing.Utility.PolarPoint(pa,dcj+ Angpapk,chzx)

pb(0)=tmp(0)

pb(1)=tmp(1)

pb(2)=0

'求c點(diǎn)坐標(biāo)

tmp= ThisDrawing.Utility.PolarPoint(pa,dcj+ Angpapk,chzx+T1)

pc(0)=tmp(0)

pc(1)=tmp(1)

pc(2)=0

'求g點(diǎn)坐標(biāo)

Dim aa As Double

aa=L/Sqr(L*L+xjj*xjj)

pg(0)=pa(0)+Sqr(L* L+xjj*xjj)* Cos(Angpapk+Atn(-aa/Sqr(-aa*aa+1))+2* Atn(1))

pg(1)=pa(1)+ Sqr(L* L+xjj*xjj)* Sin(Angpapk+Atn(-aa/Sqr(-aa*aa+1))+2* Atn(1))

pg(2)=0

'求f點(diǎn)坐標(biāo)

tmp= ThisDrawing.Utility.PolarPoint(pg,ppi+ Angpapk,T2)

pf(0)=tmp(0)

pf(1)=tmp(1)

pf(2)=0

'求j點(diǎn)坐標(biāo)

tmp= ThisDrawing.Utility.PolarPoint(pf,Angpapk,100)

pj(0)=tmp(0)

pj(1)=tmp(1)

pj(2)=0

'求i點(diǎn)坐標(biāo)

tmp= ThisDrawing.Utility.PolarPoint(pb,ppi/2 + dcj+Angpapk,R1)

pi(0)=tmp(0)

pi(1)=tmp(1)

pi(2)=0

'計算ac與cf線的夾角

Dim Angpcpa,Angpcpf,Angpipb,AngJJ1,Angpipd As Double

'pc到pa的角度

Angpcpa= ThisDrawing.Utility.AngleFromXAxis(pc,pa)

'pc到pf的角度

Angpcpf= ThisDrawing.Utility.AngleFromXAxis(pc,pf)

'求d點(diǎn)坐標(biāo)

tmp= ThisDrawing.Utility.PolarPoint(pc,Angpcpf,T1)

pd(0)=tmp(0)

pd(1)=tmp(1)

pd(2)=tmp(2)

'pi到pb的角度

Angpipb= ThisDrawing.Utility.AngleFromXAxis(pi,pb)

'算出PaPcPf的角度

AngJJ1=ppi*2-Angpcpa+Angpcpf

'繪制直線ab及圓弧bd

Angpipd= ThisDrawing.Utility.AngleFromXAxis(pi,pd)

Call ThisDrawing.ModelSpace.AddLine(pa,pb)

Call ThisDrawing.ModelSpace.AddArc(pi, R1, Angpipb,Angpipd)

'求e點(diǎn)坐標(biāo)

tmp= ThisDrawing.Utility.PolarPoint(pd,Angpcpf,jzx)

pe(0)=tmp(0)

pe(1)=tmp(1)

pe(2)=tmp(2)

'計算ef與fg之間的角度

Dim Angpfpe,Angpfpg,Angphpe,Angphpg,AngJJ2As Double

'pf到pe的角度

Angpfpe= ThisDrawing.Utility.AngleFromXAxis(pf,pe)'pc到pf的角度

Angpfpg= ThisDrawing.Utility.AngleFromXAxis(pf,pg)

'算出PePfPg的角度

AngJJ2=ppi*2-Angpfpe+Angpfpg

'計算h點(diǎn)坐標(biāo)

tmp=ThisDrawing.Utility.PolarPoint(pe,2.5* ppi-AngJJ2+Angpapk,R2)

ph(0)=tmp(0)

ph(1)=tmp(1)

ph(2)=tmp(2)

'計算hg與he的角度

'ph到pe的角度

Angphpe= ThisDrawing.Utility.AngleFromXAxis(ph,pe)

'pc到pf的角度

Angphpg= ThisDrawing.Utility.AngleFromXAxis(ph,pg)

'繪制直線de和圓弧eg及gj

Call ThisDrawing.ModelSpace.AddLine(pd,pe)

Call ThisDrawing.ModelSpace.AddArc(ph,R2,Angphpg,Angphpe)

Call ThisDrawing.ModelSpace.AddLine(pg,pj)

End Sub

5 結(jié)果驗(yàn)證

筆者從《鐵路工程設(shè)計技術(shù)手冊-站場及樞紐》一書中的岔后縮短曲線數(shù)據(jù)表中挑選了有代表性的10個曲線案例與利用VBA編程自動繪制的岔后縮短曲線進(jìn)行對比,結(jié)果發(fā)現(xiàn),二者完全吻合。由此證明本方法完全可以滿足岔后縮短曲線的繪制,并且還不受書中數(shù)據(jù)表有限的限制。

[1] 鐵道第四勘察設(shè)計院.鐵路工程設(shè)計技術(shù)手冊——站場及樞紐[M].北京:中國鐵道出版社,2009.

[2] 張國寶.AutoCAD2000VBA開發(fā)技術(shù)[M].北京:清華大學(xué)出版社,2000.

[3] 王若慧.基于VBA的AutoCAD二次開發(fā)及應(yīng)用實(shí)例[J].自動化技術(shù)與應(yīng)用,2007,26(9):30-33.

猜你喜歡
可視化定義
自然資源可視化決策系統(tǒng)
北京測繪(2022年6期)2022-08-01 09:19:06
思維可視化
師道·教研(2022年1期)2022-03-12 05:46:47
基于Power BI的油田注水運(yùn)行動態(tài)分析與可視化展示
云南化工(2021年8期)2021-12-21 06:37:54
自然資源可視化決策系統(tǒng)
北京測繪(2021年7期)2021-07-28 07:01:18
永遠(yuǎn)不要用“起點(diǎn)”定義自己
海峽姐妹(2020年9期)2021-01-04 01:35:44
定義“風(fēng)格”
基于CGAL和OpenGL的海底地形三維可視化
“融評”:黨媒評論的可視化創(chuàng)新
傳媒評論(2019年4期)2019-07-13 05:49:14
成功的定義
山東青年(2016年1期)2016-02-28 14:25:25
修辭學(xué)的重大定義
主站蜘蛛池模板: 亚洲欧美日韩中文字幕一区二区三区| 国产9191精品免费观看| 伊人成色综合网| 九九热视频在线免费观看| 亚洲成网777777国产精品| 99免费视频观看| 97超爽成人免费视频在线播放| 国产成人久久综合777777麻豆 | 国产在线专区| 中文字幕 日韩 欧美| 中文字幕在线一区二区在线| 五月天久久综合国产一区二区| 男人天堂亚洲天堂| 91精品国产丝袜| 亚洲视频免费在线看| 日韩国产一区二区三区无码| 国产精品专区第1页| 波多野一区| 五月天天天色| Jizz国产色系免费| 国精品91人妻无码一区二区三区| 露脸真实国语乱在线观看| 国产午夜人做人免费视频中文 | 综合天天色| 亚洲,国产,日韩,综合一区 | 99视频在线免费| 在线观看亚洲精品福利片| 亚洲中文字幕23页在线| 日韩国产高清无码| 免费一级毛片完整版在线看| 亚洲欧洲天堂色AV| 精品免费在线视频| 午夜影院a级片| 国产黑丝视频在线观看| 国产激情在线视频| 中文字幕av无码不卡免费| 中文字幕天无码久久精品视频免费| 亚洲人成网址| 成人午夜网址| 国产激情无码一区二区APP| 91麻豆久久久| 一级毛片a女人刺激视频免费| 国产在线观看精品| 日韩精品一区二区三区视频免费看| 午夜国产大片免费观看| 国产黑人在线| 亚洲熟妇AV日韩熟妇在线| 黄色网址免费在线| 欧美国产在线看| 欧美精品一区二区三区中文字幕| 亚洲区视频在线观看| 亚洲AV一二三区无码AV蜜桃| 制服丝袜无码每日更新| 亚洲日本www| 天天色综网| 成人国产免费| 亚洲欧美在线综合图区| 日本午夜网站| 免费无码AV片在线观看国产| 免费观看无遮挡www的小视频| 毛片在线播放a| 免费在线不卡视频| 最近最新中文字幕在线第一页| 国产精品无码翘臀在线看纯欲| 国产毛片基地| 久久久波多野结衣av一区二区| 婷五月综合| 精品三级在线| 国产a网站| 亚洲欧美在线精品一区二区| 亚洲午夜天堂| 五月天久久综合国产一区二区| 99在线免费播放| 国产91麻豆免费观看| 99在线观看视频免费| 经典三级久久| 欧美亚洲国产精品第一页| 日本91在线| 午夜国产大片免费观看| 欧美区一区| 国产超碰在线观看| 国产美女免费|