【发布时间】:2019-06-21 15:42:23
【问题描述】:
我有一个 faceA,一个 faceB,faceC,faceA 包含 faceB,我想知道如何让 Ruby API 让 faceA 包含 faceB。但不包含faceC
faceA.all_connected.grep(Sketchup::Face)
这个可以找到faceB,也可以找到faceC
【问题讨论】:
标签: sketchup
我有一个 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 的示例代码),您可以遍历这些面以确定是否有任何faceA 的outerloop 被迭代的面共享。如果是这样,它不是嵌入面,而是相邻的。
这里发布了另一种方法,这可能也是一个不错的方法:https://forums.sketchup.com/t/how-to-know-that-a-face-contains-another-face-using-ruby-api/21840/3
请注意,在链接的帖子中,他们评论说您无法直接比较循环,但您可以比较边缘(构成循环)。
【讨论】: