Рефлексия

Сложные геометрические объекты состоят из более простых. Данная группа функций и методов позволяет расскладывать сложные объекты на образующие их компоненты.

Для работы с эими фунциями рекомендуется изучить топологическое устройство brep моделей в ядре OpenCascade. (Начать ознаклмление можно с раздела Введение в BREP представление геометрических моделей)


Пустой объект

Возвращает истину, если объект пустой, иначе ложь.

Сигнатура:

shp.is_nullshape()

Пример:

a = box(10, center=True)
b = sphere(r=10)
(a - b).is_nullshape() # True

Массивы базовых объектов

Это семейство методов позволяет извлечь и отфильтровать необходимые базовые объекты.

Все методы имеют однотипную сигнатуру, возвращают массив объектов соответствующего типа. Необязательная опция filter позволяет отфильтровать выборку по необходимому условию.

shape.vertices(filter=None) # -> [point3]
shape.solids(filter=None) # -> [Shape; future:Solid]
shape.faces(filter=None) # -> [Face]
shape.edges(filter=None) # -> [Edge]
shape.wires(filter=None) # -> [Shape; future:Wire]
shape.shells(filter=None) # -> [Shape; future:Shell]
shape.compounds(filter=None) # -> [Shape; future:Compound]
shape.compsolids(filter=None) # -> [Shape; future:Compsolid]

Взятие базового объекта по методу ближайшей точки

Иногда требуется извлечь из сложного объекта конкретный базовый объект. В этом случае можно использовать метод базовой точки.

Следующие функции реализуют метод ближайшей точке и возвращают ближайший к pnt базовый объект соответствующего типа, принадлежащий сложному объекту shp.

near_edge(shp, pnt) # -> Edge
near_face(shp, pnt) # -> Face
near_vertex(shp, pnt) # -> point3

Восстановление типа

zencad выводит тип объекта и применимые к нему операции на основе дерева построения, что в некоторых случаях может давать неверный результат.

Функция restore_shapetype восстанавливает тип на основе анализа реального представления объекта.

original_shp = restore_shapetype(shp)