精品人妻无码一区二区三区软件 ,麻豆亚洲AV成人无码久久精品,成人欧美一区二区三区视频,免费av毛片不卡无码

您現(xiàn)在的位置是:首頁計算機信息管理論文

信息技術(shù)論文發(fā)表范文鉆孔符號的繪制

發(fā)布時間: 1

  現(xiàn)在計算機上的繪圖軟件有很多,根據(jù)行業(yè)和不同的工作需要都有相應(yīng)的軟件來滿足用戶的需求。本文著重介紹的是鉆孔符號的繪制,應(yīng)該用哪些軟件,用到哪些技術(shù)等。文章是一篇信息技術(shù)論文發(fā)表范文。
  摘要:介紹利用VB直接在AUTOCAD上展繪鉆孔符號,并附上設(shè)計程序。

  關(guān)鍵詞:AutoCAD; VB

  一、 前言

  目前,市場上流行的圖形矢量化軟件有很多,如CASS7.0等,這些軟件大都是針對各類比例尺的地形圖進行矢量化,帶有各類地形圖符號,對于大部分地形圖矢量化可以滿足要求,但對一些特殊要求的地形圖矢量化卻不適應(yīng),尤其是對其符號庫需要另外進行擴充。由于各種專業(yè)的設(shè)計需要通常要把勘察任務(wù)中地質(zhì)所布置的勘察孔位繪制在地形圖上,并附上孔號及高程。而在我們常用的繪圖軟件CASS7.0 中所要提供的繪制鉆孔符號功能中并不附帶孔號及高程,需要手工完成。這大大增加了繪圖人員的工作負擔。

  二、 鉆孔坐標展繪

  AutoCAD得以在世界范圍內(nèi)流行的重要因素之一,是它的開放性,它將二次開發(fā)權(quán)交給了用戶,并提供了許多開發(fā)工具。而VB是由微軟公司推出的基于 Windows的可視化編程語言,它采用面向?qū)ο、事件?qū)動的程序設(shè)計方法,操作簡便,因此倍受程序設(shè)計人員的青睞。下面就以如何展繪鉆孔符號為例,介紹如何在 VB 6. 0環(huán)境下利用對ATUOCAD進行二次開發(fā)。

  1、初始化。即要在VB中引用AutoCAD的類型庫Acad.tlb,并建立VB與AutoCAD間的聯(lián)系。相應(yīng)的程序代碼如下:

  Dim obj_Acad As Object, obj_Doc As Object, obj_ModelSpace As Object 'Application對象、Document對象、ModelSpace對象

  Dim boo As Boolean

  On Error Resume Next

  Set obj_Acad = GetObject(, "autocad.application") '若AutoCAD已啟動,則直接得到Application對象,建議先打開CAD程序

  If Err Then

  Err.Clear

  On Error Resume Next

  Set obj_Acad = CreateObject("autocad.application") '若AutoCAD未啟動,則運行AutoCAD程序

  If Err Then

  Err.Clear

  MsgBox "不能運行AutoCAD,請檢查是否安裝!", vbOKOnly, "警告!"

  Exit Sub

  End If

  End If

  obj_Acad.Visible = True '設(shè)置AutoCAD為可見(或者在后臺運行,不可見)

  obj_Acad.Documents.Open (filename) '打開AutoCAD圖形文件

  Set obj_Doc = obj_Acad.ActiveDocument '獲得當前活動圖形文件,即剛打開的圖形文件

  Set obj_ModelSpace = obj_Doc.ModelSpace '獲得當前活動圖形文件的模型空間

  boo = True

  之后,即可以用AutoCAD類型庫提供的屬性、方法對AutoCAD進行操作,如畫線,可用

  obj_ModelSpace.AddLine(startPoint, endpoint)語句來完成,寫文字,可用obj_ModelSpace.AddText(Format(gc(i), "0.0"), InsertionPoint, 2)語句來實現(xiàn)。

  2、數(shù)據(jù)格式及比例尺選擇。為方便使用,鉆孔數(shù)據(jù)文件的格式與CASS展控制點數(shù)據(jù)格式相同,比例尺即與所成地形圖比例尺相同,不同比例尺符號大小不同。格式及相關(guān)代碼如下:點名,代碼,東坐標,北坐標,高程

  (圖1鉆孔數(shù)據(jù)格式) (圖2選擇數(shù)據(jù)格式界面)

  With CommonDialog2

  .DialogTitle = "選擇展點文件(點名,代碼,東坐標,北坐標,高程)"

  .Filter = "CASS展點文件(*.DAT)|*.DAT" '鉆孔數(shù)據(jù)文件的格式為方便使用此格式與CASS展控制點數(shù)據(jù)格式相同

  .ShowOpen

  If .filename = "" Then

  MsgBox "未選擇展點文件!", vbOKOnly, "警告!"

  Exit Sub

  End If

  If Dir(.filename) = "" Then

  MsgBox "未找到展點文件!", vbOKOnly, "警告!"

  Exit Sub

  End If

  blnLyr = False

  '輸入比例尺

  Dim blc As String

  blc = InputBox("請輸入比例尺500:1000:2000", "比例尺", "500")

  (圖3輸入比例尺)

  3、數(shù)據(jù)文件的讀取及鉆孔展繪。為便于查找所繪鉆孔,新建圖層”ZK”,并根據(jù)前面輸入的比例尺先繪制好鉆孔符號做成塊,在從文件中順序讀取點號及高程并一起展繪出來。相關(guān)代碼如下:

  For i = 0 To obj_Doc.Layers.Count - 1 '遍歷所有的圖層

  If obj_Doc.Layers.Item(i).Name = "zk" Then

  Set obj_layer = obj_Doc.Layers.Item("zk")

  panduan = True

  Exit For '如果"newblock"已經(jīng)存在,直接獲得,并跳出循環(huán)

  End If

  Next i

  If Not panduan Then '如果圖層不存在,建立圖層

  Set obj_layer = obj_Doc.Layers.Add("zk")

  End If

  '如果要設(shè)置該圖層為當前圖層,請?zhí)砑酉旅娴拇a

  obj_Doc.ActiveLayer = obj_layer '設(shè)置當前圖層

  obj_layer.Color = 1 '1 紅色;2 黃色;3 綠色;4 青色;5 藍色;6 紫色;7 白色(黑)

  obj_Acad.ZoomExtents

  '定義塊

  Dim blockObj As Object

  Dim insertionPnt(0 To 2) As Double

  insertionPnt(0) = 0

  insertionPnt(1) = 0

  insertionPnt(2) = 0

  Set blockObj = obj_Doc.Blocks.Add(insertionPnt, "zk")

  ' 向塊中添加鉆孔符號

  Dim obj_circle1, obj_circle2, obj_circle3 As Object '定義圓對象

  Dim center1(0 To 2) As Double, center2(0 To 2) As Double

  Dim center3(0 To 2) As Double, point() As Double

  Dim Radius As Double

  Dim obj_hatch As Object '定義填充對象

  Dim PatternType As Integer '圖案類型:1 預定義,0 用戶定義,2,自定義

  Dim PatternName As String '填充圖案

  Dim AssociativeHatch As Boolean 'true,填充圖案是關(guān)聯(lián)的,false,不關(guān)聯(lián)

  Dim outerloop(0 To 0) As Object, innerloop(0 To 0) As Object '定義填充圖案的外邊界和內(nèi)邊界

  Dim aloop As Variant

  center3(0) = 0#: center3(1) = 0#: center3(2) = 0#

  Set obj_circle2 = blockObj.AddCircle(center3, 0.25)

  Set obj_circle3 = blockObj.AddCircle(center3, 0.001)

  ' 定義圖案填充

  PatternType = 1 '系統(tǒng)默認是預定義

  PatternName = "solid"

  AssociativeHatch = True '設(shè)置填充圖案是關(guān)聯(lián)的

  Set outerloop(0) = obj_circle2

  Set innerloop(0) = obj_circle3

  center1(0) = 0#: center1(1) = 0#: center1(2) = 0#

  Radius = 0.75

  Set obj_circle1 = blockObj.AddCircle(center1, Radius)

  '創(chuàng)建Hatch 對象

  Set obj_hatch = blockObj.AddHatch(PatternType, PatternName, AssociativeHatch, 0) '0,圖案填充;1,漸變色填充

  obj_hatch.AppendOuterLoop outerloop '添加外邊界,必須先創(chuàng)建Hatch 對象,才能定義邊界

  obj_hatch.AppendInnerLoop innerloop '添加內(nèi)邊界,必須先創(chuàng)建Hatch 對象,才能定義邊界

  obj_hatch.PatternScale = 0.2 '圖案縮小后填充NumberOfLoops

  obj_hatch.Evaluate '進行計算,生成填充圖案

  For i = 0 To obj_hatch.NumberOfLoops - 1 '遍歷圖案填充區(qū)域的邊界,每條邊界可能由數(shù)個對象組成

  obj_hatch.GetLoopAt i, aloop

  Next i

  Dim obj_line As Object '定義直線對象

  Dim point1(0 To 2) As Double, point2(0 To 2) As Double, point3(0 To 2) As Double

  point1(0) = 1.25: point1(1) = 0#: point1(2) = 0#

  point2(0) = 7.25: point2(1) = 0#: point2(2) = 0#

  Set obj_line = blockObj.AddLine(point1, point2)

  ' 打開文件并讀取

  fileno = FreeFile

  Open .filename For Input As fileno

  Do While Not EOF(fileno)

  Line Input #fileno, strline

  If strDivide(strline, ",").Count = 5 Then

  intCnt = intCnt + 1

  dblPnt(0) = CDbl(strDivide(strline, ",").Data(2))

  dblPnt(1) = CDbl(strDivide(strline, ",").Data(3))

  dblPnt(2) = CDbl(strDivide(strline, ",").Data(4))

  If blc = 500 Then

  Xscale = 1: Yscale = 1: Zscale = 1

  dblTxt(0) = dblPnt(0) + 4.25: dblTxt(1) = dblPnt(1) + 0.5: dblTxt(2) = dblPnt(2): height = 1.2

  ElseIf blc = 1000 Then

  Xscale = 2: Yscale = 2: Zscale = 2

  dblTxt(0) = dblPnt(0) + 4.25 * 2: dblTxt(1) = dblPnt(1) + 0.5 * 2: dblTxt(2) = dblPnt(2): height = 1.2 * 2

  ElseIf blc = 2000 Then

  Xscale = 4: Yscale = 4: Zscale = 4

  dblTxt(0) = dblPnt(0) + 4.25 * 4: dblTxt(1) = dblPnt(1) + 0.5 * 4: dblTxt(2) = dblPnt(2): height = 1.2 * 4

  Else

  MsgBox "沒有設(shè)置此比例尺", vbOKOnly, "比例尺?"

  End

  End If

  Set objTxt = obj_ModelSpace.AddText(strDivide(strline, ",").Data(0), dblTxt, height)

  objTxt.Alignment = acAlignmentCenter

  objTxt.TextAlignmentPoint = dblTxt

  objTxt.Update

  Select Case blc

  Case 500

  dblTxt(1) = dblPnt(1) - 1.7

  Case 1000

  dblTxt(1) = dblPnt(1) - 1.7 * 2

  Case 2000

  dblTxt(1) = dblPnt(1) - 1.7 * 4

  End Select

  '插入塊

  Dim blockRefObj As Object

  Set blockRefObj = obj_Doc.ModelSpace.InsertBlock(dblPnt, "zk", Xscale, Yscale, Zscale, 0)

  '插入高程

  Set objTxt = obj_Doc.ModelSpace.AddText(strDivide(strline, ",").Data(4), dblTxt, height)

  objTxt.Alignment = acAlignmentCenter

  objTxt.TextAlignmentPoint = dblTxt

  Else

  MsgBox "請檢查數(shù)據(jù)格式", vbOKOnly, "CASS格式?"

  End

  End If

  Loop

  Close fileno

  End With

  obj_Doc.Regen acActiveViewport

  obj_Acad.ZoomAll

  obj_Doc.Utility.Prompt vbCr & "展點完畢,共展點" & intCnt & "個。"

  MsgBox "已完成!", vbOKOnly, ""

  End Sub

  (圖4展繪結(jié)果)

  三、 結(jié)束語

  本文以展繪鉆孔符號為例探討了VB與AutoCAD的連接、展點的數(shù)據(jù)格式,以實現(xiàn)快速展繪鉆孔。采用VB開發(fā)測繪系統(tǒng)的應(yīng)用軟件,只要處理好各設(shè)備之間的I/O接口操作、動態(tài)連接庫的建立和調(diào)用及VB與數(shù)據(jù)庫的接口、數(shù)據(jù)庫的建立、數(shù)據(jù)格式之間的轉(zhuǎn)換,就能在短時間內(nèi)開發(fā)出界面友好的、功能易擴展的、面向?qū)ο蟮膶崟r測控軟件,滿足測繪生產(chǎn)的需要。

  [參考文獻]

  [1] 段興.《Visual Basic6.0控件實用程序設(shè)計100例》.人民郵電出版社,2002.10

  [2] 申石磊,季超 .《Visual Basic程序設(shè)計基礎(chǔ)》. 高等教育出版社,2010.03

  作者:張博(1982-)男,本科,遼寧西豐人,工程師,滿族,研究方向:電力測繪查勘工作 。
  信息技術(shù)論文發(fā)表期刊推薦《信息技術(shù)與信息化》從信息技術(shù)的研究、應(yīng)用角度展現(xiàn)IT行業(yè)與科技發(fā)展與進步,是全國高校、科研院所、企業(yè)發(fā)表信息科學研究、技術(shù)應(yīng)用成果的園地。雜志內(nèi)容以科技論文為主,并設(shè)有評論與綜述、信息化論壇、網(wǎng)絡(luò)通訊、信息處理與模式識別、研究與探索、方案與應(yīng)用等欄目。


轉(zhuǎn)載請注明來自:http://www.jinnzone.com/jisuanjixinxiguanlilw/53412.html