信息技術(shù)論文發(fā)表范文鉆孔符號(hào)的繪制
發(fā)布時(shí)間:2015-07-09 16:52所屬分類:計(jì)算機(jī)信息管理論文瀏覽:1次加入收藏 查看PDF文件后下載PDF文件
現(xiàn)在計(jì)算機(jī)上的繪圖軟件有很多,根據(jù)行業(yè)和不同的工作需要都有相應(yīng)的軟件來滿足用戶的需求。本文著重介紹的是鉆孔符號(hào)的繪制,應(yīng)該用哪些軟件,用到哪些技術(shù)等。文章是一篇 信息技術(shù)論文發(fā)表 范文。 摘要:介紹利用VB直接在AUTOCAD上展繪鉆孔符號(hào),并附上設(shè)計(jì)
現(xiàn)在計(jì)算機(jī)上的繪圖軟件有很多,根據(jù)行業(yè)和不同的工作需要都有相應(yīng)的軟件來滿足用戶的需求。本文著重介紹的是鉆孔符號(hào)的繪制,應(yīng)該用哪些軟件,用到哪些技術(shù)等。文章是一篇信息技術(shù)論文發(fā)表范文。
摘要:介紹利用VB直接在AUTOCAD上展繪鉆孔符號(hào),并附上設(shè)計(jì)程序。
關(guān)鍵詞:AutoCAD; VB
一、 前言
目前,市場(chǎng)上流行的圖形矢量化軟件有很多,如CASS7.0等,這些軟件大都是針對(duì)各類比例尺的地形圖進(jìn)行矢量化,帶有各類地形圖符號(hào),對(duì)于大部分地形圖矢量化可以滿足要求,但對(duì)一些特殊要求的地形圖矢量化卻不適應(yīng),尤其是對(duì)其符號(hào)庫需要另外進(jìn)行擴(kuò)充。由于各種專業(yè)的設(shè)計(jì)需要通常要把勘察任務(wù)中地質(zhì)所布置的勘察孔位繪制在地形圖上,并附上孔號(hào)及高程。而在我們常用的繪圖軟件CASS7.0 中所要提供的繪制鉆孔符號(hào)功能中并不附帶孔號(hào)及高程,需要手工完成。這大大增加了繪圖人員的工作負(fù)擔(dān)。
二、 鉆孔坐標(biāo)展繪
AutoCAD得以在世界范圍內(nèi)流行的重要因素之一,是它的開放性,它將二次開發(fā)權(quán)交給了用戶,并提供了許多開發(fā)工具。而VB是由微軟公司推出的基于 Windows的可視化編程語言,它采用面向?qū)ο蟆⑹录?qū)動(dòng)的程序設(shè)計(jì)方法,操作簡便,因此倍受程序設(shè)計(jì)人員的青睞。下面就以如何展繪鉆孔符號(hào)為例,介紹如何在 VB 6. 0環(huán)境下利用對(duì)ATUOCAD進(jìn)行二次開發(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對(duì)象、Document對(duì)象、ModelSpace對(duì)象
Dim boo As Boolean
On Error Resume Next
Set obj_Acad = GetObject(, "autocad.application") '若AutoCAD已啟動(dòng),則直接得到Application對(duì)象,建議先打開CAD程序
If Err Then
Err.Clear
On Error Resume Next
Set obj_Acad = CreateObject("autocad.application") '若AutoCAD未啟動(dòng),則運(yùn)行AutoCAD程序
If Err Then
Err.Clear
MsgBox "不能運(yùn)行AutoCAD,請(qǐng)檢查是否安裝!", vbOKOnly, "警告!"
Exit Sub
End If
End If
obj_Acad.Visible = True '設(shè)置AutoCAD為可見(或者在后臺(tái)運(yùn)行,不可見)
obj_Acad.Documents.Open (filename) '打開AutoCAD圖形文件
Set obj_Doc = obj_Acad.ActiveDocument '獲得當(dāng)前活動(dòng)圖形文件,即剛打開的圖形文件
Set obj_ModelSpace = obj_Doc.ModelSpace '獲得當(dāng)前活動(dòng)圖形文件的模型空間
boo = True
之后,即可以用AutoCAD類型庫提供的屬性、方法對(duì)AutoCAD進(jìn)行操作,如畫線,可用
obj_ModelSpace.AddLine(startPoint, endpoint)語句來完成,寫文字,可用obj_ModelSpace.AddText(Format(gc(i), "0.0"), InsertionPoint, 2)語句來實(shí)現(xiàn)。
2、數(shù)據(jù)格式及比例尺選擇。為方便使用,鉆孔數(shù)據(jù)文件的格式與CASS展控制點(diǎn)數(shù)據(jù)格式相同,比例尺即與所成地形圖比例尺相同,不同比例尺符號(hào)大小不同。格式及相關(guān)代碼如下:點(diǎn)名,代碼,東坐標(biāo),北坐標(biāo),高程
(圖1鉆孔數(shù)據(jù)格式) (圖2選擇數(shù)據(jù)格式界面)
With CommonDialog2
.DialogTitle = "選擇展點(diǎn)文件(點(diǎn)名,代碼,東坐標(biāo),北坐標(biāo),高程)"
.Filter = "CASS展點(diǎn)文件(*.DAT)|*.DAT" '鉆孔數(shù)據(jù)文件的格式為方便使用此格式與CASS展控制點(diǎn)數(shù)據(jù)格式相同
.ShowOpen
If .filename = "" Then
MsgBox "未選擇展點(diǎn)文件!", vbOKOnly, "警告!"
Exit Sub
End If
If Dir(.filename) = "" Then
MsgBox "未找到展點(diǎn)文件!", vbOKOnly, "警告!"
Exit Sub
End If
blnLyr = False
'輸入比例尺
Dim blc As String
blc = InputBox("請(qǐng)輸入比例尺500:1000:2000", "比例尺", "500")
(圖3輸入比例尺)
3、數(shù)據(jù)文件的讀取及鉆孔展繪。為便于查找所繪鉆孔,新建圖層”ZK”,并根據(jù)前面輸入的比例尺先繪制好鉆孔符號(hào)做成塊,在從文件中順序讀取點(diǎn)號(hào)及高程并一起展繪出來。相關(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è)置該圖層為當(dāng)前圖層,請(qǐng)?zhí)砑酉旅娴拇a
obj_Doc.ActiveLayer = obj_layer '設(shè)置當(dāng)前圖層
obj_layer.Color = 1 '1 紅色;2 黃色;3 綠色;4 青色;5 藍(lán)色;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")
' 向塊中添加鉆孔符號(hào)
Dim obj_circle1, obj_circle2, obj_circle3 As Object '定義圓對(duì)象
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 '定義填充對(duì)象
Dim PatternType As Integer '圖案類型:1 預(yù)定義,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)默認(rèn)是預(yù)定義
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 對(duì)象
Set obj_hatch = blockObj.AddHatch(PatternType, PatternName, AssociativeHatch, 0) '0,圖案填充;1,漸變色填充
obj_hatch.AppendOuterLoop outerloop '添加外邊界,必須先創(chuàng)建Hatch 對(duì)象,才能定義邊界
obj_hatch.AppendInnerLoop innerloop '添加內(nèi)邊界,必須先創(chuàng)建Hatch 對(duì)象,才能定義邊界
obj_hatch.PatternScale = 0.2 '圖案縮小后填充NumberOfLoops
obj_hatch.Evaluate '進(jìn)行計(jì)算,生成填充圖案
For i = 0 To obj_hatch.NumberOfLoops - 1 '遍歷圖案填充區(qū)域的邊界,每條邊界可能由數(shù)個(gè)對(duì)象組成
obj_hatch.GetLoopAt i, aloop
Next i
Dim obj_line As Object '定義直線對(duì)象
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 "請(qǐng)檢查數(shù)據(jù)格式", vbOKOnly, "CASS格式?"
End
End If
Loop
Close fileno
End With
obj_Doc.Regen acActiveViewport
obj_Acad.ZoomAll
obj_Doc.Utility.Prompt vbCr & "展點(diǎn)完畢,共展點(diǎn)" & intCnt & "個(gè)。"
MsgBox "已完成!", vbOKOnly, ""
End Sub
(圖4展繪結(jié)果)
三、 結(jié)束語
本文以展繪鉆孔符號(hào)為例探討了VB與AutoCAD的連接、展點(diǎn)的數(shù)據(jù)格式,以實(shí)現(xiàn)快速展繪鉆孔。采用VB開發(fā)測(cè)繪系統(tǒng)的應(yīng)用軟件,只要處理好各設(shè)備之間的I/O接口操作、動(dòng)態(tài)連接庫的建立和調(diào)用及VB與數(shù)據(jù)庫的接口、數(shù)據(jù)庫的建立、數(shù)據(jù)格式之間的轉(zhuǎn)換,就能在短時(shí)間內(nèi)開發(fā)出界面友好的、功能易擴(kuò)展的、面向?qū)ο蟮膶?shí)時(shí)測(cè)控軟件,滿足測(cè)繪生產(chǎn)的需要。
[參考文獻(xiàn)]
[1] 段興.《Visual Basic6.0控件實(shí)用程序設(shè)計(jì)100例》.人民郵電出版社,2002.10
[2] 申石磊,季超 .《Visual Basic程序設(shè)計(jì)基礎(chǔ)》. 高等教育出版社,2010.03
作者:張博(1982-)男,本科,遼寧西豐人,工程師,滿族,研究方向:電力測(cè)繪查勘工作 。
信息技術(shù)論文發(fā)表期刊推薦《信息技術(shù)與信息化》從信息技術(shù)的研究、應(yīng)用角度展現(xiàn)IT行業(yè)與科技發(fā)展與進(jìn)步,是全國高校、科研院所、企業(yè)發(fā)表信息科學(xué)研究、技術(shù)應(yīng)用成果的園地。雜志內(nèi)容以科技論文為主,并設(shè)有評(píng)論與綜述、信息化論壇、網(wǎng)絡(luò)通訊、信息處理與模式識(shí)別、研究與探索、方案與應(yīng)用等欄目。
上一篇:科技資訊征稿養(yǎng)老機(jī)構(gòu)物資管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
下一篇:信息技術(shù)論文發(fā)表檔案數(shù)字資源云備份策略的分析
相關(guān)文章推薦
- 企業(yè)信息化管理有何策略
- 學(xué)校信息化如何管理與服務(wù)
- 計(jì)算機(jī)專業(yè)實(shí)訓(xùn)基地如何建設(shè)
- 計(jì)算機(jī)專業(yè)課教育如何探索
- 突發(fā)事件信息安全管理對(duì)策研究
- 計(jì)算機(jī)數(shù)據(jù)庫的主要備份方式及恢
- 計(jì)算機(jī)技術(shù)發(fā)展及未來趨勢(shì)
- 計(jì)算機(jī)軟件工程維護(hù)措施與方法
- 計(jì)算機(jī)科學(xué)與技術(shù)在現(xiàn)代教育中有
- 計(jì)算機(jī)科學(xué)及技術(shù)有何發(fā)展趨勢(shì)