• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      地下水監(jiān)測(cè)井綜合柱狀圖自動(dòng)繪圖工具軟件的開發(fā)

      2020-06-15 02:30:36
      巖土工程技術(shù) 2020年3期
      關(guān)鍵詞:柱狀圖賦值繪圖

      周 楊

      (中航勘察設(shè)計(jì)研究院有限公司,北京 100098)

      0 引言

      地下水監(jiān)測(cè)井綜合柱狀圖是地下水監(jiān)測(cè)井建設(shè)工程中的關(guān)鍵基礎(chǔ)資料。與勘察中常見的鉆孔柱狀圖不同,監(jiān)測(cè)井綜合柱狀圖不僅要表示出地層的巖性、厚度等基本特征,還要展現(xiàn)出監(jiān)測(cè)井的孔身結(jié)構(gòu)和井管結(jié)構(gòu)。因此,目前常用的鉆孔柱狀圖繪制程序無(wú)法滿足監(jiān)測(cè)井綜合柱狀圖的繪制要求。

      目前監(jiān)測(cè)井綜合柱狀圖大多是由技術(shù)人員利用AutoCAD進(jìn)行人工繪圖,需要繪制大量的線段、充填圖案,錄入大量文字,操作過(guò)程繁瑣,繪圖效率低下。若要更改出圖比例尺,只能重新繪制,造成前期工作量的極大浪費(fèi)。使繪圖更加自動(dòng)化,具有十分重要的現(xiàn)實(shí)意義。

      熟練運(yùn)用工程中常見的Excel軟件和AutoCAD軟件,往往可以達(dá)到事半功倍的效果[1-3]。利用Excel生成AutoCAD命令行語(yǔ)句繪制柱狀圖[4-5],在一定程度上提高了繪圖效率,但仍為一種半自動(dòng)化的繪圖方法,需通過(guò)人工把命令行語(yǔ)句輸入到AutoCAD中,當(dāng)命名行語(yǔ)句數(shù)量較多時(shí),容易造成語(yǔ)句或字符遺漏,導(dǎo)致使用效果不佳。王鳳和[6]基于AutoCAD進(jìn)行二次開發(fā),通過(guò)AutoCAD調(diào)用監(jiān)測(cè)井屬性數(shù)據(jù)繪圖,進(jìn)一步優(yōu)化繪圖過(guò)程。然而,監(jiān)測(cè)井屬性數(shù)據(jù)的復(fù)雜性往往被忽視,導(dǎo)致數(shù)據(jù)錄入過(guò)程中的體驗(yàn)較差并且數(shù)據(jù)檢驗(yàn)困難。

      本文圍繞地下水監(jiān)測(cè)井綜合柱狀圖的自動(dòng)繪圖展開研究,系統(tǒng)設(shè)計(jì)了繪圖工具的組織架構(gòu),優(yōu)化數(shù)據(jù)錄入方式,基于VBA語(yǔ)言編寫繪圖程序,將Excel的數(shù)據(jù)存儲(chǔ)功能與AutoCAD的繪圖功能高效連接,成功開發(fā)出地下水監(jiān)測(cè)井綜合柱狀圖自動(dòng)繪圖工具軟件。

      1 VBA語(yǔ)言簡(jiǎn)介

      VBA(Visual Basic for Applications)是從Visual Basic衍生出來(lái)的一種應(yīng)用程序開發(fā)工具語(yǔ)言。VBA是一種完全面向?qū)ο篌w系結(jié)構(gòu)的編程語(yǔ)言,在開發(fā)方面具有強(qiáng)大的功能和易用性,因此許多應(yīng)用程序均嵌入該語(yǔ)言作為開發(fā)工具,其中也包括了微軟公司的Excel軟件[7]和Autodesk公司的AutoCAD軟件[8]。

      使用Excel VBA開發(fā)自動(dòng)繪圖工具的優(yōu)點(diǎn)主要有:

      (1)目前常用的Excel版本均已經(jīng)內(nèi)嵌了Visual Basic編輯器,因此使用VBA編程時(shí)可以以Excel環(huán)境為母體,無(wú)須再搭建開發(fā)環(huán)境。

      (2)Excel軟件是目前最常用的辦公軟件之一,使得以此作為平臺(tái)開發(fā)應(yīng)用程序具有良好的通用性。

      (3)Excel軟件采用表格方式管理數(shù)據(jù),所有的數(shù)據(jù)都以二維表格形式管理,單元格中數(shù)據(jù)間的相互關(guān)系一目了然,便于數(shù)據(jù)錄入和數(shù)據(jù)查驗(yàn)。

      2 繪圖工具設(shè)計(jì)

      2.1 繪圖工具架構(gòu)

      繪圖工具應(yīng)包含三大主要功能,即數(shù)據(jù)的存儲(chǔ)、數(shù)據(jù)的處理、圖形的繪制。

      繪圖工具架構(gòu)如圖1所示,繪圖工具以Excel繪圖工作簿作為數(shù)據(jù)存儲(chǔ)中心,可儲(chǔ)存監(jiān)測(cè)井的各類屬性數(shù)據(jù);AutoCAD繪圖模板承擔(dān)圖形的最終繪制;以Excel為開發(fā)平臺(tái),利用其自帶的Visual Basic編輯器編寫的VBA繪圖程序作為數(shù)據(jù)處理模塊。繪圖程序可獨(dú)立存在,也可將其嵌入到繪圖工作薄中。

      繪圖思路為:繪圖程序調(diào)用儲(chǔ)存在Excel繪圖工作薄中的監(jiān)測(cè)井繪圖數(shù)據(jù),進(jìn)行處理運(yùn)算,計(jì)算完成后調(diào)用AutoCAD繪圖模板,通過(guò)執(zhí)行相應(yīng)程序語(yǔ)句將文字、線段、平面和圖案充填等圖元繪制到指定位置上,最終獲得監(jiān)測(cè)井綜合柱狀圖。

      圖1 繪圖工具組織架構(gòu)

      2.2 Excel繪圖工作簿設(shè)計(jì)

      繪圖工作簿如圖2所示,嵌入VBA繪圖程序后,Excel繪圖工作簿不僅是數(shù)據(jù)存儲(chǔ)中心,同時(shí)也是軟件操作的主要界面。利用Excel繪圖工作簿錄入監(jiān)測(cè)井屬性數(shù)據(jù),可將各類數(shù)據(jù)分別錄入到對(duì)應(yīng)的工作表內(nèi)。

      圖2 繪圖工作簿界面

      監(jiān)測(cè)井繪圖屬性數(shù)據(jù)可分為監(jiān)測(cè)井基本數(shù)據(jù)、地層數(shù)據(jù)、井結(jié)構(gòu)數(shù)據(jù)(井管數(shù)據(jù)和濾、止水?dāng)?shù)據(jù))、出圖參數(shù)、圖例數(shù)據(jù)(圖例代號(hào))。

      監(jiān)測(cè)井基本數(shù)據(jù)包括監(jiān)測(cè)井編號(hào)、名稱、地理位置、坐標(biāo)、井深、開孔直徑、井管直徑、地下水類型、地下水埋深、制圖單位和制圖時(shí)間;地層數(shù)據(jù)包含地層名稱、地層厚度、地層深度、巖性描述;井結(jié)構(gòu)數(shù)據(jù)包括井管類型、井管深度、濾料類型、濾料深度、止水料類型、止水料深度;柱狀圖參數(shù)包括柱狀圖各欄目列寬數(shù)據(jù)、橫向比例尺、縱向比例尺;圖例數(shù)據(jù)包含400余種地層巖性名稱和與之對(duì)應(yīng)的充填圖案代號(hào)。

      對(duì)監(jiān)測(cè)井屬性數(shù)據(jù)的分類有助于數(shù)據(jù)的錄入結(jié)構(gòu)化,并且提高數(shù)據(jù)查驗(yàn)效率。

      2.3 AutoCAD繪圖模板設(shè)計(jì)

      AutoCAD繪圖模板如圖3所示,包括表頭區(qū)、主繪制區(qū)、成井說(shuō)明區(qū)和圖簽區(qū)。表頭區(qū)展示監(jiān)測(cè)井的基本信息;主繪制區(qū)展示地層結(jié)構(gòu)和井結(jié)構(gòu)信息;成井說(shuō)明區(qū)對(duì)監(jiān)測(cè)井成井工藝進(jìn)行詳細(xì)說(shuō)明;預(yù)留圖簽區(qū)用于繪制人和審核人簽字。AutoCAD繪圖模板的分區(qū)設(shè)計(jì)有利于成圖格式的統(tǒng)一,達(dá)到制圖規(guī)范化。

      圖3 AutoCAD繪圖模板

      繪制二維平面圖像需要建立繪圖坐標(biāo)系,繪圖模板以地質(zhì)年代欄的左下角為繪圖原點(diǎn),水平右方向?yàn)閄軸正方向,豎直上方向?yàn)閅軸正方向,所有圖元的繪制均以坐標(biāo)原點(diǎn)為參照進(jìn)行繪制。主繪制區(qū)內(nèi)的水平方向范圍受各欄目列寬控制,豎直方向范圍受井深和縱向比例尺控制。

      3 繪圖程序

      繪圖程序是繪圖工具軟件的核心組成部分,繪圖程序負(fù)責(zé)處理繪圖過(guò)程中的各類數(shù)據(jù),首先讀取Excel繪圖工作簿中的數(shù)據(jù),然后根據(jù)成圖比例尺計(jì)算各地層、井管等材料的繪制高度,并將數(shù)據(jù)存儲(chǔ)在臨時(shí)數(shù)組中,待繪圖語(yǔ)句調(diào)用。

      繪圖程序計(jì)算完成后,需調(diào)用AutoCAD繪圖模板,并繪制各類圖元,主要包括文字、線段、平面、圖案充填以及標(biāo)注。繪圖程序反復(fù)調(diào)用四類圖元的繪制語(yǔ)句,即可在繪圖模板中繪制柱狀圖。

      下面分別介紹調(diào)用AutoCAD模板語(yǔ)句和這幾種圖元的繪制語(yǔ)句。

      3.1 調(diào)用AutoCAD繪圖模板

      利用Excel VBA調(diào)用AutoCAD繪圖模板,首先要引用AutoCAD的VBA類庫(kù)。通過(guò)使用FileDialog方法獲得繪圖模板的文件路徑,并將此路徑作為Open方法的參數(shù)。

      AutoCAD繪圖模板調(diào)用語(yǔ)句如下:

      Dim acadApp As AcadApplication

      Dim acadDoc As AcadDocument

      Dim mypath As String

      On Error Resume Next

      With Application.FileDialog(msoFileDialogFilePicker)

      .Title = "請(qǐng)選擇CAD繪圖模板"

      .AllowMultiSelect = False

      .Filters.Clear

      .Filters.Add "CAD Files", "*.dwt;".dwg"

      .Filters.Add "All Files", "*.*"

      If (.Show=-1)Then mypath=.SelectedItems(1)

      Else: Exit Sub

      End With

      Set acadApp = GetObject( , "AutoCAD.Application")

      If Err Then Err.Clear

      Set acadApp = CreateObject("AutoCAD.Application")

      If Err Then End

      End If

      Set acadDoc = acadApp.Documents.Open(mypath)

      Set acadDoc = acadApp.ActiveDocument

      3.2 文字

      繪制文字需要使用AddText方法。該方法需要輸入三個(gè)參數(shù):文字字串、插入點(diǎn)位置和文字高度。

      文字繪制語(yǔ)句如下:

      Dim TextObj As AcadText

      Dim TString As String

      Dim Point(0 To 1) As Double

      Dim height As Double

      TString = "黏土" 巖性賦值

      Point(0) = 1: Point(1) = 0 插入點(diǎn)坐標(biāo)賦值

      height = 2.5 文本高度賦值

      Set TextObj = ThisDrawing.ModelSpace. AddText(TString, Point, height)

      執(zhí)行以上語(yǔ)句可在AutoCAD繪圖模板中添加內(nèi)容為“黏土”的文字,文字插入點(diǎn)空間坐標(biāo)點(diǎn)為(1,0),文字高度為2.5。

      3.3 線段

      繪制直線需要使用AddLine方法。該方法需要輸入兩個(gè)參數(shù):線段起點(diǎn)坐標(biāo)和終點(diǎn)坐標(biāo)。

      線段繪制語(yǔ)句如下:

      Dim lineObj As acadline

      Dim StartPoint(0 To 1) As Double

      Dim EndPoint(0 To 1) As Double

      StartPoint (0) = 1 : StartPoint (1) = 0 線段起點(diǎn)賦值

      EndPoint (0) = 2 : EndPoint (1) = 0 線段終點(diǎn)賦值

      Set lineObj = acadDoc.ModelSpace.AddLine(StartPoint, StartPoint)

      執(zhí)行以上語(yǔ)句可在AutoCAD繪圖模板中添加一條線段,線段起點(diǎn)坐標(biāo)為(1,0),終點(diǎn)坐標(biāo)為(2,0)。

      3.4 平面及圖案充填

      繪制平面需要使用AddLightWeightPolyline方法。該方法利用繪制閉合的多段線來(lái)生成平面,因此其參數(shù)為多段線上各個(gè)轉(zhuǎn)折點(diǎn)的坐標(biāo)。

      圖案充填需要使用AddHatch方法,該方法需要三個(gè)參數(shù):充填類型、充填圖案名稱和充填邊界。

      本繪圖工具將目前常用的巖性圖案整合到充填圖例庫(kù)中,如圖4所示,每一種巖性有且只有一種與之相對(duì)應(yīng)的代號(hào),利用Excel工作簿中VLOOKUP函數(shù)對(duì)需填巖性的代號(hào)進(jìn)行反向查詢,以保證程序通過(guò)讀取代號(hào)便能正確調(diào)用相應(yīng)的圖案進(jìn)行充填。

      圖4 充填圖例代號(hào)庫(kù)

      平面繪制和充填語(yǔ)句為:

      Dim hatchObj As AcadHatch

      Dim patternName As String

      Dim PatternType As Long

      Dim bAssociativity As Boolean

      Dim p(1 To 10) As Double

      Dim rect(0 To 0) As AcadEntity

      Dim outerLoop(0 To 0) As AcadEntity

      p(1) = 0 : p(2) = 0

      p(3) = 1 : p(4) = 0

      p(5) = 1 : p(6) = 2

      p(7) = 0 : p(8) =2

      p(9)=p(1) : p(10) = p(2) 平面角點(diǎn)坐標(biāo)賦值

      Set rect(0) = acadDoc.ModelSpace.AddLightWeightPolyline(p)

      patternName = HW615 圖案代號(hào)賦值

      PatternType = 0

      bAssociativity = True

      Set hatchObj = acadDoc.ModelSpace.AddHatch(PatternType, patternName, bAssociativity)

      hatchObj.AppendOuterLoop (rect)

      hatchObj.Evaluate

      hatchObj.Update

      acdDoc.Regen True

      執(zhí)行以上語(yǔ)句可在AutoCAD繪圖模板中添加一個(gè)平面,平面長(zhǎng)為2,寬為1,左下角坐標(biāo)為(0,0),平面充填代號(hào)為HW615(黏土)。

      3.5 標(biāo)注

      對(duì)于井口直徑和井管直徑的標(biāo)注屬于線性標(biāo)注,需要使用AddDimAligned方法,使用該方法需要四個(gè)參數(shù):標(biāo)注起點(diǎn)坐標(biāo)、標(biāo)注終點(diǎn)坐標(biāo)、標(biāo)注文字坐標(biāo)、標(biāo)注文字字串。

      線性標(biāo)注語(yǔ)句如下:

      Dim dimObj As AcadDimAligned

      Dim point1(0 To 1) As Double

      Dim point2(0 To 1) As Double

      Dim location(0 To 1) As Double

      point1(0) = 0 : point1(1) = 0 標(biāo)注起點(diǎn)坐標(biāo)賦值

      point2(0) =10 : point2(1) = 0 標(biāo)注終點(diǎn)坐標(biāo)賦值

      location(0) = (point2(0) + point1(0)) / 2

      location(1) = 5 標(biāo)注文字坐標(biāo)賦值

      Set dimObj = acadDoc.ModelSpace.AddDimAligned(point1, point2, location)

      dimObj.TextOverride = 600 & "mm" 標(biāo)注文字賦值

      dimObj.Update

      執(zhí)行以上語(yǔ)句可在AutoCAD繪圖模板中添加一條線性標(biāo)注,線段起點(diǎn)坐標(biāo)為(0,0),終點(diǎn)坐標(biāo)為(10,0),標(biāo)注文字內(nèi)容為“600 mm”,標(biāo)注文字坐標(biāo)為(5,5)。

      4 操作與實(shí)例

      繪圖工具軟件的安裝十分便捷,只需將繪圖工具文件夾拷貝到電腦中即可。如圖5所示,繪圖工具文件夾內(nèi)有三個(gè)文件,包括:充填圖例庫(kù)文件夾、繪圖工作簿.xlsm和繪圖模板.dwg。

      第一步:對(duì)于初次使用本軟件的電腦,為使AutoCAD可以調(diào)用正確的圖案,首先需要將充填圖例庫(kù)文件夾的路徑添加到AutoCAD的支持文件搜索路徑中,已添加過(guò)充填圖例庫(kù)可跳過(guò)該步驟。

      圖5 繪圖工具

      第二步:打開繪圖工作簿.xlsm,其主界面如圖2所示。將地下水監(jiān)測(cè)井?dāng)?shù)據(jù)分別錄入到“監(jiān)測(cè)井基本數(shù)據(jù)”、“地層數(shù)據(jù)”、“井管數(shù)據(jù)”、“濾、止水?dāng)?shù)據(jù)”和“出圖參數(shù)”這5個(gè)工作表中。

      第三步:在主界面點(diǎn)擊“表內(nèi)計(jì)算”按鈕,程序?qū)︿浫氲臄?shù)據(jù)進(jìn)行計(jì)算。

      第四步:計(jì)算完成后,在主界面點(diǎn)擊“繪制柱狀圖”按鈕,在彈出的窗口中選擇繪圖模板.dwg文件,程序?qū)⒆詣?dòng)完成綜合柱狀圖的繪制,成果如圖6所示。

      圖6 監(jiān)測(cè)井綜合柱狀圖

      5 結(jié)論

      地下水監(jiān)測(cè)井綜合柱狀圖繪圖原理簡(jiǎn)單,但人工繪制操作繁瑣。本文圍繞地下水監(jiān)測(cè)井綜合柱狀圖的自動(dòng)繪圖展開研究,基于Excel和AutoCAD兩款軟件成功開發(fā)出地下水監(jiān)測(cè)井綜合柱狀圖的自動(dòng)繪圖工具軟件。

      Excel繪圖工作簿中監(jiān)測(cè)井屬性數(shù)據(jù)的分類錄入設(shè)計(jì)有助于數(shù)據(jù)錄入的結(jié)構(gòu)化和數(shù)據(jù)查驗(yàn);AutoCAD繪圖模板的分區(qū)設(shè)計(jì)使得成圖規(guī)范化;利用VBA編寫的繪圖程序?qū)xcel和AutoCAD兩款軟件高效連接,實(shí)現(xiàn)了繪圖自動(dòng)化。

      運(yùn)用繪圖工具可減少大量的重復(fù)工作,同時(shí)克服傳統(tǒng)繪圖工作中不易修改的缺點(diǎn),極大地提高出圖效率。

      猜你喜歡
      柱狀圖賦值繪圖
      繪制和閱讀降水量柱狀圖
      關(guān)于1 1/2 … 1/n的一類初等對(duì)稱函數(shù)的2-adic賦值
      來(lái)自河流的你
      “禾下乘涼圖”繪圖人
      L-代數(shù)上的賦值
      基于Unity3D 的冒泡排序算法動(dòng)態(tài)可視化設(shè)計(jì)及實(shí)現(xiàn)
      強(qiáng)賦值幺半群上的加權(quán)Mealy機(jī)與加權(quán)Moore機(jī)的關(guān)系*
      基于HTML5 Canvas繪圖技術(shù)應(yīng)用
      基于Android平臺(tái)的柱狀圖組件的設(shè)計(jì)實(shí)現(xiàn)
      利用賦值法解決抽象函數(shù)相關(guān)問(wèn)題オ
      荃湾区| 昌吉市| 建平县| 策勒县| 丹东市| 棋牌| 浮梁县| 乌海市| 南木林县| 黔西县| 临夏县| 尼勒克县| 边坝县| 体育| 九江县| 札达县| 伊春市| 柞水县| 安国市| 霍邱县| 集安市| 全州县| 奉贤区| 恭城| 扶风县| 黔西县| 增城市| 当阳市| 当雄县| 鹤岗市| 永昌县| 汕头市| 秀山| 广元市| 泰顺县| 苗栗县| 新巴尔虎右旗| 梨树县| 蕲春县| 荔波县| 鹤峰县|