本發(fā)明屬于計算機輔助設計領域,具體涉及一種bim模型中的管道碰撞檢測方法、定位方法及系統(tǒng)。
背景技術:
1、bim模型是計算機輔助設計領域的常用方案;該方案是基于三維數(shù)字化的建筑工程全生命周期管理技術?,其通過整合結構化數(shù)據(jù),從而實現(xiàn)設計、施工和運維等階段的協(xié)同優(yōu)化。
2、管道碰撞檢測,是bim模型在設計和應用過程的重要環(huán)節(jié)。目前,常用的管道碰撞檢測方案,包括了revit中自帶的碰撞檢測方案和naviswork中的碰撞檢測方案。revit中自帶的碰撞檢測方案,雖然在處理小型模型時取得了較好的效果,但是該方案在處理大型模型時,不僅檢測速度較慢,檢測過程開銷較大,對系統(tǒng)硬件的要求較高,而且無法實現(xiàn)碰撞結果的分類。naviswork中的碰撞檢測方案,其需要在revit中將模型文件導出為naviswork需要的格式,再導入使用其碰撞檢測功能,但是導入和導出過程較為繁瑣;而且,該方案在檢測過程中篩選條件配置比較復雜,規(guī)則配置相對粗糙,難以設置復雜的碰撞容差條件,方案較為復雜。
技術實現(xiàn)思路
1、本發(fā)明的目的之一在于提供一種可靠性高、精確性好且效率較高的bim模型中的管道碰撞檢測方法。
2、本發(fā)明的目的之二在于提供一種包括了所述bim模型中的管道碰撞檢測方法的定位方法。
3、本發(fā)明的目的之三在于提供一種實現(xiàn)所述bim模型中的管道碰撞檢測方法的系統(tǒng)。
4、本發(fā)明提供的這種bim模型中的管道碰撞檢測方法,包括如下步驟:
5、s1.?獲取目標bim模型的數(shù)據(jù)信息;
6、s2.?根據(jù)步驟s1獲取的數(shù)據(jù)信息,選定設定樓層的所有管道與結構信息;
7、s3.?基于粒子群算法,對步驟s2選定的管道進行網(wǎng)格劃分;
8、s4.?根據(jù)步驟s3得到的網(wǎng)格劃分結果,采用空間哈希算法進行管道的硬碰撞檢測;
9、s5.?根據(jù)任意兩根管道的中心線的位置關系、距離關系和夾角關系,進行管道的軟碰撞檢測;
10、s6.?根據(jù)任意兩根管道的中心線的最短距離和設定的最小允許距離,進行管道的軟碰撞嚴重程度的檢測,從而完成bim模型中的管道碰撞的檢測。
11、所述的步驟s3,具體包括如下步驟:
12、對步驟s2選定的管道進行網(wǎng)格劃分;
13、根據(jù)管道長度列表的中位數(shù)和四分位距,采用如下算式計算理想網(wǎng)格單元大?。菏街衧為理想網(wǎng)格單元大?。籱id為管道長度列表的中位數(shù)值;iqr為管道長度列表的四分位距;
14、采用粒子群優(yōu)化算法,對網(wǎng)格大小進行優(yōu)化:
15、優(yōu)化過程中,每個粒子代表一個候選的網(wǎng)格大小,設定搜索范圍,為每個粒子隨機分配初始速度;
16、在性能維度,基于構建數(shù)量和平均構建面積以及平均構建尺寸,采用如下算式計算得到性能維度評分:式中為性能維度評分;為粒子當前位置,用于表示當前網(wǎng)格單元的大小;為平均構建尺寸,且,a為網(wǎng)格面積,c為構建數(shù)量;
17、在質(zhì)量維度,分析網(wǎng)格大小與構件最小尺寸的比例,采用如下算式計算得到質(zhì)量維度評分:式中為質(zhì)量維度評分;為構件最小尺寸,且,為構件在x軸上的最大值,為構件在x軸上的最小值,為構件在y軸上的最大值,為構件在y軸上的最小值;
18、在理想值維度,基于網(wǎng)格的當前值與網(wǎng)格理想值的偏差程度,采用如下算式計算得到理想值維度評分:式中dev為當前網(wǎng)格單元大小與理想網(wǎng)格單元大小的相對偏差,且,為理想網(wǎng)格單元的大??;
19、通過性能、質(zhì)量和理想值三個維度的評分,通過加權計算,從而評估粒子適應度;
20、采用如下算式對粒子的速度進行更新:式中為更新后的第n個粒子的速度;w為慣性權重;為更新前的第n個粒子的速度;為認知參數(shù);r為隨機權重;為粒子歷史最優(yōu)位置;為更新前的第n個粒子的位置;為社會參數(shù);為粒子全局最優(yōu)位置;
21、采用如下算式對粒子的位置進行更新:式中為更新前的第n個粒子的位置;為更新后的第n個粒子的速度;t為單位時間;
22、完成設定的迭代次數(shù)后,以最終的粒子全局最優(yōu)位置作為最終的網(wǎng)格大小。
23、所述的步驟s4,具體包括如下步驟:
24、根據(jù)步驟s3的網(wǎng)格劃分結果,將連續(xù)的三維空間劃分為立方體網(wǎng)格;
25、采用哈希函數(shù)將空間內(nèi)的管道或結構的空間坐標映射到哈希表中,以實現(xiàn)對空間物體的快速訪問和查詢;
26、根據(jù)劃分的網(wǎng)格,以同一網(wǎng)格單元內(nèi)的管道或結構作為一根管道潛在的碰撞管道目標;對潛在的碰撞元素,采用aabb包圍盒方法進行檢測:若管道與管道,或者管道與結構的aabb包圍盒存在交叉,則判定存在硬碰撞。
27、所述的步驟s5,包括如下步驟:
28、管道的軟碰撞檢測,包括管道與管道的軟碰撞檢測和軟管與結構的軟碰撞檢測;
29、(1)管道與管道的軟碰撞檢測:
30、根據(jù)任意兩根管道的半徑和設定的兩根管道間的最小距離,計算得到管道軟碰撞檢測閾值;
31、若兩根管道之間的實際最短距離小于計算得到的管道軟碰撞檢測閾值,則判定該兩根管道存在軟碰撞;否則,判定該兩根管道不存在軟碰撞;
32、針對存在軟碰撞的兩根管道:
33、若兩根管道的中心線不共面,則直接判定兩根管道的軟碰撞為異面交叉軟碰撞;
34、若兩根管道的中心線的共面:
35、計算兩根管道的中心線的方向向量的叉積,并根據(jù)叉積與設定的相容誤差容差的大小和兩根管道的中心線的直線距離,判定軟碰撞為共面共線軟碰撞或共面平行軟碰撞;
36、若兩根管道的中心線存在交點,計算交點到各個端點的距離和方向向量;若交點在任一管道中心線上上,則判定軟碰撞為共面內(nèi)部相交軟碰撞;
37、若兩根管道的中心線無交點,則計算兩根管道的實際最短距離:若兩根管道的實際最短距離小于設定的最小允許距離,則判定軟碰撞為共面延長線相交軟碰撞;否則,判定為其他類型;
38、(2)管道與結構的軟碰撞檢測:
39、根據(jù)管道半徑與設定的管道間的最小距離,計算得到管道結構軟碰撞檢測閾值;
40、獲取管道中心線與結構體之間的最短距離,并與計算得到的管道結構軟碰撞檢測閾值進行對比:若管道中心線與結構體之間的最短距離大于管道結構軟碰撞檢測閾值,則判定不存在管道與結構的軟碰撞;否則,判定存在管道與結構的軟碰撞;
41、針對存在的管道與結構的軟碰撞,根據(jù)管道中心線與結構體之間的最短距離和結構體的每個面與管道中心線的交點個數(shù),進行管道與結構的軟碰撞類型的檢測。
42、所述的步驟s5,具體包括如下步驟:
43、管道的軟碰撞檢測,包括管道與管道的軟碰撞檢測和軟管與結構的軟碰撞檢測;
44、(1)管道與管道的軟碰撞檢測:
45、根據(jù)任意兩根管道的半徑r1、r2和設定的兩根管道間的最小距離input,計算得到管道軟碰撞檢測閾值min為;
46、若兩根管道之間的實際最短距離d小于計算得到的管道軟碰撞檢測閾值min,則判定該兩根管道存在軟碰撞;否則,判定該兩根管道不存在軟碰撞;
47、設定管道間的軟碰撞類型包括異面交叉軟碰撞、共面共線軟碰撞、共面平行軟碰撞、共面內(nèi)部相交軟碰撞和共面延長線相交軟碰撞;
48、若存在軟碰撞的兩根管道的中心線不共面,則直接判定該兩根管道的軟碰撞為異面交叉軟碰撞;設定最近碰撞點為p1和p2,p1的x軸坐標、y軸坐標和z軸坐標為,p2的x軸坐標、y軸坐標和z軸坐標為,計算得到兩個碰撞點的實際距離為,計算得到該兩根管道的中心線的方向向量的夾角為,其中d1為兩根管道中第一根管道的中心線方向向量,d2為兩根管道中第二根管道的中心線方向向量,為第一根管道的中心線方向向量的模,為第二根管道的中心線方向向量的模;
49、若兩根管道的中心線的共面:
50、計算兩根管道的中心線的方向向量的叉積:若叉積的模小于設定的相對誤差容差,且兩根管道的中心線的直線距離小于設定閾值,則判定軟碰撞為共面共線軟碰撞;若叉積的模小于設定的相對誤差容差,且兩根管道的中心線的直線距離不小于設定閾值,則判定軟碰撞為共面平行軟碰撞;
51、若兩根管道的中心線存在交點,則計算該交點到兩根管道的中心點的端點的距離和方向向量:若交點在任一管道中心線上上,則判定軟碰撞為共面內(nèi)部相交軟碰撞;
52、若兩根管道的中心線無交點,則計算兩根管道的實際最短距離為,其中為兩根管道的中心線的延長線的交點p到第一根管道的中心線的第一個端點a的距離,為兩根管道的中心線的延長線的交點p到第一根管道的中心線的第二個端點b的距離,為兩根管道的中心線的延長線的交點p到第二根管道的中心線的第一個端點c的距離,為兩根管道的中心線的延長線的交點p到第二根管道的中心線的第二個端點d的距離;若兩根管道的實際最短距離小于設定的最小允許距離,則判定軟碰撞為共面延長線相交軟碰撞;否則,判定為其他類型;
53、(2)管道與結構的軟碰撞檢測:
54、根據(jù)管道半徑與設定的管道間的最小距離,計算得到管道結構軟碰撞檢測閾值為;
55、獲取管道中心線與結構體之間的最短距離,并與計算得到的管道結構軟碰撞檢測閾值進行對比:若管道中心線與結構體之間的最短距離大于管道結構軟碰撞檢測閾值,則判定不存在管道與結構的軟碰撞;否則,判定存在管道與結構的軟碰撞;
56、設定管道與結構的軟碰撞類型包括管道穿透結構軟碰撞、管道與結構相切軟碰撞和管道與結構接近軟碰撞;
57、針對存在的管道與結構的軟碰撞,進行管道與結構的軟碰撞類型的檢測:
58、若管道中心線與結構體之間的最短距離為0,且結構體的各個面與管道中心線的交點個數(shù)不少于2個,則判定管道與結構的軟碰撞為管道穿透結構軟碰撞;
59、若管道中心線與結構體之間的最短距離不為0且與0的差值小于設定值,則判定管道與結構的軟碰撞為管道與結構相切軟碰撞;
60、若管道中心線與結構體之間的最短距離不為0、與0的差值大于或等于設定值,則判定管道與結構的軟碰撞為管道與結構接近軟碰撞;
61、其中,管道中心線與結構體之間的最短距離,采用如下步驟進行獲?。?/p>
62、獲取管道中心線的兩個端點和結構體的各個面的數(shù)據(jù)信息;
63、遍歷各個面與管道中心線的關系,并檢查管道中心線與面的交叉情況:若存在交點則直接判定為0,并停止遍歷;若不存在交點,則將管道中心線的端點投影到當前的面上,并將端點和對應的投影點的距離的最小值作為管道中心線與結構體之間的最短距離。
64、所述的步驟s6,具體包括如下步驟:
65、設定管道的軟碰撞嚴重程度包括致命、嚴重、中等和輕微;
66、針對管道與管道的軟碰撞嚴重程度檢測:
67、若兩根管道之間的實際最短距離d小于0,或者管道軟碰撞檢測閾值min不大于0,則判定嚴重程度為致命;
68、若兩根管道之間的實際最短距離d不小于0且管道軟碰撞檢測閾值min大于0,則計算管道間碰撞程度值ratio為;
69、對于共面內(nèi)部相交軟碰撞和共面共線軟碰撞,判定嚴重程度為致命;
70、對于異面交叉軟碰撞、共面平行軟碰撞和共面延長線相交軟碰撞,若則判定嚴重程度為致命,若則判定嚴重程度為嚴重,若則判定嚴重程度為中等,若則判定嚴重程度為輕微;
71、針對管道與結構的軟碰撞嚴重程度檢測:
72、若管道中心線與結構體之間的最短距離小于0或管道結構軟碰撞檢測閾值不大于0,則判定嚴重程度為致命;
73、若管道中心線與結構體之間的最短距離不小于0或管道結構軟碰撞檢測閾值大于0,則計算管道與結構碰撞程度值為;
74、對于管道穿透結構軟碰撞,判定嚴重程度為致命;
75、對于管道與結構相切軟碰撞,判定嚴重程度為嚴重;
76、對于管道與結構接近軟碰撞,若則判定嚴重程度為致命,若則判定嚴重程度為嚴重,若則判定嚴重程度為中等,若則判定嚴重程度為輕微。
77、本發(fā)明還提供了一種包括了所述bim模型中的管道碰撞檢測方法的定位方法,還包括如下步驟:
78、s7.?根據(jù)任意兩根管道在平面圖或三維圖中的位置信息和交點信息,進行管道的軟碰撞的定位檢測。
79、所述的步驟s7,包括如下步驟:
80、管道的軟碰撞的定位檢測,包括平面圖定位檢測和三維圖定位檢測?;
81、平面圖定位檢測適用于查看bim模型在平面上的布局和構建間的平面關系;三維圖定位檢測適用于查看bim模型在立體上的位置關系和構建間交互效果;
82、平面圖定位檢測:
83、針對非異面交叉軟碰撞的其他軟碰撞,直接獲取對應的碰撞點坐標;根據(jù)碰撞點坐標的z軸坐標,直接進行對應的樓層平面的定位;
84、針對異面交叉軟碰撞,將兩條管道的中心線的方向向量在xy平面投影并進行交叉計算得到中心線的方向向量在xy平面的投影信息,并通過投影信息與兩條管道的中心線的起點坐標,計算得到異面交叉的交點坐標信息;根據(jù)異面交叉的交點坐標信息,進行對應的樓層平面的定位;
85、三維圖定位檢測:
86、針對非異面交叉軟碰撞的其他軟碰撞,直接獲取對應的碰撞點坐標;根據(jù)碰撞點坐標的z軸坐標,直接進行對應的樓層平面的定位;
87、針對異面交叉軟碰撞,根據(jù)兩條管道的中心線的起點和終點構建向量,并進行行列式計算;根據(jù)行列式計算結果,計算得到兩條管道中心線上的最近點相對于各自線段起點的比例位置并進行歸一化,最后根據(jù)歸一化后的比例位置計算得到兩條管道的中心線上的最近點;根據(jù)得到的兩條管道的中心線上的最近點,進行對應的樓層平面的定位。
88、所述的步驟s7,具體包括如下步驟:
89、a.?平面圖定位檢測:
90、針對非異面交叉軟碰撞的其他軟碰撞,直接獲取對應的碰撞點坐標;根據(jù)碰撞點坐標的z軸坐標,直接進行對應的樓層平面的定位;
91、針對異面交叉軟碰撞:
92、設定p1表示第一管道的中心線的起點,對應的x軸坐標和y軸坐標為;設定p2表示第二管道的中心線的起點,對應的x軸坐標和y軸坐標為;v1為第一管道的中心線的方向向量,v2為第二管道的中心線的方向向量;v1在x軸上的坐標為,v1在y軸上的坐標為,v2在x軸上的坐標為,v2在y軸上的坐標為;
93、采用如下算式計算得到v1和v2在xy平面上的投影向量:式中為v1在xy平面上的投影向量;為v2在xy平面上的投影向量;
94、采用如下算式計算得到交點參數(shù)t:式中為的y軸坐標;為的x軸坐標;為的x軸坐標;為的y軸坐標;
95、采用如下算式計算得到異面交叉的交點坐標信息:式中為異面交叉的交點q的x軸坐標;為異面交叉的交點q的y軸坐標;為異面交叉的交點q的z軸坐標;
96、根據(jù)異面交叉的交點q的坐標信息,進行對應的樓層平面的定位:根據(jù)當前活動視圖,獲取關聯(lián)的標高,通過標高得到當前樓層平面;若無法獲取標高,則返回默認值0;
97、b.?三維圖定位檢測:
98、針對非異面交叉軟碰撞的其他軟碰撞,直接獲取對應的碰撞點坐標;根據(jù)碰撞點坐標的z軸坐標,直接進行對應的樓層平面的定位;
99、針對異面交叉軟碰撞:
100、設定第一管道的中心線的起始端點為,終止端點為;第二管道的中心線的起始端點為,終止端點為;則第一向量表示為,第二向量表示為,第三向量表示為;
101、進行行列式計算,得到行列式計算結果d為;
102、若d小于設定的極小值,則:
103、第一比例位置sc為0;
104、若則第二比例位置tc為,否則第二比例位置tc為;
105、若d不小于設定的極小值,則:
106、第一比例位置sc為,第二比例位置tc為;
107、將第一比例位置和第二比例位置進行歸一化,得到歸一化第一比例位置為,歸一化第二比例位置為;
108、采用如下算式計算得到兩條管道的中心線上的最近點:式中為第一管道的中心線上的最近點;為第二管道的中心線上的最近點;
109、根據(jù)和,進行對應的樓層平面的定位:通過兩個最近點之間的中心位置的標高,在樓層平面上進行準確定位。
110、本發(fā)明還提供了一種實現(xiàn)所述bim模型中的管道碰撞檢測方法的系統(tǒng),包括數(shù)據(jù)獲取模塊、數(shù)據(jù)選定模塊、網(wǎng)格劃分模塊、硬碰撞檢測模塊、軟碰撞檢測模塊、程度檢測模塊和定位檢測模塊;數(shù)據(jù)獲取模塊、數(shù)據(jù)選定模塊、網(wǎng)格劃分模塊、硬碰撞檢測模塊、軟碰撞檢測模塊、程度檢測模塊和定位檢測模塊依次串接;數(shù)據(jù)獲取模塊用于獲取目標bim模型的數(shù)據(jù)信息,并將數(shù)據(jù)信息上傳數(shù)據(jù)選定模塊;數(shù)據(jù)選定模塊用于根據(jù)接收到的數(shù)據(jù)信息,根據(jù)獲取的數(shù)據(jù)信息,選定設定樓層的所有管道與結構信息,并將數(shù)據(jù)信息上傳網(wǎng)格劃分模塊;網(wǎng)格劃分模塊用于根據(jù)接收到的數(shù)據(jù)信息,基于粒子群算法,對選定的管道進行網(wǎng)格劃分,并將數(shù)據(jù)信息上傳硬碰撞檢測模塊;硬碰撞檢測模塊用于根據(jù)接收到的數(shù)據(jù)信息,根據(jù)網(wǎng)格劃分結果,采用空間哈希算法進行管道的硬碰撞檢測,并將數(shù)據(jù)信息上傳軟碰撞檢測模塊;軟碰撞檢測模塊用于根據(jù)接收到的數(shù)據(jù)信息,根據(jù)任意兩根管道的中心線的位置關系、距離關系和夾角關系,進行管道的軟碰撞檢測,并將數(shù)據(jù)信息上傳程度檢測模塊;程度檢測模塊用于根據(jù)接收到的數(shù)據(jù)信息,根據(jù)任意兩根管道的中心線的最短距離和設定的最小允許距離,進行管道的軟碰撞嚴重程度檢測,并將數(shù)據(jù)信息上傳定位檢測模塊;定位檢測模塊用于根據(jù)接收到的數(shù)據(jù)信息,根據(jù)任意兩根管道在平面圖或三維圖中的位置信息和交點信息,進行管道的軟碰撞的定位檢測。
111、本發(fā)明提供的這種bim模型中的管道碰撞檢測方法、定位方法及系統(tǒng),通過粒子群優(yōu)化算法進行管道網(wǎng)格劃分的優(yōu)化,再結合哈希算法進行硬碰撞檢測,結合管道的中心線的位置關系、距離關系和夾角關系進行軟碰撞的檢測和定位,因此本發(fā)明不僅能夠?qū)崿F(xiàn)bim模型中的管道碰撞的檢測及定位,而且可靠性更高,精確性更好,效率也更高。