馬文正,周春立
(1.上海理工大學 機械工程學院,上海 200093;2.上海寶業機電科技有限公司,上海 201900)
?
基于ObjectArx的相貫線小角度算法研究
馬文正1,周春立2
(1.上海理工大學 機械工程學院,上海200093;2.上海寶業機電科技有限公司,上海201900)
在實際工程應用中遇到支管與母管夾角較小時,在保證支管內壁與母管外壁理想相貫的情況下,割炬沿管件軸向擺動角度就會很大,導致對管件的實際切割厚度增加。為了解決這種夾角較小時存在的問題,文章按照實際的切割工藝,基于objectarx技術對AutocAD進行二次開發,建立管件的三維空間搭接模型,重新規劃并提取所需要的相貫線數據。過渡區域內相貫線數據是由支管內壁與母管外壁的相貫過渡到支管外壁與母管外壁相貫。上述方法利用圖形數據規劃切相貫線,保證了小角度處理過程中,過渡區域內支管與母管完美貼合。
Objectarx;相貫線;小角度處理
在現代社會中,鋼管的運用領域極為廣泛,船舶、橋梁等行業,都大量地需要對鋼管進行交叉焊接[1]。現有的數控相貫線切割機所使用的切割算法大多基于傳統的數學建模。傳統的數學建模方法對每種搭建情況進行數學分析,推導出對應的相貫線計算公式。但是,這些理論求取的相貫線公式在實際工程運用中會與具體的切割工藝產生矛盾。本文研究的相貫線小角度問題就是基于理論公式很難推導解決的。相貫線小角度切割一直是圓管切割的技術難點,很多相貫線切割機制造廠商無法滿足客戶這一技術要求。
本文拋開傳統的數學建模推導,基于ObjectArx,在AutoCAD中完成管件在三維空間的搭建模型,對小角度相貫時相貫數據進行研究,規劃并提取所需要的相貫線數據,并將最終的相貫線數據轉化為數控軟件的切割代碼,在相貫線切割機上完成試切,驗證本文所提取的相貫線。
ObjectArx的本質其實是一個軟件開發包,是AutoDesk公司為了方便用戶對AutoCAD進行二次開發所研發的。ObjectArx可以真正快速的對AutoCAD圖形數據庫進行訪問和提取[2]。本文的開發環境的配置為Visual Studio2005+AutoCAD2008+ObjectArx 2008,由于這三者不斷的更新換代,造成了它們所含的標準庫的改變,所以這三者的選擇版本是要相對應的。
AutoCAD圖由對象和實體組成,它們存儲在AutoCAD庫中。數據庫的基本對象是實體、詞典和符號表。實體是在AutoCAD圖內部表示圖的一種特殊數據庫對象。符號表和詞典是用于存儲數據庫對象的容器。層表是符號表之一,包含層表記錄;塊表也是一個符號表,包含塊表記錄,所有的AutoCAD實體都是屬于塊表記錄,詞典給存儲對象提供了比符號表更加普通的容器[3]。AutoCAD數據庫結構如圖1所示。

圖1 AutoCAD數據庫的組成

圖2 小角度問題
當支管與母管夾角很小時,在它們所形成的理論相貫線上存在一部分線段,該線段上的點所處在的支管內壁切平面與母管外壁切平面的夾角會在會小于一定的度數(即工程中所說的小角度相貫)如圖2a所示。假設這段部分依舊按照支管內壁與母管外壁相貫來計算,割炬在這段部分沿管件軸向的擺動角度就會很大,而實際上由于設備機械結構的限制,這個擺角常常有一個限制的最大值,并且這樣導致了對管件的實際切割厚度增加。由于實際的切割厚度增加,火焰切割時,在這一段切割區域內就會突然的要求更高的溫度和切割時間,所以這一部分常常無法切穿透。
按照實際的切割工藝[4],在該線段部分內,采取支管外壁與母管外壁相貫,并且割炬垂直不擺動,如圖2b 所示。問題的難點在于將內壁相貫線與外壁相貫線重新組合,而且在過渡部分依舊保證支管與母管的貼合。
管件的實體是由ObjectArx自定義實體產生而來。通過將兩個不同直徑的圓形成的面域進行拉伸,形成管件的內外壁,兩個同心圓的半徑差就是管件的厚度,拉伸的高度為管件的長度。
new AcDbArc(const AcGePoint,double Radius,0,2*pi) //該函數通過圓心加半徑的方式構建一個圓
兩個同心圓可以形成一個圓環面域。
Acad::ErrorStatus createFromCurves(cons ptArray,regions) // ptArry為上述形成的圓環數組
將圓環面域進行拉伸處理。
AcDb3dSolid*pSolid =new AcDb3dSolid
pSolid->extrude(pRegion,dHeight,0.0)
// pSolid為所建立的管件指針

圖3 兩管的疊加狀態
完成管件的建立,接下來要考慮管件在空間中搭接。管件的搭接情況涉及到管件的平移與旋轉。AcGeMatrix3d是ObjectArx包含的專用求值類。AcGeMatrix3d類中派生出一些如rotation()和translation()可以完成管件在空間中的平移、旋轉操作。
此時的管件的搭接還只是疊加的狀態,如圖3所示。實際的搭接狀態需要對兩個圓管實體進行布爾運算。
Virtual Acad::ErrorStatus booleanOper(

圖4 兩管的相貫狀態
BooleanOperType,AcDb-
3dSolid
* pSolid ,AcDb3dSolid* pOtherSolid)
選擇對兩個管件進行求差(kBoolSubtract)運算。這樣管件才是實際的相貫狀態,如圖4所示。
4.1理論相貫線的數據提取
基于ObectARX,通過調用函數的方式提取子實體數據,需要AcBr類庫與AcGe類庫的協調配合[5]。AcBr類庫是ObectARX中的邊界描述庫,調用AcBr類庫中的函數,以只讀的方式創建實體建模器,這樣可以進一步訪問實體數據庫中的信息。然后利用AcGe類庫對得到的的實體數據信息進行數學處理,得到兩管件相貫線的幾何數據。
利用AcGe類庫進行數學計算的過程如下:
①將上述獲得的AcGe對象強制轉換為AcGeExternalXXX類型。
②調用isNativeCurve()函數,將AcGe實例本地化。
③根據實體的不同類型,進入分支結構匹配合適AcGe實體類型。
④調用該實體類型所提供的相關函數接口,輸出相關實體的幾何數據[6-7]。

圖5 兩管相貫的理論相貫線
如圖5所示,紅色小線段區域為支管的內、外壁與母管外壁的相貫線,白色小線段區域為沒有做小角度處理的切割線。此時的切割線完全以支管內壁作為依據,當考慮到割炬擺角的限制,這樣切成來的支管無法騎座在母管上。
4.2重新規劃相貫線數據
通過判定二面角大小[8],確定過渡區域的起點與終點,也就是過渡線段的一端與內壁相貫線連接,另一端與外壁相貫線連接。將這空間上由起點和終點組成的線段分成若干段,運用closestPointTo()函數找出母管外壁上與上述節點距離最近的點。具體函數
Void GetSurfacePoint(PointList& curveList,const AcGePoint3d & firstPoint,const AcGePoint3d& scdPoint,int nCount = 50)
{
AcGeVector3d vOffset= (scdPoint-firstPoint)/(nCount+1);
AcGePoint3d myFirstPoint = firstPoint;
for (int i =0 ;i < nCount+1;++i)
{
curveList.push_back(pSurface->closestPointTo(myFirstPoint)); // pSurface為母管外壁面的指針
myFirstPoint += vOffset;
}
}
此時AcGePoint3d myFirstPoint中存放了過渡點,這些點確保了相貫線由內壁過渡到外壁時始終與母管貼合。
整合的切割數據點由三部分組成,支管外徑相貫的一部分數據、過渡段數據和支管內徑相貫的一部分數據。數據的整理由下列三個函數完成。
GetWaijinData(cutdata,&cutwaijin,index_small[0],index_small[1]);
ConnectGuoduPoint(&cutwaijin,guodupoint1,guodupoint2);
GetNeijinData(cutdata,guodupoint1,guodupoint2,index_small,index_big);
圖6為重新規劃后的相貫線。對比圖5,此時的白色切割線在管件小角度區域是以支管的外壁相貫線為依據,通過myFirstPoint中的存放的空間過渡點,將小角度區域外壁相貫線與其他部分內壁相貫線連接起來。如圖6重新提取的相貫線正是實際工程切割所需的相貫線。圖7將相貫線分離出來,此時的相貫線由多段曲線組成,不在是原先簡單的相貫線曲線。

圖6 重組后的相貫線

圖7 重組后的相貫線的提取
運用該方法得到的相貫線數據經過上海寶業機電科技有限公司的相貫線切割機上的試切(如圖8所示),切割效果非常滿意。如圖9所示,支管根部是外壁與母管相貫,然后過渡到內壁相貫,管件的搭接效果良好。

圖8 實際切割圖

圖9 實際搭接圖
本文基于ObjectArx對CAD進行二次開發,在CAD基礎上搭建圓管,提取圓管相貫線數據,并將這些數據重新規劃,成功的解決了在管件焊接時的小角度問題。并且此思想相較于傳統的公式計算更加準確、方便,同時可以擴展到一些其他的搭接情況下的相貫線計算。
[1] 甄洪棟.數控切管機控制軟件的研究[D].濟南:山東大學,2005.
[2] 陳大東. 基于ObjectARX技術的船體型線生成系統[J]. 中國科技縱橫,2011(15):391.
[3] 杜剛,劉東學. AutoCAD二次開發中對圖形數據庫的訪問[J].化工裝備技術,2004,25(6):53-55.
[4] 葛國政. 數控管子相貫線火焰切割機的研制[J].焊接技術,2006,35(2):45-47.
[5] 袁文輝.三維AutoCAD中實體曲面邊界數據的提取及應用[J].機械研究與應用,2001,14(3):44-45,48 .
[6] 屈振生,何恒利. ObjectARX應用程序開發中AcBr與AcGe類庫的應用[J].計算機應用,2001, 21(7):66-67.
[7] 王堯.基于ObjectARX的管端三維模型數據生成與提取研究[D].哈爾濱:哈爾濱工程大學,2013.
[8] 李小剛,呂碧峰,姚偉偉,等.相交雙管焊接坡口的數據化處理[J].中國機械工程,2004,15(4):355-357.
(編輯趙蓉)
Research On Algorithm of Intersecting Line Based on ObjectArx
MA Wen-zheng1,ZHOU Chun-li2
(1.School of Mechanical Engineering ,University of Shanghai for Science and Technology,Shanghai 200093,China; 2.Shanghai Baoye M&E Technical Co., Ltd, Shanghai 201900,China)
Encountered branch pipe and main pipe angle is small in practical engineering applications, while ensuring branch pipe wall with the parent tube wall intersecting ideal situation, the torch along the tube axial oscillation angle will be great, cause the actual cutting thickness of the pipe increased .To solve this problem,the paper according to the actual cutting process, based objectarx technology to build three-dimensional solid model, re-planning and extracted intersecting line data needed, intersecting line data in the transition region is a branch pipe wall and the main pipe intersecting the outer wall of the outer wall of the transition to branch pipe tube wall intersecting with the parent.The above-described method ensures that small-angle process, the branch pipe and main pipe fit perfectly within the transition zone.
Objectarx;intersecting line;small angle processing
1001-2265(2016)04-0066-03DOI:10.13462/j.cnki.mmtamt.2016.04.018
2015-05-08;
2015-06-12
馬文正(1989—),男,武漢人,上海理工大學碩士研究生,研究方向為數控技術,(E-mail)1098402599@qq.com。
TH166;TG506
A