def shared_faces(self, other, as_compound=False): """ Get shared faces between this shape and the other. :param afem.topology.entities.Shape other: The other shape. :param bool as_compound: Option to return shared shapes as a single compound. :return: Shared faces. :rtype: list(afem.topology.entities.Face) or afem.topology.entities.Compound """ this_map = TopTools_IndexedMapOfShape() topexp.MapShapes(self.object, Shape.FACE, this_map) if this_map.Extent() == 0: return [] other_map = TopTools_IndexedMapOfShape() topexp.MapShapes(other.object, Shape.FACE, other_map) if other_map.Extent() == 0: return [] faces = [] for i in range(1, this_map.Size() + 1): f1 = this_map.FindKey(i) if other_map.Contains(f1): faces.append(Shape.wrap(f1)) if as_compound: return Compound.by_shapes(faces) return faces
def generate_shape_maps(compound): face_map = TopTools_IndexedMapOfShape() wire_map = TopTools_IndexedMapOfShape() edge_map = TopTools_IndexedMapOfShape() topexp.MapShapes(compound, TopAbs_FACE, face_map) topexp.MapShapes(compound, TopAbs_WIRE, wire_map) topexp.MapShapes(compound, TopAbs_EDGE, edge_map) return (face_map, wire_map, edge_map)
def num_faces(self): """ :return: The number of faces in the shape. :rtype: int """ map_ = TopTools_IndexedMapOfShape() topexp.MapShapes(self.object, Shape.FACE, map_) return map_.Extent()
def _get_shapes(self, type_): """ Get sub-shapes of a specified type from the shape. """ map_ = TopTools_IndexedMapOfShape() topexp.MapShapes(self.object, type_, map_) shapes = [] for i in range(1, map_.Size() + 1): shapes.append(Shape.wrap(map_.FindKey(i))) return shapes