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

        ?

        VBA在AutoCAD渠道橫斷面繪圖中的應(yīng)用

        2016-12-26 02:23:20付少波
        廣東水利水電 2016年8期
        關(guān)鍵詞:橫斷面圖層繪圖

        付少波,王 超

        (廣東省水利水電科學(xué)研究院,廣東省水動(dòng)力學(xué)應(yīng)用研究重點(diǎn)實(shí)驗(yàn)室,廣東 廣州 510635)

        ?

        VBA在AutoCAD渠道橫斷面繪圖中的應(yīng)用

        付少波,王 超

        (廣東省水利水電科學(xué)研究院,廣東省水動(dòng)力學(xué)應(yīng)用研究重點(diǎn)實(shí)驗(yàn)室,廣東 廣州 510635)

        通過VBA編程,建立AutoCAD的模型空間和Excel表格中特征參數(shù)聯(lián)系,批量繪制渠道橫斷面。通過實(shí)例證明該方法可有效減少工作量,提高工作效率。

        AutoCAD;VBA;Excel;橫斷面

        渠道設(shè)計(jì)是農(nóng)田水利設(shè)計(jì)的重要組成部分。在渠道設(shè)計(jì)中,設(shè)計(jì)人員常以Excel為工具來進(jìn)行渠道各項(xiàng)水利特征數(shù)據(jù)計(jì)算與試算,并根據(jù)有關(guān)計(jì)算結(jié)果利用AutoCAD繪制圖紙。渠道橫斷面繪圖過程存在操作步驟重復(fù)率高、準(zhǔn)確度差且批量修改困難等問題,給繪圖人員帶來很大困擾。

        經(jīng)過筆者探索與實(shí)踐,通過AutoCAD 內(nèi)嵌的VBA(Visual Basic For Applications)進(jìn)行二次開發(fā),可以實(shí)現(xiàn)Excel中有關(guān)特征參數(shù)直接批量導(dǎo)入AutoCAD中[1-2],并以此為依據(jù)繪制渠道橫斷面圖。這種方法提高了繪圖效率,形成了統(tǒng)一格式,提高了繪圖準(zhǔn)確度,便于批量修改。

        1 編制思路

        1.1 渠道橫斷面繪圖中遇到的問題

        渠道橫斷面設(shè)計(jì)的過程中,為滿足各設(shè)計(jì)階段橫斷面間距的要求,常常存在斷面形式變化不大的情況下,繪制許多尺寸不同,形式類似圖形的問題。渠道橫斷面繪圖過程中要反復(fù)參照Excel表格計(jì)算出的數(shù)據(jù),再根據(jù)相關(guān)特征參數(shù)進(jìn)行繪圖。例如設(shè)計(jì)渠底高程、設(shè)計(jì)水位、渠道幾何尺寸等。

        以廣東省仁化縣農(nóng)田水利重點(diǎn)縣(2013年度)灌區(qū)明渠改造為例,項(xiàng)目區(qū)有1條總長12.886 km干渠需要進(jìn)行改造,施工圖方案為在原有矩形渠道基礎(chǔ)上,襯砌擋墻并將渠道加高至設(shè)計(jì)值,部分渠段根據(jù)需要加設(shè)蓋板。根據(jù)施工圖出圖要求每隔50 m繪制1張渠道橫斷面圖,該干渠全段需繪制258個(gè)橫斷面,繪圖任務(wù)工作量很大[3]。

        1.2 程序編制思路

        以AutoCAD中內(nèi)嵌的VBA為工具,建立Excel表格中相關(guān)數(shù)據(jù)與AutoCAD的模型空間連接,通過參數(shù)(見圖1)的調(diào)用與循環(huán),依次分圖層完成繪圖、標(biāo)注、位移等操作,設(shè)計(jì)思路見圖2。

        圖1 基礎(chǔ)數(shù)據(jù)表

        圖2 關(guān)鍵方法實(shí)現(xiàn)的流程示意

        2 主要代碼部分

        2.1 數(shù)據(jù)提取

        利用循環(huán)嵌套語句將Excel數(shù)據(jù)表中與繪圖有關(guān)的數(shù)據(jù)讀取到二維數(shù)組內(nèi)。主要代碼如下:

        Setxlapp=CreateObject(“excel.application”)

        Setxlbook=xlapp.workbooks.Open(“C:Desktop1.xlsx”)′打開Excel工作簿的路徑

        xlapp.Visible=False

        Set xlsheet=xlbook.worksheets(“渠道改造特性表”) ′打開Excel中的工作表

        Dim w(1 To 259, 10) As String′建立二維數(shù)組讀取數(shù)據(jù)

        For j=1 To 10

        For i=2 To 259 Step 1

        w(i, j)=xlsheet.cells(i, j)

        Val (w(i, j)) ′將讀取的數(shù)據(jù)轉(zhuǎn)化為數(shù)值型

        i=i+1

        Next i

        j=j+1

        Next j

        2.2 圖形繪制

        通過讀取變量定出繪制圖形坐標(biāo),用劃線命令[4]完成繪圖。以渠道底邊為例,主要代碼部分如下:

        Dim mospace As AcadModelSpace

        Set mospace=ThisDrawing.ModelSpace

        Dim lineobj As AcadLine

        DimiAs Integer

        For i=2 To 259 Step 1

        j=5

        startpoint(0)=0+a

        startpoint(1)=0+c

        startpoint(2)=0

        endpoint(0)=startpoint(0)+w(i, j)

        endpoint(1)=0+c

        endpoint(2)=0

        ′ThisDrawing.ActiveLayer=ThisDrawing.Layers.Item(“原有渠道斷面”)′將當(dāng)前圖層設(shè)置為原有渠道斷面圖層

        Set lineobj=mospace.AddLine(startpoint, endpoint) ′底邊

        i=i+1

        Next i

        其他線位置以此為基準(zhǔn)點(diǎn),依次引用相關(guān)變量繪出,代碼不重復(fù)列出。

        2.3 尺寸標(biāo)注繪制

        定義標(biāo)注樣式,尺寸界限位置,偏移值等屬性,通過標(biāo)注命令完成標(biāo)注。以底邊標(biāo)注[5]為例,主要代碼部分如下:

        ThisDrawing.ActiveLayer=ThisDrawing.Layers.Item(“標(biāo)注”)′將當(dāng)前圖層設(shè)置為標(biāo)注圖層

        ThisDrawing.ActiveDimStyle=ThisDrawing.DimStyles.Item(“TestDimStyle”)’將TestDimStyle視為當(dāng)前標(biāo)樣式

        Dim retval As AcadDimAligned

        Dim ExtLinelPoint(0 To 2) As Double

        Dim ExtLine2Point(0 To 2) As Double

        Dim textposition(0 To 2) As Double

        ExtLinelPoint(0)=startpoint(0)

        ExtLinelPoint(1)=startpoint(1)-0.6 ′尺寸界限偏移值

        ExtLinelPoint(2)=0

        ExtLine2Point(0)=endpoint(0)

        ExtLine2Point(1)=endpoint(1)-0.6 ′尺寸界限偏移值

        ExtLine2Point(2)=0

        textposition(0)=1

        textposition(1)=startpoint(1)-0.8 ′尺寸標(biāo)注文字位置

        textposition(2)=1

        Set retval=ThisDrawing.ModelSpace.AddDimAligned(ExtLinelPoint, ExtLine2Point, textposition)’添加尺寸標(biāo)注

        2.4 塊類型標(biāo)注添加

        在模型空間添加塊,定義塊名稱,通過相關(guān)參數(shù)調(diào)用確定位置,執(zhí)行插入塊命令。以添加水位標(biāo)識(shí)為例,主要代碼部分如下:

        ThisDrawing.ActiveLayer= ThisDrawing.Layers.Item(“水位”) ′將當(dāng)前圖層設(shè)置為水位標(biāo)志圖層

        Dim blockObj As AcadBlockReference

        Dim insertblock1(0 To 2) As Double

        insertblock1(0)=startpoint(0)+kd(i) / 2′確定水位標(biāo)識(shí)位置

        insertblock1(1)=startpoint(1)+sw(i)+0.1

        insertblock1(2)=startpoint(2)

        Set blockObj=ThisDrawing.ModelSpace.InsertBlock(insertblock1, “water level”, 1, 1, 1, 0) ′ 插入塊

        根據(jù)需要可完成添加打斷線、漿砌石等塊類型符號(hào)的插入,代碼不重復(fù)列出。

        2.5 文字類標(biāo)注添加

        調(diào)用樁號(hào)變量并加上指定字符串,組成要求的格式,確定插入位置,通過添加文字命令,添加樁號(hào)文字。以添加樁號(hào)為例,主要代碼部分如下:

        ThisDrawing.ActiveLayer=ThisDrawing.Layers.Item(“樁號(hào)”) ′將當(dāng)前圖層設(shè)置為樁號(hào)圖層

        Dim textObj As AcadText ′增加樁號(hào)

        Dim textString As String

        Dim insertionPoint(0 To 2) As Double

        Dim height As Double

        textString=zh(i) & “改造斷面圖”

        insertionPoint(0)=startpoint(0)

        insertionPoint(1)=startpoint(1)-1.03

        insertionPoint(2)=0

        height=0.15’文字高度

        Set textObj=ThisDrawing.ModelSpace.AddText(textString, insertionPoint, height)’插入樁號(hào)文字

        根據(jù)需要可添加其它文字類標(biāo)注信息,代碼不重復(fù)列出。

        2.6 圖形位置的判定

        在循環(huán)外定義a、b、c、d,初始值均為0。進(jìn)入循環(huán)則進(jìn)行累加和計(jì)數(shù),用來判斷是否換行,是否執(zhí)行完畢。主要代碼如下:

        在繪圖循環(huán)內(nèi)

        a=a+9.1 ′x軸間距

        b=b+1

        d=d+1

        If b=3 Then ′換行

        a=0 ′x的值

        b=0 ′計(jì)數(shù)歸零

        c=c-6.36 ′y軸間距

        End If

        If d=8 Then ′計(jì)數(shù)除圖簽位置的圖形

        a=0 ′x的值

        c=c-8.28 ′y軸間距

        b=0

        d=0 ′計(jì)數(shù)歸零

        End If

        圖3 執(zhí)行結(jié)果示意

        3 結(jié)語

        通過基于AutoCAD的VBA二次開發(fā),建立Excel數(shù)據(jù)表與AutoCAD模型空間連接,實(shí)現(xiàn)了批量化、標(biāo)準(zhǔn)化、快速化、屬性化作圖。本例如按普通方法繪圖,1人需要10 d左右完成繪制。采用上述方法程序開發(fā)時(shí)間1 d,執(zhí)行時(shí)間約2 min,節(jié)約了時(shí)間,提高了效率,程序執(zhí)行結(jié)果見圖3。

        圖形各部分間采用分圖層繪圖,各圖層屬性易修改。如遇方案調(diào)整可根據(jù)修改后的參數(shù)直接執(zhí)行程序,進(jìn)行重新繪圖,提高了繪圖的效率和準(zhǔn)確性。但此方法對(duì)于一些比較短的渠道,編程部分略顯瑣碎,效率提升并不明顯。此方法在較長的渠道繪圖的處理中,有明顯優(yōu)勢(shì)。對(duì)河堤、公路等其它線性工程橫斷面繪制有參考意義。

        [1] 李長勛.AutoCAD VBA 程序開發(fā)技術(shù)[M].北京:國防工業(yè)出版社,2004.

        [2] 張帆.AutoCAD 二次開發(fā)教程[ M] .北京:清華大學(xué)出版社,2006.

        [3] 廣東省水利廳.廣東省中型灌區(qū)續(xù)建配套與節(jié)水改造工程初步設(shè)計(jì)報(bào)告編制指南[R].廣州: 廣東省水利廳,2011.

        [4] 符裕紅,張代杰. AutoCAD VBA 在渠道縱斷面設(shè)計(jì)中的應(yīng)用[J].中國農(nóng)村水利水電,2009,9(1):133-136.

        [5] 黎富忠, 顏景順. 在AutoCAD 中實(shí)現(xiàn)斷面數(shù)據(jù)的自動(dòng)生成與繪圖[J].廣西水利水電,2011(1):32-34.

        (本文責(zé)任編輯 王瑞蘭)

        Application of VBA to AutoCAD Channel Cross Section Drawing

        FU Shaobo, WANG Chao

        (Guangdong Research Institute of Water Resources and Hydropower, Key Laboratory of Hydrodynamics Research, Guangzhou 510635, China)

        This paper carries on procedural programming by using VBA. It connects the model space of AutoCAD with the characteristic data in the Excel that the programming draws the batch construction of ditches at one shot. It is proved that this method can both reduce workload and improve work efficiency.

        AutoCAD, VBA, Excel, cross-section

        2016-07-18;

        2016-07-30

        付少波(1990),男,本科,助理工程師,從事水利水電工程設(shè)計(jì)工作。

        TV391.72

        A

        1008-0112(2016)08-0061-04

        猜你喜歡
        橫斷面圖層繪圖
        來自河流的你
        中國三峽(2022年7期)2022-12-02 05:28:02
        “禾下乘涼圖”繪圖人
        城市道路橫斷面設(shè)計(jì)研究
        基于HTML5 Canvas繪圖技術(shù)應(yīng)用
        巧用混合圖層 制作抽象動(dòng)感森林
        廣州市健康體檢人群種植修復(fù)情況的橫斷面研究
        圖層法在地理區(qū)域圖讀圖中的應(yīng)用
        2014年某院醫(yī)院感染橫斷面調(diào)查
        Surfer和ArcView結(jié)合在氣象繪圖中的應(yīng)用
        河北遙感(2015年2期)2015-07-18 11:11:14
        中醫(yī)院醫(yī)院感染橫斷面調(diào)查分析
        国产内射爽爽大片| 亚洲无码啊啊啊免费体验| 97久久久一区二区少妇| 中文字幕国产精品一二三四五区| 亚洲裸男gv网站| 亚洲国产18成人中文字幕久久久久无码av | 国产免费二区三区视频| 国产二级一片内射视频播放| 天堂在线www中文| 亚洲色欲色欲欲www在线| 国产麻豆剧传媒精品国产av| 五月天中文字幕mv在线| 国产精品人妻一区夜夜爱| 国产午夜激无码AV毛片不卡| 日本一区二区三区女优在线| 少妇伦子伦精品无吗| 夜爽8888视频在线观看| АⅤ天堂中文在线网| 日本熟妇中出高潮视频| …日韩人妻无码精品一专区| 中文字幕av在线一二三区| 亚洲精品国产av一区二区| 日韩一区av二区三区| av人摸人人人澡人人超碰妓女| 无码熟妇人妻AV影音先锋| 国产一区二区在三区在线观看| 一本到在线观看视频| 国产在线精品欧美日韩电影| 亚洲成a人网站在线看| 国产成人精品久久二区二区91| 香蕉免费一区二区三区| 国产亚洲日韩欧美一区二区三区 | 精品人妻一区二区久久| 日本一区二区三区高清在线视频| 欧美a级情欲片在线观看免费| 丝袜美女污污免费观看的网站| 国产亚洲精品综合在线网站| 亚洲精品国精品久久99热| 18级成人毛片免费观看| 亚洲传媒av一区二区三区| 亚洲av免费手机在线观看|