国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

【Rhino建?!炕贕rasshopper與Rhinocommmon用C#實(shí)現(xiàn)批量Closed Breps布爾的小實(shí)踐。

2022-11-21 22:58 作者:SayLeftTurnRight  | 我要投稿

問題來源:

用grasshopper自帶的Soild Intersection電池總是有部分實(shí)體運(yùn)算不出來。

解決方式:

去查了下Rhinocommom的布爾運(yùn)算方法,發(fā)現(xiàn)帶有個(gè)tolerance參數(shù),允許我們自行調(diào)整布爾運(yùn)算的容差,調(diào)用這個(gè)函數(shù)就把問題解決了。


簡(jiǎn)述下我寫這個(gè)電池的思路。

采用的是Rhinocommom自帶的CreateBooleanIntersection Method。

Brep.CreateBooleanIntersection Method? ? ? ? ? ? https://developer.rhino3d.com/api/RhinoCommon/html/M_Rhino_Geometry_Brep_CreateBooleanIntersection.htm

有兩個(gè)需要注意的點(diǎn):

1·由于布爾運(yùn)算有可能產(chǎn)生多個(gè)實(shí)體,所以返回的是一組值,return的是一個(gè)array,不是gh常用的List。

2·當(dāng)兩個(gè)Brep沒有相交時(shí)或者運(yùn)算錯(cuò)誤時(shí),return值是NULL。但要做的是批量運(yùn)算,這可能會(huì)卡住其它Brep的運(yùn)算。


Brep.CreateBooleanIntersection Method 的返回值

處理方式:

1·遍歷一遍返回的Brep array的所有Brep,賦值給輸出端的List。

2.增加判斷語句,只有返回的Brep array為非NULL時(shí),才會(huì)進(jìn)行賦值。

?private void RunScript(Brep brep, List<Brep> breps, int t, ref object BREPS)

? {

? ?//聲明一個(gè)BrepList,用來儲(chǔ)存運(yùn)算結(jié)果

? ? List <Brep> inters = new List<Brep>();

? ? //遍歷輸入的所有Brep

? ? foreach(Brep b in breps)

? ? {

? ? ? Brep[] inter1 = Brep.CreateBooleanIntersection(brep, b, t);

? ? ? //判斷array為非NULL

? ? ? if(inter1 != null)

? ? ? {

? ? ? ? //遍歷布爾返回的array中所有Brep

? ? ? ? foreach(Brep bb in inter1)

? ? ? ? {

? ? ? ? ? inters.Add(bb);

? ? ? ? }

? ? ? }

? ? }

? ? BREPS = inters;



調(diào)整了下tolerance,實(shí)現(xiàn)的很完美。

想換成其他布爾運(yùn)算只需要改下Method名就好



【Rhino建?!炕贕rasshopper與Rhinocommmon用C#實(shí)現(xiàn)批量Closed Breps布爾的小實(shí)踐。的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
福海县| 勐海县| 富平县| 建始县| 陕西省| 延安市| 盈江县| 杂多县| 府谷县| 永寿县| 独山县| 安岳县| 德庆县| 平阴县| 如东县| 麻阳| 黎平县| 金堂县| 青州市| 灯塔市| 承德市| 万源市| 襄樊市| 神池县| 米泉市| 郸城县| 固阳县| 马尔康县| 南康市| 宽城| 邵东县| 肥乡县| 绥宁县| 哈巴河县| 京山县| 温宿县| 海盐县| 库车县| 德清县| 伊金霍洛旗| 阿克苏市|