首页 > 解决方案 > 如何在sketchup中使用ruby api知道人脸包含另一张脸

问题描述

我有一个faceA,一个faceB,faceC,faceA包含faceB,我想知道如何让Ruby API让faceA包含faceB。但不包含 faceC

faceA.all_connected.grep(Sketchup::Face) 

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

标签: sketchup

解决方案


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

Face.outerloop将返回限制面的循环(不包括任何内部边缘)。 Face.loop返回面部的所有循环,包括内部和外部。

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

这里发布了另一种方法,这可能也是一个好方法:https ://forums.sketchup.com/t/how-to-know-that-a-face-contains-another-face-using-ruby -api/21840/3

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


推荐阅读