Как узнать лицо содержит другое лицо с ruby ​​API в SketchUp - PullRequest
0 голосов
/ 21 июня 2019

У меня есть faceA, faceB, faceC, faceA содержит faceB, я хочу знать, как использовать Ruby API для получения faceA и faceB.но не содержит faceC

faceA.all_connected.grep(Sketchup::Face) 

, это может найти faceB, но также faceC

1 Ответ

0 голосов
/ 21 июня 2019

Это можно определить, сравнив петли, составляющие лицо.

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

Обратите внимание, что в связанном посте они комментируют, что вы не можете напрямую сравнивать циклы, но вы можете сравнить ребра (которые составляют цикл).

...