曹建福, 孫元嘉
(西安交通大學電信學院,陜西 西安 710049)
隨著各種大型建筑工程中鋼桁架結(jié)構(gòu)的普遍應用,需要在數(shù)控管切割設(shè)備上進行大量的相貫線切割作業(yè)。由于多管相貫線的計算較復雜,數(shù)控切割代碼的生成必須利用專門的圖形化自動編程系統(tǒng)。傳統(tǒng)管相貫幾何建模是采用參數(shù)化圖形方式,這種方式因為要逐個輸入?yún)?shù),幾何模型的建立效率非常低,而且只能適用于若干種給定管件相貫的情況。提高編程效率的一種可能途徑是從所繪制的桁架CAD 實體圖形文件,將每個相貫節(jié)點直接拆分成切管、交管,并唯一地確定切管與其相關(guān)管件的空間位置、角度,然后通過計算獲得切割相貫線的數(shù)據(jù)。核心的問題是三維設(shè)計圖的分拆,相貫線切割數(shù)據(jù)的提取。三維桁架結(jié)構(gòu)設(shè)計圖的分拆可以看成是其三維實體造型的逆過程,對三維實體造型技術(shù)目前已進行了大量的研究。建筑桁架結(jié)構(gòu)的實體設(shè)計圖是基于三維曲面表示,把一個三維曲面展開成平面圖已有一些成熟的方法[1],一些人正致力于研究復雜三維曲面的平面展開問題[2]。但對三維結(jié)構(gòu)設(shè)計圖的分拆和多管相貫數(shù)據(jù)的提取問題,國內(nèi)外還缺乏相應的研究[3-5]。
本文為了解決多管相貫線數(shù)控切割的圖形化編程問題,討論了三維結(jié)構(gòu)設(shè)計圖的分拆和相貫線加工數(shù)據(jù)提取方法,提出的算法可直接分拆鋼桁架結(jié)構(gòu)的三維CAD 實體圖形,唯一地確定出管件的參數(shù)及多管件之間空間角度,同時計算出相貫線切割所需要的各種參數(shù)。
建筑桁架CAD 實體模型圖中,所有的三維實體都是以曲面形式表示,需要將曲面表示的實體轉(zhuǎn)化為管件實體(圓柱體、長方體)。如何從一個曲面表示模型中得到管件的參數(shù)就成為首先需要解決的問題。需要提取的參數(shù)為:① 切管的內(nèi)外壁半徑;② 交管以及主管的外半徑;③ 切管兩端分別與兩根主管軸心交點間的距離(即切管的管心間中心距);④ 切管以及各個相關(guān)交管軸線與主管的軸交角;⑤ 各個交管軸線相對于切管與主管軸線形成平面的扭角;⑥ 若主管之間不相互平行,還要求得一主管軸線相對于切管與另一端主管軸線形成平面的扭角。其中,第①、②、③類參數(shù)直接從曲面表示模型可以獲取到,第④、⑤、⑥類參數(shù)則要根據(jù)空間幾何結(jié)構(gòu)進行計算得到。
三維曲面表示描述的是桁架的整體結(jié)構(gòu),它不能給出相貫處的幾何結(jié)構(gòu)信息,無法知道所選中的實體是否是管件。為了獲取相貫節(jié)點的結(jié)構(gòu)信息需對實體圖進行細分,將三維曲面解構(gòu)成為一系列四邊形小平面,如圖1 所示。對圓柱曲面表示按上下底面橫截面圓周N 等分(N≥20),用直線連接上下面等分點,并連接圓周截面上相鄰的等分點,這樣就形成了許多平行于圓柱軸線的四邊形小平面。從這些四邊形小平面得到它的4個頂點,最終得到組成曲面邊緣線的一系列點。實際上這是參數(shù)化編程生成三維實體造型的逆過程。在程序?qū)崿F(xiàn)時,通過調(diào)用 Explode ( KeepEntity )函數(shù)。其中,參數(shù)KeepEntity 為布爾型變量,表示在解構(gòu)之后是否保持原實體的結(jié)構(gòu)。由這個方法可以得到一系列組成實體的下一級實體,在下面實體數(shù)組中存儲得到的下一級實體集合:
CvdPolyface polyf; //定義曲面
polyf.AttachDispatch(fig,FALSE); //得到選中曲面
COleObjectArray oarray1=polyf.Explode (TRUE); //曲面解構(gòu),得到實體數(shù)組
圖1 管件曲面構(gòu)造示意圖
曲面解構(gòu)后得到的是一系列四邊形小平面,四邊形小平面可以繼續(xù)解構(gòu)得到構(gòu)成小平面的多畫線,多畫線進一步解構(gòu)得到一系列直線或圓弧,直線和圓弧作為基本圖元就不能繼續(xù)解構(gòu)了。取任意一個四邊形小平面繼續(xù)解構(gòu),得到多畫線。繼續(xù)解構(gòu)多畫線,最終得到組成多畫線的 四條直線: p1p2、 p2p3、 p3p4、 p4p1,這四條直線中 p1p2與 p3p4, p2p3與 p4p1平行且相等,見圖1(a)。取具有同一頂點的直線 p1p2和p4p1,一般這兩條直線中較長直線的長度就等 于圓柱的長度。在得到組成曲面的各直線之后,就可以求得這些直線的兩端點。將其中處于同一 底面圓上的N 個點按順序命名為 p1、 p2、…、pN,則兩點 pn與pN2+n 關(guān)于圓心對稱,見圖 1(b)。取這兩點的長度則是圓柱的直徑,而它們的中點正是底面圓的圓心。分別求出上下底面的圓心,它們連接而成的直線就是圓柱的中心線。
求出構(gòu)成曲面的所有各點,用上述方法可以計算出圓柱的各參數(shù)信息。僅取一組點計算出的值可能會存在較大的誤差,為了減小誤差,每隔一定的角度取一個計算點,來計算多組參數(shù)值,最后取這些值的平均值,來作為最終的管件參數(shù)。
從設(shè)計圖中取得一根切管和若干交管之后,按照多管相交模型的要求,需要將這些交管分類。由于切管兩端(分別定義為0 端和1 端)都可能有交管與之相交,因此按照交管與切管相交的情況,將交管分為三類:與切管0 端相交、與切管1 端相交和非與切管端頭相交。分別建立3個數(shù)組CrossPipe0、CrossPipe1、CrossPipe2,來保存各類交管的空間位置參數(shù)??赏ㄟ^計算切管端點與交管軸線之間的距離,來判斷交管的類型。將切管0 端和1 端到交管的距離分別記為 d0、 d1,交管的半徑記為r。如果 d0< d1,并且 d0< 4r,則認為這個交管與切管的0 端相交。如果 d0> d1,并且 d1< 4r,則認為此交管與切管 的1 端相交。如果這兩個條件都不滿足,則此交管屬于第三類。
根據(jù)多管相交的幾何結(jié)構(gòu),知道在前兩類的交管當中,應該有一根交管為主貫通體稱之為主管,需要在諸多交管中將主管確定下來。一般情況下,要求主管的外徑大于等于切管外徑和其他所有交管的外徑。因此,在所有交管中,只有直徑最大的才有可能是主管。而當有不止一根交管的外徑相等并且大于其它所有交管外徑的時候,就要判斷哪根交管貫通了切管,也就是交管兩端點到切管的距離是否都大于切管外徑,如果都大于,則該交管為管通體;否則,交管就不是主管。按照上述方法,分別在與0 端相交的切管和與1端相交的切管中找出主管,并將主管的參數(shù)保存在相應交管類型數(shù)組中的第一個位置,其它交管作為一般交管按照選取順序在數(shù)組中保存。
要計算多管相交的相貫線,就需要先得到管件之間的相交參數(shù)。這些參數(shù)在三維空間當中,觀察方式選擇不同其定義會不同。不同點表現(xiàn)在:一種參數(shù)在不同的定義方式下得到的的值可能有正負的差別,或者得到的角度為互補。這樣在同一管件的參數(shù)計算和相貫線計算中,必須使用同一種定義,以便保證三維空間管件相交的參數(shù)定義一個具有唯一性。以切管0 端為例,自身參數(shù)有:桿件長度、被切管件壁厚、切管外壁直徑,切割坡口角度;切管與主管相交的參數(shù)有:切管0 端主管外壁直徑,切管0 端主管與切管夾角;每一根交管與切管的參數(shù)有:交管長度,交管外壁直徑,交管與切管扭角,交管與切管夾角,交管與切管管心間交叉距離。管件的長度第1 節(jié)已得到,壁厚和坡口角度由對話框輸入,其它參數(shù)需進行計算獲得。
為定義多管件相交參數(shù)需建立坐標系,以主管軸線為x 軸,主管軸線起點指向終點的方向為x 軸正方向,由切管軸線與主管軸線構(gòu)成的平面為xoz 平面,切管軸線與主管軸線的交點為原點O,如圖2 所示。設(shè)原點O 在空間坐標系的坐標 為( ox, oy, oz),x 軸正方向在空間坐標系的矢量a 為( xa, ya, za),切管軸線在空間坐標系下的矢量b 為( xb, yb, zb)。令不與切管相交的交管軸線一端點P 的空間坐標為( px, py, pz),點P 在xoz 平面上的投影為點C。見圖2 所示,定義d 為交管軸線與主管軸線的交點到O 點的距離,α 為 切管軸線與x 軸正方向的夾角,β 為切管軸線到 交管軸線在xoz 平面上投影的夾角。見圖3 所示,過原點延x 軸正方向并垂直于x 軸的平面上,設(shè)切管軸線在這個平面的投影為OA,交管P 點在這個平面的投影為點Q。定義交管與切管之間扭角為γ , γ 為角 ∠ A OQ,取值范圍是?180°到180°,順時針夾角為正值。
圖2 在xoz 平面上投影的參數(shù)定義圖
圖3 在垂直xoz 平面上投影的參數(shù)定義圖
在切管兩端都有管件與其相交的時候,切管參數(shù)分別以各自的主管為基準定義并計算。因為在同一根交管上相交的切管之間的位置不是任意的,因此在計算切管兩端參數(shù)的時候,這兩組位置參數(shù)之間將存在固定的關(guān)系。這種關(guān)系可由它們各自基準之間的關(guān)系來確定,為此另外定義 一個參數(shù):切管兩端主管之間的夾角 γ1,后面代入交管1 端的角度循環(huán)參數(shù)都需要加上 γ1的值,定義方法如圖4 所示。設(shè)切管軸線0 端端點為O0,0 端主管軸線上起點指向終點的矢量為 a0。以切管0 端為基準,過 O0作垂直于切管軸線的 平面,其法線方向為指向切管1 端。設(shè)0 端主管 軸線起點 P0在此平面上的投影點 C0,1 端主管軸線起點 P1在此平面上的投影點 C1,則角 γ1為∠C0O0C1,取值范圍是?180°到180°,以順時針 方向為正。
圖4 兩端主管夾角定義圖
在所有參數(shù)當中,可以直接得到的有切管桿件長度L、切管外徑rc、切管壁厚dc、主管外徑r0、交管i 外徑ri,其它的參數(shù)需進行計算。
交管與切管管心間交叉距離d 是一個可以取正也可取負值的標量,它的大小就是交管軸線與主管軸線交點到切管軸線與主管軸線交點的距離,當切管軸線與交管的軸線在xoz 平面上的投影不相交時,d 取的是正值;相交時d 取負值。
除交管與切管管心間交叉距離d 之外,其它需要計算的是角度值,主要是管件在某個平面上投影的夾角,因此需要多次計算空間點在某個平 面上的投影點。若有一過點O( ox, oy, oz)并且由兩相交矢量a( xa, ya, za)與b( xb, yb, zb)構(gòu)成的平面,則平面的法向量p( x0, y0, z0)為
那么,這個平面的方程為
求一個點P( px, py, pz)在這個平面上的投影點C( cx, cy, cz)的公式為
在計算參數(shù)角度值時,所得均為構(gòu)成角度的3 個點值,因此計算空間角度值使用公式
其中 d1、 d2、 d3為分別三點兩兩間距離,角α 為邊 d3的對角。
下面就以切管0 端為例介紹各角度參數(shù)的計算:
(1) 切管與主管夾角α
取值范圍是0°到180°,由于切管是定義參數(shù)的基準管件之一,所以這個參數(shù)不取負值。計算方法為:將切管軸線與主管軸線的交點O、與主管軸線終點、切管軸線1 端端點,這三點間距離代入式(4)中求得。
(2) 交管與切管夾角β
取值范圍是?180°到180°,通過計算交管在 xoz 平面上投影與主管軸線正方向夾角 β '來得 到的。首先利用式(3)計算交管不與切管相交的端點在xoz 平面上的投影點C,加上交管軸線與主管軸線交點和主管軸線終點,再使用式(4)計算 β ',最后得到β = β '-α 。
(3) 交管與切管扭角γ
取值范圍在?180°到180°。計算方法是:首先得到過原點O 延x 軸正方向并垂直于x 軸的平面的方程,之后按照定義求得切管軸線1 端端點在這個平面的投影點A,交管P 點在這個平面的投影點Q,使用式(4)求得角γ 的大小。由于式(4)所得的角只有正值,接下來還需要判斷角γ 的正負。
判斷方法如下:
首先需要交管P 點空間坐標( px, py, pz),Q點坐標( qx,qy,qz),以及平面法向量( x0, y0, z0)。
(4) 切管兩端的主管間夾角 γ1
取值范圍也是-180°到180°。計算方法類似扭角γ ,都是先計算大小,后判斷正負。計算大小時先要得到過切管軸線0 端端點O0并垂直于切管的平面方程,接下來按照定義求出0 端主管軸線起點P0在此平面上的投影點C0,切割1 端主管軸線起點P1在此平面上的投影點C1。這時先不計算角的大小而是還需要進行一個步驟。在定義這個參數(shù)的時候是以各主管軸線的起點來計算的,其中有一個潛在的要求就是兩主管
上由起點指向終點的向量 a0與 a1的方向大體上 應該是保持一致的。也就是說它們之間的夾角不應超過90°。但是在得到的設(shè)計圖中是不能保證這一點的,因此要先對 C1點進行檢測。經(jīng) 過檢測如果 a0與 a1的方向不一致,那么交換切 管軸線1 端主管軸線的起點與終點,用新的起點重新計算投影點C1。
之后就與切管之間扭角γ 的計算方法相同:先將O0、C0、C1代入式(4)中計算γ1的大小,再判斷γ1取值的正負。
鋼桁架結(jié)構(gòu)中交管的數(shù)量在理論上是可以有無限多,但在程序?qū)崿F(xiàn)時不可能設(shè)置無窮多的存儲空間,所以實際的軟件系統(tǒng)對切管每一端交管數(shù)量有所限制。2.1 中提到過建立了數(shù)組CrossPipe0,CrossPipe1 來保存各類交管的空間位置參數(shù),這兩個數(shù)組的大小就體現(xiàn)了對交管數(shù)量的限制。這兩個數(shù)組中的第一個位置保存主管的數(shù)據(jù),接下來依次保存各交管的數(shù)據(jù),切管的數(shù)據(jù)由另外的數(shù)組來保存。
因為多管相交的參數(shù)眾多,并且需要在幾個功能模塊之間傳遞,所以采取將參數(shù)保存在文件當中供需要者使用的方式。該文件從結(jié)構(gòu)上分為3 個部分:
第1 部分是主管參數(shù)。開頭是表示此文件保存多管相交參數(shù)的相交類型編號,接下來記錄的是切管自身的參數(shù),最后是分隔符EE,表示第1部分結(jié)束。
第2 部分是切管0 端交管參數(shù)。首先是主管自身參數(shù),之后是分隔符E,用來隔開交管的參數(shù);接下來按順序保存各交管參數(shù),之間用分隔符E 表識;最后是分隔符EE,表示第2 部分完成。
第3 部分保存的是切管1 端各交管參數(shù)。與第2 部分不同的是在主管參數(shù)的前面加上了兩主管間夾角這個參數(shù),其它都與第2 部分相同。
最終三維管件分拆效果如圖5、圖6 所示。圖5 中深色管件即為選取的切管,圖6 為提取后切管的三維實體圖形。
圖5 三維管件設(shè)計圖
圖6 拆分所得管件圖
作者開發(fā)的圖形化相貫線自動編程軟件包括:參數(shù)化編程模塊、三維節(jié)點展開模塊、加工代碼生成模塊、模擬仿真模塊、自動排料模塊、工藝管理模塊。其中,三維節(jié)點展開模塊實現(xiàn)從實體圖當中提取出需要切割的管件,獲取相交管件的信息,多管相交各種參數(shù)的計算。實現(xiàn)流程如圖7 所示。
讀入桁架CAD 實體圖后,使用鼠標選定切管及交管,并輸入切管壁厚和坡口角度參數(shù)。該模塊將按照前面介紹的方法進行管件拆分,分別計算切管的空間參數(shù)、交管的空間參數(shù)。還要根據(jù)交管的中心線與切管中心線的關(guān)系,判斷它是否與切管相交,如果不相交則不記錄它的參數(shù);若相交則多管相交的參數(shù),并將參數(shù)按要求保存到參數(shù)文件中。圖8 是三維實體圖拆分軟件功能界面。
提取出管件的相貫數(shù)據(jù)后,進行運動軌跡計算,就可生成切割機控制系統(tǒng)能夠識別的加工代碼。在銳龍LGK160I 等離子切割機,用作者開發(fā)的管切割圖形編程系統(tǒng)拆分桁架CAD 實體圖并生成加工代碼,將加工代碼下傳到六軸管切割機控制系統(tǒng)當中,控制切割機完成對鋼管的加工。實驗表明這種方法編程效率高,現(xiàn)場數(shù)據(jù)也說明相貫線的切割誤差不超過1mm。
圖7 三維節(jié)點展開程序流程圖
圖8 三維實體圖拆分功能界面
本文對提出了一種三維CAD 實體設(shè)計圖分拆算法,利用該算法可從三維曲面表示的桁架實體圖文件中求得管件參數(shù),并可唯一地確定出三維空間中多管件之間的相交關(guān)系。論文給出了相貫點處各種管件參數(shù)求解方法,介紹了在數(shù)控管相貫切割機輔助設(shè)計軟件中切割參數(shù)的表示方式。利用本文的方法計算獲得的三維空間管件參數(shù),是進一步完成相貫線計算、數(shù)控切割代碼生成、管件三維實體圖顯示等功能的基礎(chǔ)。
[1] 席 平. 三維曲面的幾何展開[J]. 計算機學報, 1997, 20(4): 315-322.
[2] 毛國棟, 孫炳楠, 徐浩祥. 基于彈簧-質(zhì)點系統(tǒng)的薄膜結(jié)構(gòu)曲面展開算法[J]. 浙江大學學報, 2005, 39(8): 1238-1242.
[3] 甄洪棟, 季 忠, 劉 韌, 等. 多管相貫的數(shù)學模型及其在自動切割中的應用[J]. 山東機械, 2004, (6): 23-26.
[4] 生志榮. 利用最值方法求空間的幾種距離[J].河北北方學院學報(自然科學版), 2008, 24(1): 10-11.
[5] Sheryl Staub-French, Atul hanzode. 3D and 4D modeling for design and construction coordination [C]// ITCON 12, Staub-French and Khanzode, 2007: 381-407.