亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

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

        黃冠濤,吳德芳,趙加奎

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

        0 引言

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

        1 道岔選擇

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

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

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

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

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

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

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

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

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

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

        圖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對(duì)應(yīng)

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

        Dim dch As Double'定義道岔號(hào)

        Dim R1As Double'定義第一個(gè)圓半徑

        Dim R2As Double'定義第二個(gè)圓半徑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("請(qǐng)確認(rèn)輸入數(shù)據(jù)!")'防止輸錯(cuò)數(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 & "選擇岔心:")'選擇相對(duì)初始點(diǎn)

        pa(0)=cc(0)

        pa(1)=cc(1)

        pa(2)=cc(2)

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

        pk(0)=cc(0)

        pk(1)=cc(1)

        pk(2)=cc(2)

        Angpapk= ThisDrawing.Utility.AngleFromXAxis(pa,pk)'計(jì)算出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("道岔角度輸入有誤,請(qǐng)重新輸入!")

        End

        End If

        '計(jì)算相關(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'計(jì)算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

        '計(jì)算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)

        '計(jì)算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

        '計(jì)算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)

        '計(jì)算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è)計(jì)技術(shù)手冊(cè)-站場(chǎng)及樞紐》一書中的岔后縮短曲線數(shù)據(jù)表中挑選了有代表性的10個(gè)曲線案例與利用VBA編程自動(dòng)繪制的岔后縮短曲線進(jìn)行對(duì)比,結(jié)果發(fā)現(xiàn),二者完全吻合。由此證明本方法完全可以滿足岔后縮短曲線的繪制,并且還不受書中數(shù)據(jù)表有限的限制。

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

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

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

        猜你喜歡
        可視化定義
        自然資源可視化決策系統(tǒng)
        思維可視化
        師道·教研(2022年1期)2022-03-12 05:46:47
        基于Power BI的油田注水運(yùn)行動(dòng)態(tài)分析與可視化展示
        云南化工(2021年8期)2021-12-21 06:37:54
        自然資源可視化決策系統(tǒng)
        永遠(yuǎn)不要用“起點(diǎn)”定義自己
        海峽姐妹(2020年9期)2021-01-04 01:35:44
        定義“風(fēng)格”
        基于CGAL和OpenGL的海底地形三維可視化
        “融評(píng)”:黨媒評(píng)論的可視化創(chuàng)新
        成功的定義
        山東青年(2016年1期)2016-02-28 14:25:25
        修辭學(xué)的重大定義
        国产一极内射視颍一| 少妇又紧又爽丰满在线视频| 亚洲youwu永久无码精品| 男男啪啪激烈高潮cc漫画免费| 色老头一区二区三区| 亚洲愉拍自拍视频一区| 日韩人妻系列在线观看| 欧美人做人爱a全程免费| 肉体裸交丰满丰满少妇在线观看| 亚洲AV无码成人精品区H| 人妻一区二区三区在线看| 亚洲国产成人av在线观看| 妺妺窝人体色www在线图片| 日本精品人妻在线观看| 水蜜桃精品视频在线观看| 99久久久国产精品免费蜜臀| 中文字幕天堂在线| 富婆叫鸭一区二区三区 | 午夜影视免费| 国产成人乱色伦区| 岛国精品一区二区三区| 手机av在线播放网站| 日本真人做爰免费视频120秒| 国产香蕉一区二区三区在线视频| 亚洲国产视频精品一区二区| 91精品国产综合久久久蜜| 国产精品久久久久久久妇| 久久久久久久98亚洲精品| av网站韩日在线观看免费| 免费大片黄国产在线观看| 香蕉久久人人97超碰caoproen| 精品人妻免费看一区二区三区| 亚洲精品中文字幕视频色| 午夜视频在线在免费| 亚洲精品国产一二三无码AV| 在线亚洲精品免费视频| 高h小月被几个老头调教| 先锋影音av资源我色资源| 精品蜜桃av一区二区三区| 我和丰满妇女激情视频| 人人妻人人澡人人爽欧美二区|