91精品人妻互换日韩精品久久影视|又粗又大的网站激情文学制服91|亚州A∨无码片中文字慕鲁丝片区|jizz中国无码91麻豆精品福利|午夜成人AA婷婷五月天精品|素人AV在线国产高清不卡片|尤物精品视频影院91日韩|亚洲精品18国产精品闷骚

您當(dāng)前位置:首頁(yè) > 新聞?lì)l道 > 技術(shù)動(dòng)態(tài) > 正文
關(guān)于津華線管道中線自動(dòng)標(biāo)注的研究

作者:張毅  

  由于天津港一華北石化原油管道工程(以下簡(jiǎn)稱津華線),全線總長(zhǎng)約188 km,沿線途經(jīng)天津市濱海新區(qū)、靜?h,河北省黃驊市、青縣、大城縣、任丘市6個(gè)行政區(qū)域。本項(xiàng)目經(jīng)過(guò)的地理區(qū)域經(jīng)濟(jì)較為發(fā)達(dá),沿線地形地貌復(fù)雜多變,如何才能取得最佳的管道走向,使得管道線路便于施工且節(jié)約用地,達(dá)到節(jié)省工程投資的目標(biāo),這是最為主要的任務(wù)。在獲取最佳的管道線路中線之前,在設(shè)計(jì)階段經(jīng)實(shí)地踏勘,針對(duì)不同的地區(qū)、不同的地形地貌經(jīng)多次的改線調(diào)整,獲得初步最佳路線,然后在具體的施工階段,根據(jù)遇到的不同問(wèn)題,需要再次調(diào)整管道局部走向。然而,每次管道中線的調(diào)整,都需要獲取其中線每個(gè)折點(diǎn)的里程數(shù)、轉(zhuǎn)角、樁號(hào)等信息,來(lái)實(shí)時(shí)地判斷本項(xiàng)目的長(zhǎng)度及彎管使用量的變化情況,傳統(tǒng)的做法是靠手工完成,每個(gè)折點(diǎn)需要量算一次角度、里程,并通過(guò)將里程逐個(gè)累加來(lái)取得當(dāng)前折點(diǎn)的連續(xù)里程數(shù),對(duì)于津華線這樣的長(zhǎng)距離管道項(xiàng)目,這項(xiàng)工作異常煩瑣且費(fèi)力,大大降低了效率。

  針對(duì)此問(wèn)題,為了加快設(shè)計(jì)、施工進(jìn)度,快速獲取實(shí)時(shí)的管道信息,節(jié)約建設(shè)工期,在天津港一華北石化原油管道工程項(xiàng)目組人員的建議及協(xié)助下,利用計(jì)算機(jī)程序語(yǔ)言,有了較為完善的解決方案。

1基本思想

  AutoDesk公司的AutoCAD軟件(ACAD)作為一款在工程領(lǐng)域內(nèi)廣泛使用的計(jì)算機(jī)輔助設(shè)計(jì)平臺(tái),具有功能強(qiáng)大、操作簡(jiǎn)便,并且提供多種二次開(kāi)發(fā)方法及接口。

  對(duì)ACAD的二次開(kāi)發(fā)方式主要有VisualLisp、VBA、ObjectARX以及最新的.NET等,其中Object-ARX基于VC++平臺(tái),功能非常強(qiáng)大,但其缺點(diǎn)是開(kāi)發(fā)速度慢、周期長(zhǎng),而且對(duì)開(kāi)發(fā)人員的要求也比較高;VisualLisp與VBA較為簡(jiǎn)單,特別是VBA,使用方便且開(kāi)發(fā)速度較快。本程序采用的開(kāi)發(fā)語(yǔ)言是VBA。

1.1  程序流程設(shè)計(jì)

  ACAD提供對(duì)每個(gè)圖元對(duì)象類的操作,通過(guò)對(duì)各個(gè)類成員的操作不僅可以提取類包含的各項(xiàng)屬性數(shù)據(jù)(比如頂點(diǎn)坐標(biāo)、顏色、所屬圖層等),而且可以編輯修改當(dāng)前類所指向的圖元實(shí)體。本程序主要是對(duì)PLine實(shí)體類進(jìn)行操作,在ACAD中的類名為“AcadPolyline”。

程序設(shè)計(jì)流程如圖1所示,在ACAD窗口中獲取中線(PLine線)的控制句柄后,通過(guò)類屬性。Coordinates提取它的頂點(diǎn)及所有節(jié)點(diǎn)坐標(biāo)數(shù)據(jù),然后用VBA內(nèi)部函數(shù)“UBound”求得頂點(diǎn)總數(shù)為n。用變量i控制循環(huán)體,下面為1次完整循環(huán)過(guò)程。

圖2為部分中線節(jié)點(diǎn)示意圖,節(jié)點(diǎn)號(hào)依次為d1、d2、d3,要在節(jié)點(diǎn)d2處標(biāo)注角度和里程,角度為線路方向的左角(為圖中雙箭頭所示)。

  角度計(jì)算方法:首先求出由點(diǎn)d1、d2、d3構(gòu)成的三角形的內(nèi)角pd1d2d3,因?yàn)闃?biāo)注的一般為設(shè)計(jì)線路前進(jìn)方向的左角(圖中假定方向向東),所以接下來(lái)判斷節(jié)點(diǎn)d3與向量d1d2的平面位置關(guān)系,如果點(diǎn)d3位于向量d1d2的下部,則需要加1800。

  最后將文字前綴、里程、角度制作為ACAD塊并插入到圖形的相應(yīng)位置。

1.2界面及參數(shù)設(shè)置

程序界面如圖3所示,在選擇線路中線進(jìn)行標(biāo)注前應(yīng)先設(shè)置好各項(xiàng)參數(shù):文字高度、圖形比例、前綴文字、橫線長(zhǎng)度、顏色、塊的縮放比例、節(jié)點(diǎn)圓半徑、注記選項(xiàng)等。部分說(shuō)明如下。

  (1)前綴文字類型。津華線管道的前綴標(biāo)識(shí)符號(hào),標(biāo)注結(jié)果為JHO、JH1、JH2 - - -JH終。

  (2)注記塊的縮放比例。用來(lái)指示塊實(shí)體是否需要放大或者縮小,為1時(shí)保持大小不變。

  為滿足特殊需要,對(duì)角度可以設(shè)定是否需要顯示度分秒符號(hào),是否只標(biāo)注0。~ 1800的角度值,還可以對(duì)中線進(jìn)行反方向標(biāo)注。

  為方便以后的編輯修改,所有的對(duì)ACAD的操作都在“PL注記”圖層上進(jìn)行。

2具體實(shí)現(xiàn)

  程序?qū)嵤┻^(guò)程中主要用到的ACAD實(shí)體類有AcadText、AcadLine、AcadPolyline、AcadBlockRefer-ence等幾個(gè),這些類提供對(duì)ACAD實(shí)體操作的方法和屬性。

2.1  與ACAD的數(shù)據(jù)交互

  ACAD提供Utility類,通過(guò)它可以從ACAD操作窗口獲取所需要的數(shù)據(jù)信息,下面為從操作窗口獲取一條PLine線的控制句柄:

  Dim Basepnt As Variant  ‘鼠標(biāo)在圖中點(diǎn)擊處的坐標(biāo)

  Dim returnObj As AcadObject  ‘返回鼠標(biāo)拾取的ACAD對(duì)象類實(shí)體,這里為PLine中線

  rlhisDrawing.  Utility.  CetEntity( retumObj, BasePnt.”選擇一條PLINE線-Select a PLine--”)

  然后利用returnObj. Coordinates屬性就可以獲得中線所有節(jié)點(diǎn)的坐標(biāo)值序列。

2.2  里程數(shù)據(jù)的格式化

  里程數(shù)據(jù)就是指從設(shè)計(jì)中線起點(diǎn)到當(dāng)前節(jié)點(diǎn)的連續(xù)水平距離。根據(jù)《長(zhǎng)距離輸油輸氣管道測(cè)量規(guī)范》的第3.9.4條的規(guī)定,標(biāo)注格式應(yīng)該為“1+235.6”,其中“+”前為整千米數(shù),其后為以米為單位的長(zhǎng)度。

  S= So+Distance(d1,d2)*(MapScale/1000)

  ‘S。為中線起點(diǎn)到d.點(diǎn)的距離,MapScale/1 000為尺度比例因子

  當(dāng)S求出來(lái)后,需要對(duì)它進(jìn)行格式化處理,Str_S為格式化后的里程字符串。語(yǔ)句為:

  Str_S=””&Int( S/1000)&”+”&Format(S -Int( S/1000)*1000,”000.0”)

2.3角度的量算及處理

  所要標(biāo)注的角度是線路前進(jìn)方向的左角,在ACAD中多段線的方向?yàn)槔L制的順序形成的方向。程序內(nèi)部計(jì)算采用的坐標(biāo)系為數(shù)學(xué)坐標(biāo)系,根據(jù)獲得的節(jié)點(diǎn)坐標(biāo)值為源數(shù)據(jù),利用余弦定理求出Ad1d2d3內(nèi)的由邊d2d1和邊d2d3構(gòu)成的內(nèi)角pd1d2d3(相對(duì)關(guān)系如圖1所示)。因?yàn)橛糜嘞叶ɡ砬蟪龅慕嵌榷际窃?0~180°的值,而線路標(biāo)注要求的角度既有00~ 180。的還有1800~ 3600的值,解決這個(gè)問(wèn)題需要判斷點(diǎn)d3與向量did2間的平面位置關(guān)系。

  判斷點(diǎn)與線平面位置關(guān)系采用的方法為:

  由已知點(diǎn)d1、d2求出直線的2點(diǎn)方程,然后求出過(guò)點(diǎn)d3的鉛垂線與線d1d2的交點(diǎn)d,再判斷YJd與yd3的大小,如果Yd>Yd3,則說(shuō)明點(diǎn)d3位于線d1d2的下部,pd1d2d3需要加一個(gè)半圓角180°,反之無(wú)須處理。

2.4塊實(shí)體的創(chuàng)建與插入

  所謂塊( Block)就是ACAD的一個(gè)對(duì)象實(shí)體,類名為“AcadBlockReference”,它可以將文字、線條、圓等多個(gè)圖元組合成為一個(gè)整體對(duì)象,方便用戶的各種操作。本程序要?jiǎng)?chuàng)建的塊包括文字(里程、角度、文字前綴)和直線2種類型的圖元。下面為部分實(shí)現(xiàn)代碼:

  Set blockObj=ThisDrawing. Blocks. Add( inser-tionPnt,”*U”)”建立匿名塊,以避免塊名重復(fù)引起錯(cuò)誤

  Set lineObj  =blockObj. AddLine(StartPoint,EndPoint)  ‘向塊blockObj添加橫線圖元

  Set  TextObjl=blockObj. AddText( Textjiaodu ,in-sertionPnt,3)  ‘向塊blockObj添加角度

  TextObjl. Color= ColorBlock:TextObjl. StyleName=”hwxh”  ‘設(shè)置文字顏色和字體

  下面將制作好的塊插入到圖中的相應(yīng)位置,其中InsertionPnt為在圖形中的插入點(diǎn)坐標(biāo),BlockName要插入的圖塊名,Xscale X向的縮放比例,Rotation旋轉(zhuǎn)角(弧度值):

  Set blockRefObj  =ThisDrawing. ModelSpace.InsertBloc.k( InsertionPnt, BlockName, Xscale, Yscal,e,Zscale,Rotation)

  由于標(biāo)注項(xiàng)只有文字前綴和里程2項(xiàng),對(duì)線路的起點(diǎn)和終點(diǎn)需要做特殊處理,在這里不予討論。

2.5標(biāo)注示例

圖4為一段津華線原油管道在天津市范圍內(nèi)的某段帶狀電子地形圖,其中加粗的黑線為用PLine命令繪制的設(shè)計(jì)線路中線,針對(duì)折點(diǎn)JH_004,“0+269. 96”為當(dāng)前折點(diǎn)處的連續(xù)水平里程,255。22 ’37”為當(dāng)前折點(diǎn)的左角。

3結(jié)語(yǔ)

針對(duì)津華線管道項(xiàng)目,在此采用AutoCAD二次開(kāi)發(fā)的方式來(lái)快速地獲取管道中線信息,完全避免了人工量算時(shí)的點(diǎn)位選取誤差、里程累加誤差、角度量算誤差、手工輸入誤差等多重偶然性誤差的產(chǎn)生,提高了數(shù)據(jù)的準(zhǔn)確性,對(duì)本項(xiàng)目管道最佳走向的獲取發(fā)揮了重要的作用。

4摘要:針對(duì)津華線管道線路的設(shè)計(jì),探討了如何對(duì)AutoCAD軟件進(jìn)行簡(jiǎn)單的二次開(kāi)發(fā),并能快速地實(shí)現(xiàn)對(duì)管道設(shè)計(jì)線路中線的角度、里程數(shù)、標(biāo)識(shí)序號(hào)等的自動(dòng)量算及標(biāo)注,以滿足線路的設(shè)計(jì)施工需要。

關(guān)鍵字:
About Us - 關(guān)于我們 - 服務(wù)列表 - 付費(fèi)指導(dǎo) - 媒體合作 - 廣告服務(wù) - 版權(quán)聲明 - 聯(lián)系我們 - 網(wǎng)站地圖 - 常見(jiàn)問(wèn)題 - 友情鏈接
Copyright©2014安裝信息網(wǎng) www.78375555.com. All rights reserved.
服務(wù)熱線:4000-293-296 聯(lián)系電話:0371-61311617 傳真:0371-55611201 QQ: 郵箱:zgazxxw@126.com 豫ICP備18030500號(hào)-4
未經(jīng)過(guò)本站允許,請(qǐng)勿將本站內(nèi)容傳播或復(fù)制
安全聯(lián)盟認(rèn)證