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

        ?

        AutoCAD VBA在大沙河河道斷面繪制中的應用

        2016-09-01 09:45:40蔣云杰張麗萍陸文君
        治淮 2016年2期
        關(guān)鍵詞:大沙河線型數(shù)組

        蔣云杰 董 雷 張麗萍 張 磊 楊 寧 陸文君

        AutoCAD VBA在大沙河河道斷面繪制中的應用

        蔣云杰董雷張麗萍張磊楊寧陸文君

        大沙河是古黃河進入江蘇省境內(nèi)的第一條分洪道,大沙河兩岸均為黃河沖積的粉砂土,地勢高亢,河道寬淺彎曲,汛期行洪不暢,經(jīng)常決口,灌溉期又嚴重缺水,干旱和洪澇災害頻發(fā)。根據(jù)《全國重點中小河流治理實施方案》(2013-2015年),豐縣大沙河治理總長度8.47km。根據(jù)河道規(guī)劃方案,河底寬從50~250m不等,邊坡為1∶4。結(jié)合大沙河的工程實際,利用VBA對AutoCAD進行二次開發(fā),繪制大沙河河道設(shè)計斷面。

        一、啟動VBA程序

        AutoCAD VBA程序代碼的集合叫做宏。該宏不能直接獨立運行,需要借助于其他應用程序的調(diào)用。點擊AutoCAD軟件菜單欄中的“工具”選項,在下拉列表框中選擇“宏”。然后點擊“加載工程”可以加載已經(jīng)編譯好的VBA工程,也可以點擊“Visual Basic編輯器”進行新工程的編譯。

        二、與Excel程序的交互接口

        Excel軟件是微軟辦公軟件中的重要組成部分,可以進行各種數(shù)據(jù)的處理、統(tǒng)計分析和輔助決策等,廣泛應用于各個領(lǐng)域。AutoCAD可以通過ActiveX訪問Excel數(shù)據(jù)表,并實現(xiàn)數(shù)據(jù)資源的共享。將規(guī)劃設(shè)計好的各河道斷面數(shù)據(jù)按照表1的順序依次列入Excel數(shù)據(jù)表中。

        表1  河道斷面數(shù)據(jù)數(shù)據(jù)表樣表

        首先聲明某個量為Excel.Applica -tion,其次聲明某個量為工作表,然后獲取需要調(diào)用的Excel的路徑。在該程序中,Excel的路徑和編譯好的VBA工程放在同一個文件夾中,并且將文件命名為Excel.xls。調(diào)用Excel程序的命令如下:

        Dimxlapp As Excel.Application

        Dimxlbook As Excel.Workbook'定義工作簿

        DimxlsheetAsExcel.Worksheet'定義工作表

        '獲得當前工程的路徑

        DimstrFile As String

        strFile=ThisDrawing.Application. VBE.ActiveVBProject.FileName

        '創(chuàng)建Excel應用程序?qū)嵗?/p>

        Set xlapp=CreateObject("Excel. Application")

        xlapp.Visible=True

        '指定打開Excel的位置

        (strFile,Len(strFile)-Len("Excel to line.dvb"))&"Excel.xls"

        '指定Excel文件為當前活動的文件

        三、調(diào)用Excel數(shù)據(jù)表中的數(shù)據(jù)

        應用VBA程序查詢Excel數(shù)據(jù)表中所具有的數(shù)據(jù)的組數(shù),并賦值給循環(huán)變量“i”,以便為相應的數(shù)組申請空間。由于Excel數(shù)據(jù)表中的數(shù)據(jù)已按照一定的格式列于數(shù)據(jù)表中,故可以將Excel數(shù)據(jù)表中的數(shù)據(jù)直接分配給申請好空間的數(shù)組??捎萌缦鲁绦虼a實現(xiàn):

        ReDim L(i+10)As Double'導線到中心線距離數(shù)組

        ReDim px(i+10)As Double'基點x坐標數(shù)組

        ReDim py(i+10)As Double'基點y坐標數(shù)組

        ReDim JG(i+10)As Double'基點高程數(shù)組

        ReDimDG(i+10)As Double'河底高程數(shù)組

        ReDim DB(i+10)As Double'斷面的寬度數(shù)組

        ReDim m(i+10)As Double'邊坡系數(shù)數(shù)組

        ReDim TG(i+10)As Double'灘面高程數(shù)組

        ReDim TB(i+10)As Double'灘面寬度數(shù)組

        ReDimZBD(i+10)As Double'坐標圖最高點坐標數(shù)組

        四、繪制河道斷面圖

        將河道中心線設(shè)置為點劃線,河道邊線設(shè)置為實線。因此在VBA中聲明objLayer1和objLayer2為AutoCAD的圖層屬性,分別表示河道中心線層和河道邊線層,并根據(jù)繪圖習慣設(shè)置線寬,本文中設(shè)置河道中心線線寬為0.3mm,河道邊線線寬為0.7mm。由于中心線是點劃線,初始AutoCAD中是沒有點劃線的,需要自己手動加載才可以。本文首先采用判斷語句判斷打開的AutoCAD文件中是否已經(jīng)加載了點劃線的樣式,如果已加載則直接使用,否則通過VBA語句加載。在本文中應用以下語句自動加載點劃線,并設(shè)置點劃線為紅色:

        Dim T As AcadLineType'CAD線型,用于遍歷已加載的線型

        Dim BB As Boolean'用于標記檢查已加載線型的結(jié)果

        DimobjLayer1 As AcadLayer

        DimobjLayer2 As AcadLayer

        Set objLayer1=ThisDrawing.Layers. Add("中心線")

        Set objLayer2=ThisDrawing.Layers. Add("邊線")

        For Each TIn ThisDrawing.Linetyp -es'檢查是否已加載中心線的線型

        If BB=False Then ThisDrawing. Linetypes.Load"ACAD_ISO10W100","acad.lin"'在要求的線型未找到時加載該線型

        objLayer1.Linetype="ACAD_ISO 10W100"'按要求定義中心線線型

        objLayer1.color=acRed

        objLayer1.Lineweight=acLnWt030

        objLayer2.Lineweight=acLnWt070

        在圖層及線型設(shè)置完成之后,根據(jù)Excel數(shù)據(jù)表中的數(shù)據(jù),按照幾何關(guān)系列出計算河道斷面幾個特征點坐標的表達式,調(diào)用AutoCADVBA程序中的畫直線命令,根據(jù)兩點連線命令繪制河道斷面,并設(shè)置中心線的線型比例為0.2。由于各斷面河道現(xiàn)狀灘面線形狀各不相同,因此在本文中將河道灘面以上的邊線按照邊坡比例繪制到坐標網(wǎng)格的最頂端,然后利用河道現(xiàn)狀灘面線,手動將河道線截斷,就可以形成設(shè)計的河道斷面圖。通過以下語句完成以上目的:

        Call ThisDrawing.ModelSpace. AddLine(p1,p2)'調(diào)用劃直線命令繪制中心線左側(cè)河底線

        Call ThisDrawing.ModelSpace. AddLine(p2,p3)'調(diào)用劃直線命令繪制中心線左側(cè)邊坡線

        CallThisDrawing.ModelSpace. AddLine(p3,p4)'調(diào)用劃直線命令繪制中心線左側(cè)灘面線

        CallThisDrawing.ModelSpace. AddLine(p4,p5)'調(diào)用劃直線命令繪制中心線左側(cè)邊坡線

        CallThisDrawing.ModelSpace. AddLine(p1,p6)'調(diào)用劃直線命令繪制中心線右側(cè)河底線

        CallThisDrawing.ModelSpace. AddLine(p6,p7)'調(diào)用劃直線命令繪制中心線右側(cè)邊坡線

        CallThisDrawing.ModelSpace. AddLine(p7,p8)'調(diào)用劃直線命令繪制中心線右側(cè)灘面線

        CallThisDrawing.ModelSpace. AddLine(p8,p9)'調(diào)用劃直線命令繪制中心線右側(cè)邊坡線

        Set ML=ThisDrawing.Model Space.AddLine(p10,p11)'調(diào)用劃直線命令繪制中心線

        圖1  繪制完成的大沙河某兩個河道斷面圖

        五、實例應用

        以大沙河河道斷面繪制為例,在平面圖上繪制河道中心線,并采集每個斷面導線至中心線的距離,存入河道數(shù)據(jù)表中,記為A列(基點距中心線距離),采用另外的程序在斷面圖中采集導線基點坐標存入河道數(shù)據(jù)表中,記為B列(基點x坐標)、C列(基點y坐標)。利用VBA打開河道數(shù)據(jù)表,根據(jù)B列和C列數(shù)據(jù)找到河道斷面基點,再結(jié)合A列數(shù)據(jù)可以得到河底中線位置坐標,根據(jù)Excel數(shù)據(jù)表中的數(shù)據(jù)按照計算式計算各特征點的坐標,繪制河道邊線和中心線。繪制完成的河道斷面如圖1所示。

        六、結(jié)語

        通過AutoCAD的VBA編譯技術(shù),調(diào)用Excel數(shù)據(jù)表中的河道斷面數(shù)據(jù)自動繪制河道斷面,大大減少了設(shè)計人員的工作量,提高了繪圖效率。尤其是在河道參數(shù)有變動的時候,可以重新生成改動后的河道斷面圖,減少了設(shè)計人員逐個斷面修改的工作量■

        (作者單位:江蘇省徐州市水利建筑設(shè)計研究院221100)

        猜你喜歡
        大沙河線型數(shù)組
        JAVA稀疏矩陣算法
        電腦報(2022年13期)2022-04-12 00:32:38
        單縣大沙河水庫工程建設(shè)可行性分析
        JAVA玩轉(zhuǎn)數(shù)學之二維數(shù)組排序
        電腦報(2020年24期)2020-07-15 06:12:41
        我愛我的家鄉(xiāng)
        高等級公路幾何線型優(yōu)化設(shè)計分析與評價
        江西建材(2018年4期)2018-04-10 12:37:28
        大沙河東堯橋至河口段水面線計算
        大沙河治理工程設(shè)計
        核安全1級設(shè)備線型支承分析方法研究
        尋找勾股數(shù)組的歷程
        一種非均勻線型的互連線能量分布模型
        計算物理(2014年1期)2014-03-11 17:00:58
        国产欧美日韩不卡一区二区三区 | 丝袜欧美视频首页在线| 中文字幕中文字幕人妻黑丝| 蜜桃视频网址在线观看| 色哟哟亚洲色精一区二区| 欧美激情综合色综合啪啪五月| 国产无遮挡又黄又爽免费网站 | 一区二区三区精品亚洲视频| 人妻经典中文字幕av| 免费一区二区高清不卡av| 婷婷伊人久久大香线蕉av| 内地老熟女老少配视频| 亚洲永久无码7777kkk| 中文字幕久久久久久久系列| 在线视频精品少白免费观看| 色偷偷色噜噜狠狠网站30根| 国产成人综合色在线观看网站| 成人三级在线| 国产三级自拍视频在线| 国产一区二区三区不卡在线观看| 欧洲美女黑人粗性暴交| 波多野结衣视频网址| 极品视频一区二区三区在线观看 | 精品一区二区亚洲一二三区| 国产一区二区三区四色av| 国产av综合影院| 妇女性内射冈站hdwwwooo | 亚洲国产线茬精品成av| 国产亚洲av无码av男人的天堂| 亚洲av无码成人网站在线观看| 欧美疯狂做受xxxx高潮小说| 久久久久亚洲AV片无码乐播| 精品精品国产三级av在线| 无码人妻丰满熟妇区五十路| 欧美性猛交内射兽交老熟妇| 中文字幕在线久热精品| 中文字幕在线人妻视频| 日韩精品极视频在线观看免费| 国产成人无码精品久久久免费| 人人爽人人爽人人爽| 一区二区三区国产美女在线播放|