鄭華海
(1.上海同濟綠建土建結(jié)構(gòu)預制裝配化工程技術有限公司,上海 200092; 2.同濟大學國家土建結(jié)構(gòu)預制裝配化工程技術研究中心,上海 200092)
目前,建筑領域的設計已從抽象的二維設計逐步向具象的三維設計轉(zhuǎn)變。傳統(tǒng)的建筑二維化設計對設計人員的素質(zhì)要求較高,需要具備高度的空間想象能力,設計完成的二維圖紙也只有經(jīng)過訓練的專業(yè)人員才能讀懂理解。由于二維圖紙的抽象性,即使是經(jīng)過訓練的專業(yè)人員也避免不了在圖紙的繪制及理解上出錯。近十幾年,隨著BIM技術被引入建筑領域,三維化的設計已變得越來越重要[1-2]。坡屋面是一種常見的屋面形式,建筑屋面由于排水以及建筑立面美觀的需要,往往將屋面做成坡屋面。BIM軟件特別是方案展示、建模、算量等BIM軟件,生成坡屋面是一個完整的軟件所不可缺少的重要功能。
關于屋脊線生成方法,已有部分研究者做了一定探索[3-7]。郁海軍[8]闡述了同坡坡屋面的屋檐多邊形、屋面交線、交線傾角、屋面頂點、屋面多邊形的特征及正投影圖的畫法。吳明珠[9]對以等高的直屋檐和等坡的平屋面為條件的同坡坡屋面交線的特征及作法進行了深入研究。袁昌富[10]等人對相鄰檐口線夾角為直角、檐口線平行的等坡坡屋面形式,提出一種求解該屋面交線的方法(45度偏轉(zhuǎn)法)。文輝[11]提出虛、實結(jié)合,高、低屋脊等概念,從而找到了一種求同坡屋面交線簡捷而有效的方法。陳宇軍[12]提出了一種非常簡明有效的遞歸算法,該算法主要基于試探性的解題路線和屋脊線無交叉的有效性判斷準則。李至平[13]提出了自動生成坡屋面的算法并編程實現(xiàn)。王飛[14]等人提出了一種基于多邊形骨架線自動生成簡單房屋模型的算法。上述方法基本是適用于特定條件下的坡屋面,如兩兩檐口線夾角是直角,對于兩兩相鄰檐口線夾角是任意角度的坡屋面仍然無法解決。
如今市場上被廣泛使用的帶有坡屋面生成功能的軟件有斯維爾、廣聯(lián)達、魯班、天正、Revit等。斯維爾及魯班軟件沒有相應的坡屋面板建模功能,只能通過傳統(tǒng)的手工建模,將平板變斜得到坡屋面板[15-16]。廣聯(lián)達軟件先創(chuàng)建整個平屋面板,然后導入畫好屋脊線的CAD圖紙(此屋脊線無法自動生成,需要人工預先畫好),再運用樓板分割命令在屋脊線處對平屋面板進行分割,最后調(diào)整每塊屋面板的坡度從而形成正確的坡屋面[17]。斯維爾、廣聯(lián)達、魯班軟件雖然可以通過某種方法得到坡屋面,但是這些方法對軟件操作者要求極高,并且生成坡屋面的效率低。天正軟件以及Revit軟件能夠讓用戶通過選取檐口線并輸入?yún)?shù)快速生成坡屋面,但是該功能為天正及Revit軟件核心部分,作為商業(yè)軟件其坡屋面的生成方法不可能對外公開。
為此,本文探討了一種坡屋面生成方法,該方法可以基于任意多邊形生成等坡坡屋面。
坡屋面是比較常見的一種屋面形式,被廣泛應用在低多層建筑中。當代建筑屋面依據(jù)排水需要以及建筑的立面美觀,也往往將屋面做成坡屋面。
圖1 坡屋面示意圖
圖2 多邊形類型
坡屋面的任一坡面由若干條屋脊線及檐口線圍合而成,多個坡面首尾相連形成完整的坡屋面,如圖1所示。屋脊線是排水方向不同的坡面相交而形成的線,也叫分水線,分為陰脊線(內(nèi)凹的線)和陽脊線(外凸的線)。其中,處于建筑屋頂最高處的陽脊也叫正脊,它是由兩個不相鄰的坡面的交線,并且不和屋檐線相交。
在投影視圖中,正脊線表現(xiàn)為檐口線的內(nèi)縮,即多邊形的邊沿著角平分線以恒定速度內(nèi)移,匯聚成為點或者更短的邊。根據(jù)屋脊正脊線的特點,把坡屋面分成四種類型,如圖2。
圖2(a)所示的坡屋面的正脊線有起點和端點,所有正脊線連成多段線。圖2(b)所示的坡屋面的正脊線首尾相連形成閉合的多邊形,沒有確定的起點和端點,這類多邊形為環(huán)形多邊形。圖2(c)所示的坡屋面的正脊線不像圖2(a)具有起點和端點,也不像圖2(b)相連形成閉合的多邊形,而是在某處斷開分成兩段。圖2(d)所示的坡屋面的多條屋脊線交于同一點,即正脊線長度為零。這類坡屋面具有正多邊形的性質(zhì),如果把這些相交于同一點的相鄰屋脊線的另一端點首尾相連,可得到正多邊形或正多邊形的一部分。
除了上述基本的四種類型,還可由這四種基本類型組合形成其他復雜的坡屋面。
(1)過任意兩兩相鄰的檐口線的坡面的交線的投影必定是該兩條相鄰檐口線夾角的角平分線;
(2)如圖3所示,如果過任意的兩條檐口線的等坡坡屋面有交線(屋脊線),則該交線必定是正脊線,其投影線必定與該兩條檐口線夾角的角平分線重合;
(3)相交于一點的屋脊線數(shù)量大于等于3;
(4)完全相同的檐口線,其坡屋面的解不唯一,如圖3(a)、(b)。圖3(a)、(b)為檐口線完全相同的等坡坡屋面,但可以作出兩種不同的坡屋面。圖3(a)稱為相交坡屋面,圖3(b)稱為相貫坡屋面。
下面以圖4所示的任意多邊形為例,闡述等坡坡屋面生成方法。圖4(a)為該任意多邊形; 圖4(b)為任意多邊形屋脊線在由檐口線組成的平面上的投影效果。其中,實線是檐口線,虛線和點劃線是屋脊線,即虛線是相鄰坡面的交線(陽脊線或陰脊線),點劃線不相鄰坡面的交線(正脊線)。
圖3 屋脊線示意圖
圖4 任意多邊形
任意多邊形屋脊線的生成流程可以用圖5的流程圖表示。
圖5 屋脊線生成流程圖
由于實際的屋脊線與其在由檐口線組成的平面上的投影具有相似性,因此將坡屋面生成方法分為兩大步驟。首先確定屋脊線,其次再確定屋脊線的高程。
下面是確定屋脊線的主要步驟。
(1)確定第一三角形(如圖4中的ΔFG2)
第一三角形坡面由一條檐口線和兩條非正脊線的脊線(陽脊或陰脊)圍合而成,該兩條非正脊線的脊線的交點即為整個坡屋面正脊線的起點。由圖2可知,除圖2(b)環(huán)形屋面以外,其他坡屋面正脊線的起點大于等于2。圖2(d)是多個起點重合的情況。確定第一三角形坡面可按以下步驟進行。
①作相鄰檐口線夾角的角平分線,如圖6(a);
②延長角平分線,得到相鄰兩夾角的角平分線交點(注意是相鄰角平分線交點,如Aa與Bb的交點,Dd與Ee的交點,而不是Aa與Cc的交點)。
(a)
(b)圖6 兩兩相鄰角平分線交點
③找到相鄰兩交點到相應邊距離最小的點,該點即為正脊線起點(由于坡面以檐口線開始向上延伸,距離檐口線越遠的點,其在高程的坐標值越大,所以距離最短的點是正脊線的起點)。如圖7(a),角平分線Ff與Gg相交于點2,角平分線Gg與Hh相交于點3,由于線段22′=22"小于線段33′=33"的長度。因此ΔEF1、ΔFG2、ΔGH3的交點為點2,即ΔFG2是第一三角形。
如果交點位于由檐口線圍合而成的封閉多邊形以外,如圖6(b)所示的圓圈內(nèi)的點,則視該點到其相應邊的距離無限大,即如果位于封閉多邊形以外的點和封閉多邊形以內(nèi)的點比較,保留封閉多邊形以內(nèi)的點。因為如果等坡坡屋面的脊線,向由檐口線圍成的平面投影,脊線必定在該平面以內(nèi)。
④同理,遍歷所有交點,可以得到圖7(b)所示的其他第一三角形ΔIJ4、ΔLM5、ΔAB6、ΔCD7。
(a)
(b)圖7 判別正脊線起點
⑤判斷第一三角形的正確性。下面以判斷真第一三角形ΔIJ4和假第一三角形ΔLM5為例,闡述判斷的方法。
判斷ΔIJ4。ΔIJ4的真假取決于過與檐口線IJ相鄰的檐口線HI或JK的坡面的正脊線是否切割ΔIJ4。
Ⅰ 與三角形IJ4的檐口線相鄰的檐口線是HI(或JK),可能切割ΔIJ4的正脊線在過檐口線是HI(或JK)的坡面上,而不是過檐口線HI、JK的坡面的交線。
Ⅱ 過點4的正脊線往左側(cè)與Dd相交,往右側(cè)與Ee相交,因此該正脊線是過檐口線HI的坡面與過檐口線DE的坡面的交線,如圖8中的虛線。
Ⅲ 該正脊線(圖8的虛線)并沒有切割ΔIJ4,說明ΔIJ4是正確的第一三角形。
判斷ΔLM5。同理,三角形LM5的真假取決于過與檐口線LM相鄰的檐口線MA或KL的坡面的正脊線是否切割切割ΔLM5。根據(jù)上述方法,作出的正脊線如圖8所示的點劃線。可見,點劃線將ΔLM5切割,即ΔLM5不是正確的第一三角形,應該排除。
圖8 判斷第一三角形正確性
同理,判斷其他的三角形,最后得到正確的第一三角形如圖9所示。即只有ΔAB6、ΔFG2、ΔIJ4是正確的第一三角形。
圖9 確定的第一三角形
(2)作出正脊線
第(1)步確定了3個第一三角形ΔAB6、ΔFG2、ΔIJ4,即確定了正脊線的3個起點(終點)。下面以點2為起點作為例子闡述正脊線的生成方法。
①找出過點2的正脊線的坡面。由于兩個面相交形成線,因此該正脊線對應的坡面有兩個,也即需要找到兩條檐口線。該坡面與第一三角形ΔFG2相鄰,即過檐口線EF、GH的坡面。
②過起點2作正脊線,即過檐口線EF、GH的坡面的交線。由于是等坡屋面,所以正脊線也是檐口線夾角的角平分線。該平分線必定通過EF和GH延長線交點以及點2。同理,也先作出過其他起點的正脊線,如圖10中的虛線。
圖10 作第一條正脊線
因為,如圖11,線段AB與BC交于B點,線段BC與CD交于C點。OB是∠ABC的角平分線,OC是∠BCD的角平分線,OB與OC交于O點。O1、O2、O3分別垂直于線段AB、BC、CD,根據(jù)角平分線定理,可知O1=O2、O2=O3,所以O1=O3,又因為O1、O3分別垂直于AB、CD,所以OO′是∠A O′C的角平分線。
圖11 角平分線證明
③延長上述第②步的角平分線,使其與相鄰檐口線夾角角平分線相交,如圖12。那么過檐口線GH的坡面的正脊線即為2h,正脊線2h也是過檐口線EF的坡面的一部分正脊線。
圖12 作正脊線2h
④作過點h的正脊線。由于過點h的正脊線向外延伸,與角平分線Ee相交,(或與過點4的正脊線相交),因此過點h的正脊線應該是過檐口線HI、EF的坡面的交線,如圖13所示的虛線。正脊線he與Ee交于點e,即過檐口線EF的坡面的正脊線是線段2he。
圖13 作正脊線he
⑤同步驟④,作出其他的正脊線。最后,所有的正脊線如圖4(b)所示。
至此,作出了所有的脊線。
接下來確定屋脊線的高程,即算出所有正脊線端點的高程坐標。
(3)過所有正脊線的端點,作其對應邊的垂線(圖14),并算出垂線的長度。
圖14 確定投影距離 圖15 確定正脊線高程
(4)以點2為例,計算其高程。如圖15,第(3)步已經(jīng)算出垂線的長度X,又因為坡屋面的坡度α已知,則點2的高程Z2=X·ctgα。
(5)同理,求出其他所有正脊線端點的高程。
至此,坡屋面生成完畢。
圖16 環(huán)形坡屋面生成
圖17 任意多邊形屋脊線生成步驟
對于檐口線圍成的區(qū)域為環(huán)形的情況,如圖16(a)。首先在內(nèi)環(huán)(或外環(huán))上任取一點,從該點出發(fā)連接外環(huán)(或內(nèi)環(huán))上的任一點,使從該點出發(fā)的線段最短。按此方法確定的線段將環(huán)形分割,改線段可視為檐口線,如圖16(b)。 按照本文第4部分的方法作出角平分線,并做出正脊線,如圖16(c); 延長正脊線使其與分割環(huán)形的檐口線部位的真實角平分線相交,如圖16(d); 最后,連接正脊線首尾,得到最終的環(huán)形正脊線,如圖16(e)。
下面以圖17(a)所示的任意多邊形為例,說明任意多邊形屋脊線生成步驟,并檢驗本文提出的任意多邊形屋脊線生成方法的正確性??梢?,該多邊形與圖2(c)一樣,正脊線都在某處斷開分成兩部分。
(1)作出所有角平分線,并求出相鄰角平分線交點,得到可能的第一三角形,如圖17(b)。
(2)判斷第一三角形正確性。如圖17(c),第一三角形的前后正脊線均沒有和第一三角形的邊(兩條角平分線)相交,說明第一三角形即為圖17(b)所確定的。
(3)選擇最左側(cè)的第一三角形作為正脊線起點,作出第一條正脊線,如圖17(d)。
(4)作下一條正脊線,與其他兩條正脊線(這兩條正脊線是以另外的兩個第一三角形作為正脊線起點而得的正脊線)交與一點,如圖17(e)。
(5)第(4)步得到三條交于一點的正脊線之后,從該交點出發(fā)的正脊線應由圖17(e)虛線框的檐口線確定,由于該兩條檐口線共線,無法確定交點,則無法作出角平分線,故選擇其他第一三角形作為正脊線起點,找出剩余正脊線。
(6)以圖17(b)最右側(cè)的第一三角形作為正脊線起點,作出正脊線,如圖17(f)。
(7)第(6)步得到正脊線之后,從該條正脊線左端點出發(fā)的正脊線也應由圖17(e)虛線框的檐口線確定; 同理,由于該兩條檐口線共線,無法確定交點,則無法作出角平分線。
(8)至此,以所有的第一三角形為正脊線起點均已做出了正脊線,則所有正脊線生成完畢。
目前,建設行業(yè)對BIM及其軟件的需求量極大,由于旺盛的市場需求,國內(nèi)不少企業(yè)正在開發(fā)相關BIM軟件。由于商業(yè)軟件對其軟件產(chǎn)品坡屋面生成方法的保密性,開發(fā)人員無法獲得。本文提供了一種任意多邊形坡屋面的生成方法,可作為開發(fā)BIM軟件的相關功能提供理論參考。在運用本方法生成屋脊線需要注意以下幾點:
(1)生成屋脊線之前首先要判斷檐口線圍成的區(qū)域是否是環(huán)形;
(2)該方法的關鍵在于確定第一三角形,得到正脊線的起點(終點);
(3)正脊線的起點(終點)是相鄰的檐口線夾角角平分線的交點,該交點需同時滿足“到相應邊的距離最短”以及“前(或后)正脊線不切割該第一三角形”兩個條件。