完善主體資料,免費(fèi)贈(zèng)送VIP會(huì)員!
      * 主體類型
      * 企業(yè)名稱
      * 信用代碼
      * 所在行業(yè)
      * 企業(yè)規(guī)模
      * 所在職位
      * 姓名
      * 所在行業(yè)
      * 學(xué)歷
      * 工作性質(zhì)
      請(qǐng)先選擇行業(yè)
      您還可以選擇以下福利:
      行業(yè)福利,領(lǐng)完即止!

      下載app免費(fèi)領(lǐng)取會(huì)員

      NULL

      ad.jpg

      Revit二次開發(fā)教程:獲取相交構(gòu)件及Face重合的判斷

      發(fā)布于:2019-02-18 17:15:53

      網(wǎng)友投稿

      更多

      本文來(lái)源:微信公眾號(hào):bimliang   作者:BIMCoder梁老師  更多內(nèi)容請(qǐng)關(guān)注微信公眾號(hào)



      一、前言


             前幾日深夜對(duì)如何獲取相交構(gòu)件及Face重合的判斷做了些探索,也和行內(nèi)的大佬進(jìn)行了一定的技術(shù)交流,我覺(jué)得還是有必要寫一寫,探討一下。


      二、獲取相交構(gòu)件


             獲取相交構(gòu)件是一件非常可怕的事情,小模型速度還行,當(dāng)模型大起來(lái)之后,如何快速獲取一個(gè)構(gòu)件的相交構(gòu)件是一件比較頭疼的事情。有位大佬告訴我,當(dāng)你追求速度的時(shí)候強(qiáng)烈推薦使用BoundingBoxIntersectsFilter(Outline),Outline可以通過(guò)將當(dāng)前構(gòu)件的BoundingBox進(jìn)行各方向的延伸來(lái)獲得:

      腿腿教學(xué)網(wǎng)-Revit二次開發(fā)教程:獲取相交構(gòu)件及Face重合的判斷


      然后將此Outline傳入BoundingBoxIntersectsFilter獲取相交構(gòu)件。

      那么可不可以使用ElementIntersectSolidFilter去獲取周圍的相交構(gòu)件,答案是:不可以!

      原因有以下2條:

      1. 由于建模人員的水平層次不齊,很多時(shí)候相交的東西會(huì)畫的像貼合一樣,并沒(méi)有產(chǎn)生相交的solid,所以你用SolidFilter是獲取不到的;

      2. 模型建模本身的要求就是貼合,并不是相交,但是你在分析模型時(shí)需要將與之貼合的構(gòu)件分析進(jìn)去,用SolidFilter會(huì)忽略這些構(gòu)件。


      三、怎么判斷兩個(gè)構(gòu)件的貼合面


      說(shuō)到兩個(gè)面是否重合,我覺(jué)得是個(gè)人都會(huì)先想到Face.Intersect(Face)的方法。但是經(jīng)過(guò)實(shí)測(cè),這個(gè)方法并不靠譜。肉眼觀察一模型,發(fā)現(xiàn)一個(gè)柱子與一塊板有一面是相互重合的,但是取相應(yīng)的面用Face.Intersect(Face)的結(jié)果返回的是false。

      這里插個(gè)題外話,判斷兩個(gè)構(gòu)件接觸(非相交)不能用

      var intersect = ExecuteBooleanOperation(solid1, solid2, BooleanOperationsType.Intersect),然后判斷Intersect!=null && Intersect.Volumn == 0, 以為這樣就能通過(guò)Intersect.Faces獲取接觸面。 這樣是不對(duì)的。

      回到判斷接觸面的算法,該如何去獲取兩個(gè)構(gòu)件相應(yīng)的接觸面?另一位大佬和我說(shuō),可以使用面的法向去產(chǎn)生一個(gè)薄片,厲害厲害:

      var curveloops = (f as PlanarFace).

      GetEdgesAsCurveLoops().ToList();
      Solid tempSolid = GeometryCreationUtilities.

      CreateExtrusionGeometry(curveloops, 

      (f as PlanarFace).FaceNormal,

      UnitUtils.ConvertToInternalUnits(0.5, DisplayUnitType.DUT_MILLIMETERS));


      圖示如下:

      腿腿教學(xué)網(wǎng)-Revit二次開發(fā)教程:獲取相交構(gòu)件及Face重合的判斷

      本文版權(quán)歸腿腿教學(xué)網(wǎng)及原創(chuàng)作者所有,未經(jīng)授權(quán),謝絕轉(zhuǎn)載。

      未標(biāo)題-1.jpg

      上一篇:Revit二次開發(fā)教程:如何對(duì)插件進(jìn)行雙數(shù)字簽名

      下一篇:Revit如何合并空間

      主站蜘蛛池模板: 无码少妇一区二区三区浪潮AV| 久久一区二区三区免费| 亚洲AV综合色一区二区三区 | 国产一区二区女内射| 91精品乱码一区二区三区| 一夲道无码人妻精品一区二区| 亚洲国产精品自在线一区二区| 日本精品夜色视频一区二区| 波多野结衣久久一区二区| 亚洲AV无码一区二区三区系列| 国产一区二区三区福利| 午夜在线视频一区二区三区| 欧美av色香蕉一区二区蜜桃小说| 精品一区二区三区中文字幕| 中文字幕在线播放一区| 日本一区二区三区在线网| 国产欧美色一区二区三区| 91精品一区二区综合在线| 亚洲AV综合色区无码一区| 国产成人一区二区三区在线观看| 日韩精品无码Av一区二区| 无码AV动漫精品一区二区免费| 麻豆国产在线不卡一区二区 | 国产精品分类视频分类一区| 无码囯产精品一区二区免费| 99精品一区二区三区| 日韩精品无码一区二区三区不卡| 中文字幕永久一区二区三区在线观看 | 熟女少妇精品一区二区| 插我一区二区在线观看| 精品国产一区二区22| 中文字幕无线码一区| 99精品国产高清一区二区三区 | 99久久精品午夜一区二区| 偷拍激情视频一区二区三区| 91精品国产一区| 日日摸夜夜添一区| 亚洲性色精品一区二区在线| 亚洲爆乳精品无码一区二区 | 中文字幕一区二区免费| 亚洲日韩精品一区二区三区无码|