在sketchup中如何知道面孔包含另一张面孔ruby api

how to know face contain another face with ruby api in sketchup

我有一个faceA,一个faceB,faceC,faceA包含faceB,我想知道如何让RubyAPI得到faceA包含faceB。但不包含 faceC

faceA.all_connected.grep(Sketchup::Face) 

这样可以找到faceB,也可以找到faceC

这可以通过比较构成面部的环来确定。

Face.outerloop 将 return 限定面的循环(不包括任何内部边缘)。 Face.loop return 一个面部的所有循环,包括内部和外部。

因此,通过获取所有连接面的列表(使用您 post 编辑的 all_connected 示例代码),您可以遍历这些面以确定是否有任何面 A 的 outerloop 由迭代面共享。如果是这样,则它不是内嵌面,而是相邻的。

这里有一个替代方法 posted 也可能是一个很好的方法:https://forums.sketchup.com/t/how-to-know-that-a-face-contains-another-face-using-ruby-api/21840/3

请注意,在链接 post 中,他们评论说您不能直接比较循环,但可以比较边(构成循环)。