Faces#

Surfaces & faces.

class volmdlr.faces.BSplineFace3D(surface3d: BSplineSurface3D, surface2d: Surface2D, name: str = '')[source]#

Bases: Face3D

A 3D face with a B-spline surface.

This class represents a 3D face with a B-spline surface, which is a smooth surface defined by a set of control points and knots. It is a subclass of the Face3D class and inherits all of its attributes and methods.

Parameters:
  • surface3d (BSplineSurface3D) – The 3D B-spline surface of the face.

  • surface2d (Surface2D) – The 2D projection of the face onto the parametric domain (u, v).

  • name (str) – The name of the face.

adjacent_direction(other_bspline_face3d)[source]#

Find directions (u or v) between two faces, in the nearest edges between them.

adjacent_direction_uu(other_bspline_face3d, corresponding_directions)[source]#

Returns the side of the faces that are adjacent.

adjacent_direction_uv(other_bspline_face3d, corresponding_directions)[source]#

Returns the sides that are adjacents to other BSpline face.

adjacent_direction_vu(other_bspline_face3d, corresponding_directions)[source]#

Returns the sides that are adjacents to other BSpline face.

adjacent_direction_vv(other_bspline_face3d, corresponding_directions)[source]#

Returns the side of the faces that are adjacent.

adjacent_direction_xy(other_face3d)[source]#

Find out in which direction the faces are adjacent.

Returns:

adjacent_direction

static approximate_with_arc(edge)[source]#

Returns an arc that approximates the given edge.

Parameters:

edge – curve to be approximated by an arc.

Returns:

An arc if possible, otherwise None.

extremities(other_bspline_face3d)[source]#

Find points extremities for nearest edges of two faces.

face_tolerance = 1e-05#
classmethod from_surface_rectangular_cut(bspline_surface3d, u1: float = 0.0, u2: float = 1.0, v1: float = 0.0, v2: float = 1.0, name: str = '')[source]#

Cut a rectangular piece of the BSplineSurface3D object and return a BSplineFace3D object.

get_approximating_arc_parameters(curve_list)[source]#

Approximates the given curves with arcs and returns the arcs, radii, and centers.

Parameters:

curve_list (list) – A list of curves to approximate.

Returns:

A tuple containing the radius and centers of the approximating arcs.

Return type:

tuple

get_bounding_box()[source]#

Creates a bounding box from the face mesh.

grid_size()[source]#

Specifies an adapted size of the discretization grid used in face triangulation.

linesegment_intersections(linesegment: LineSegment3D, abs_tol: float = 1e-06) List[Point3D][source]#

Get intersections between a BSpline face 3d and a Line Segment 3D.

Parameters:
  • linesegment – other linesegment.

  • abs_tol – tolerance.

Returns:

a list of intersections.

merge_with(other_bspline_face3d)[source]#

Merge two adjacent faces.

Type:

other_bspline_face3d : volmdlr.faces.BSplineFace3D

Return type:

merged_face : volmdlr.faces.BSplineFace3D

neutral_fiber()[source]#

Returns the faces’ neutral fiber.

neutral_fiber_points()[source]#

Calculates the neutral fiber points of the face.

Returns:

The neutral fiber points if they exist, otherwise None.

Return type:

Union[list, None]

pair_with(other_bspline_face3d)[source]#

Finds out how the uv parametric frames are located.

It does it by comparing to each other and also how grid 3d can be defined respected to these directions.

Parameters:

other_bspline_face3d (volmdlr.faces.BSplineFace3D) – BSplineFace3D

Returns:

corresponding_direction, grid2d_direction

Return type:

Tuple[?, ?]

to_planeface3d(plane3d: Plane3D | None = None)[source]#

Converts a Bspline face 3d to a Plane face 3d (using or without a reference Plane3D).

Parameters:

plane3d (Plane3D, optional) – A reference Plane3D, defaults to None

Returns:

A Plane face 3d.

Return type:

PlaneFace3D

triangulation_lines(resolution=25)[source]#

Specifies the number of subdivision when using triangulation by lines. (Old triangulation).

class volmdlr.faces.ConicalFace3D(surface3d: ConicalSurface3D, surface2d: Surface2D, name: str = '')[source]#

Bases: PeriodicalFaceMixin, Face3D

Defines a ConicalFace3D class.

Parameters:
  • surface3d (ConicalSurface3D.) – a conical surface 3d.

  • surface2d (Surface2D.) – a 2d surface to define the conical face.

circle_inside(circle: Circle3D)[source]#

Verifies if a circle 3D lies completely on the Conical face.

Parameters:

circle – Circle to be verified.

Returns:

True if circle inside face. False otherwise.

classmethod from_base_and_vertex(conical_surface3d, contour: Contour3D, vertex: Point3D, name: str = '')[source]#

Returns the conical face defined by the contour of the base and the cone vertex.

Parameters:
  • conical_surface3d – surface 3d.

  • contour (volmdlr.wires.Contour3D) – Cone, contour base.

  • name – the name to inject in the new face

Returns:

Conical face.

Return type:

ConicalFace3D

classmethod from_surface_rectangular_cut(conical_surface3d, theta1: float, theta2: float, z1: float, z2: float, name: str = '')[source]#

Cut a rectangular piece of the ConicalSurface3D object and return a ConicalFace3D object.

neutral_fiber()[source]#

Returns the faces’ neutral fiber.

triangulation_lines(angle_resolution=5)[source]#

Specifies the number of subdivision when using triangulation by lines. (Old triangulation).

class volmdlr.faces.CylindricalFace3D(surface3d: CylindricalSurface3D, surface2d: Surface2D, name: str = '')[source]#

Bases: PeriodicalFaceMixin, Face3D

Defines a CylindricalFace3D class.

Parameters:
  • surface3d (CylindricalSurface3D.) – a cylindrical surface 3d.

  • surface2d (Surface2D.) – a 2d surface to define the cylindrical face.

Example:

contours 2d is rectangular and will create a classic cylinder with x= 2*pi*radius, y=h

adjacent_direction(other_face3d)[source]#

Find out in which direction the faces are adjacent.

Parameters:

other_face3d (volmdlr.faces.CylindricalFace3D) – The face to evaluation.

arc_inside(arc: Arc3D)[source]#

Verifies if Arc3D is inside a CylindricalFace3D.

Parameters:

arc – Arc3D to be verified.

Returns:

True if it is inside, False otherwise.

arcellipse_inside(arcellipse: ArcEllipse3D)[source]#

Verifies if ArcEllipse3D is inside a CylindricalFace3D.

Parameters:

arcellipse – ArcEllipse3D to be verified.

Returns:

True if it is inside, False otherwise.

copy(deep=True, memo=None)[source]#

Returns a copy of the CylindricalFace3D.

classmethod from_surface_rectangular_cut(cylindrical_surface, theta1: float, theta2: float, param_z1: float, param_z2: float, name: str = '')[source]#

Cut a rectangular piece of the CylindricalSurface3D object and return a CylindricalFace3D object.

get_geo_lines(tag: int, line_loop_tag: List[int])[source]#

Gets the lines that define a CylindricalFace3D in a .geo file.

min_x_density = 5#
min_y_density = 1#
neutral_fiber()[source]#

Returns the faces’ neutral fiber.

parametrized_grid_size(angle_resolution, z_resolution)[source]#

Gets size for parametrized grid.

Parameters:
  • angle_resolution – angle resolution.

  • z_resolution – z resolution.

Returns:

number of points in x and y.

planeface_intersections(planeface: PlaneFace3D)[source]#

Finds intersections with the given plane face.

Parameters:

planeface – Plane face to evaluate the intersections.

triangulation_lines(angle_resolution=5)[source]#

Specifies the number of subdivision when using triangulation by lines. (Old triangulation).

class volmdlr.faces.ExtrusionFace3D(surface3d: ExtrusionSurface3D, surface2d: Surface2D, name: str = '')[source]#

Bases: Face3D

A 3D face with a ruled surface.

This class represents a 3D face with a ruled surface, which is a surface formed by straight lines connecting two input curves. It is a subclass of the Face3D class and inherits all of its attributes and methods.

Parameters:
  • surface3d (RuledSurface3D) – The 3D ruled surface of the face.

  • surface2d (Surface2D) – The 2D projection of the face onto the parametric domain (u, v).

  • name (str) – The name of the face.

classmethod from_surface_rectangular_cut(extrusion_surface3d: ExtrusionSurface3D, x1: float = 0.0, x2: float = 0.0, y1: float = 0.0, y2: float = 1.0, name: str = '')[source]#

Cut a rectangular piece of the ExtrusionSurface3D object and return a ExtrusionFace3D object.

min_x_density = 50#
min_y_density = 1#
class volmdlr.faces.Face3D(surface3d, surface2d: Surface2D, reference_path: str = '#', name: str = '')[source]#

Bases: Primitive3D

Abstract method to define 3D faces.

area()[source]#

Computes the area of the surface 2d.

property bounding_box#

Returns the surface bounding box.

copy(deep=True, memo=None)[source]#

Returns a copy of the Face3D.

divide_face(list_cutting_contours: List[Contour2D], abs_tol: float = 1e-06)[source]#

Divides a Face 3D with a list of cutting contours.

Parameters:
  • list_cutting_contours – list of contours cutting the face.

  • abs_tol – tolerance.

divide_face_with_closed_cutting_contours(list_closed_cutting_contours, list_faces)[source]#

Divides a Face3D with a list of Open cutting contours.

Contours going from one side to another of the Face, or from the outer contour to one inner contour.

Parameters:
  • list_closed_cutting_contours – list containing the closed cutting contours

  • list_faces – list of already divided faces

Returns:

list divided faces

divide_face_with_open_cutting_contours(list_open_cutting_contours, abs_tol: float = 1e-06)[source]#

Divides a face 3D with a list of closed cutting contour, that is, it will cut holes on the face.

Parameters:
  • list_open_cutting_contours – list containing the open cutting contours.

  • abs_tol – tolerance.

Returns:

list divided faces.

edge3d_inside(edge3d, abs_tol: float = 1e-06)[source]#

Returns True if edge 3d is coplanar to the face.

edge_intersections(edge)[source]#

Gets the intersections of an edge and a 3D face.

face_border_intersections(face2)[source]#

Returns the intersections of the face outer and inner contour with other given face.

face_decomposition()[source]#

Decomposes the face discretization triangle faces inside eight boxes from a bounding box octree structure.

face_inside(face2, abs_tol: float = 1e-06)[source]#

Verifies if a face is inside another one.

It returns True if face2 is inside or False if the opposite.

face_intersections(face2, tol=1e-06) List[Wire3D][source]#

Calculates the intersections between two Face3D.

face_intersections_outer_contour(face2)[source]#

Returns the intersections of the face outer contour with other given face.

face_minimum_distance(other_face, return_points: bool = False)[source]#

Gets the minimum distance between two faces.

Parameters:
  • other_face – second face to search for minimum distance.

  • return_points – return corresponding point or not.

Returns:

face_tolerance = 1e-06#
frame_mapping(frame: Frame3D, side: str)[source]#

Changes frame_mapping and return a new Face3D.

side = ‘old’ or ‘new’

classmethod from_contours3d(surface, contours3d: List[Contour3D], name: str = '')[source]#

Returns the face generated by a list of contours. Finds out which are outer or inner contours.

Parameters:
  • surface – Surface3D where the face is defined.

  • contours3d – List of 3D contours representing the face’s BREP.

  • name – the name to inject in the new face

static from_contours3d_with_inner_contours(surface, contours3d)[source]#

Helper function to class.

classmethod from_step(arguments, object_dict, **kwargs)[source]#

Converts a step primitive to a Face3D.

Parameters:
  • arguments (list) – The arguments of the step primitive.

  • object_dict (dict) – The dictionary containing all the step primitives that have already been instantiated.

Returns:

The corresponding Face3D object.

Return type:

volmdlr.faces.Face3D

fullarc_intersections(fullarc: FullArc3D) List[Point3D][source]#

Get intersections between a face 3d and a Full Arc 3D.

Parameters:

fullarc – other fullarc.

Returns:

a list of intersections.

geo_lines()[source]#

Gets the lines that define a Face3D in a .geo file.

get_bounding_box()[source]#

General method to get the bounding box of a face 3D.

get_closed_contour_divided_faces_inner_contours(list_faces, new_contour)[source]#

If there is any inner contour, verifies which ones belong to the new divided faces.

Parameters:
  • list_faces – list of new faces.

  • new_contour – current new face outer contour.

Returns:

a list of new faces with its inner contours.

get_coincident_face_intersections(face)[source]#

Gets intersections for two faces which have coincident faces.

Parameters:

face – other face.

Returns:

two lists of intersections. one list containing wires intersecting face1, the other those for face2.

static get_edge_discretization_size(edge3d)[source]#

Helper function to polygonize the face boundaries.

get_face_cutting_contours(dict_intersecting_combinations)[source]#

Get all contours cutting the face, resulting from multiple faces intersections.

Parameters:

dict_intersecting_combinations – dictionary containing as keys the combination of intersecting faces

and as the values the resulting primitive from the intersection of these two faces return a list all contours cutting one particular face.

get_face_intersections(face2)[source]#

Gets the intersections between two faces.

Parameters:

face2 – second face.

Returns:

intersections.

get_face_polygons()[source]#

Get face polygons.

get_geo_lines(tag: int, line_loop_tag: List[int])[source]#

Gets the lines that define a PlaneFace3D in a .geo file.

get_open_contour_divided_faces_inner_contours(new_faces_contours, abs_tol: float = 1e-06)[source]#

If there is any inner contour, verifies which ones belong to the new divided faces.

Parameters:
  • new_faces_contours – new faces outer contour.

  • abs_tol – tolerance.

Returns:

valid_new_faces_contours, valid_new_faces_contours.

grid_points(grid_size, polygon_data=None)[source]#

Parametric tesselation points.

grid_size()[source]#

Specifies an adapted size of the discretization grid used in face triangulation.

static helper_repair_inner_contours_periodicity(surface, outer_contour2d, inner_contours2d, primitives_mapping)[source]#

Translate inner contours if it’s not inside the outer contour of the face.

helper_to_mesh(polygon_data=None) Mesh2D[source]#

Triangulates the Surface2D using the Triangle library.

Parameters:

polygon_data (Union[Tuple((wires.ClosedPolygon2D), List[wires.ClosedPolygon2D], None]) – Face’s outer polygon.

Returns:

The triangulated surface as a display mesh.

Return type:

volmdlr.display.Mesh2D

static helper_triangulation_without_holes(vertices, segments, points_grid, tri_opt)[source]#

Triangulates a surface without holes.

Parameters:
  • vertices – vertices of the surface.

  • segments – segments defined as tuples of vertices.

  • points_grid – to do.

  • tri_opt – triangulation option: “p”

Returns:

property inner_contours3d: List[Contour3D]#

Gives the 3d version of the inner contours of the face.

is_adjacent(face2: Face3D)[source]#

Verifies if two faces are adjacent or not.

Parameters:

face2 – other face.

Returns:

True or False.

is_intersecting(face2, list_coincident_faces=None, tol: float = 1e-06)[source]#

Verifies if two face are intersecting.

Parameters:
  • face2 – face 2

  • list_coincident_faces – list of coincident faces, if existent

  • tol – tolerance for calculations

Returns:

True if faces intersect, False otherwise

is_linesegment_crossing(linesegment)[source]#

Verify if a face 3d is being crossed by a line segment 3d.

line_intersections(line: Line3D) List[Point3D][source]#

Get intersections between a face 3d and a Line 3D.

Parameters:

line – other line.

Returns:

a list of intersections.

linesegment_intersections(linesegment: LineSegment3D, abs_tol: float = 1e-06) List[Point3D][source]#

Get intersections between a face 3d and a Line Segment 3D.

Parameters:
  • linesegment – other linesegment.

  • abs_tol – tolerance used.

Returns:

a list of intersections.

linesegment_intersections_approximation(linesegment: LineSegment3D, abs_tol: float = 1e-06) List[Point3D][source]#

Approximation of intersections face 3D and a line segment 3D.

min_x_density = 1#
min_y_density = 1#
normal_at_point(point)[source]#

Gets Normal vector at a given point on the face.

Parameters:

point – point on the face.

Returns:

property outer_contour3d: Contour3D#

Gives the 3d version of the outer contour of the face.

plane_intersections(plane3d: Plane3D)[source]#

Gets intersections with a 3D plane surface.

Parameters:

plane3d (Plane3D) – The Plane3D instance to find intersections with.

Returns:

List of Wire3D instances representing the intersections with the plane.

Return type:

List[wires.Wire3D]

plot(ax=None, color='k', alpha=1, edge_details=False)[source]#

Plots the face.

plot2d(ax=None, color='k', alpha=1)[source]#

Plot 2D of the face using matplotlib.

point_belongs(point3d: Point3D, tol: float = 1e-06)[source]#

Tells you if a point is on the 3D face and inside its contour.

point_distance(point, return_other_point: bool = False)[source]#

Calculates the distance from a face 3d and a point.

Parameters:
  • point – point to verify.

  • return_other_point – bool to decide if corresponding point on face should be returned.

Returns:

distance to face3D.

property primitives_mapping#

Gives the 3d version of the inner contours of the face.

random_point_inside()[source]#

Gets a random point on the face.

rotation(center: Point3D, axis: Vector3D, angle: float)[source]#

Face3D rotation.

Parameters:
  • center – rotation center

  • axis – rotation axis

  • angle – angle rotation

Returns:

a new rotated Face3D

select_face_intersecting_primitives(dict_intersecting_combinations)[source]#

Select face intersecting primitives from a dictionary containing all intersection combinations.

Parameters:

dict_intersecting_combinations – dictionary containing all intersection combinations

Returns:

list of intersecting primitives for current face

set_operations_new_faces(intersecting_combinations)[source]#

Gets boolean operations new faces after splitting.

Parameters:

intersecting_combinations – faces intersecting combinations dictionary.

Returns:

new split faces.

split_by_plane(plane3d: Plane3D)[source]#

Split face with a plane.

split_inner_contour_intersecting_cutting_contours(list_cutting_contours)[source]#

Given a list contours cutting the face, it calculates inner contours intersections with these contours.

Then, these inner contours were split at the found intersecting points. :param list_cutting_contours: list of contours cutting face. :return:

to_dict(*args, **kwargs)[source]#

Avoids storing points in memo that makes serialization slow.

to_geo(file_name: str)[source]#

Gets the .geo file for the Face3D.

to_step(current_id)[source]#

Transforms a Face 3D into a Step object.

translation(offset: Vector3D)[source]#

Face3D translation.

Parameters:

offset (volmdlr.Vector3D) – Translation vector.

Returns:

A new translated Face3D

triangulation()[source]#

Triangulates the face.

triangulation_lines()[source]#

Specifies the number of subdivision when using triangulation by lines. (Old triangulation).

class volmdlr.faces.PeriodicalFaceMixin[source]#

Bases: object

Abstract class for mutualizing methods for faces constructed on periodic surfaces.

face_inside(face2, abs_tol: float = 1e-06)[source]#

Verifies if a face is inside another one.

It returns True if face2 is inside or False if the opposite.

point_belongs(point3d: Point3D, tol: float = 1e-06) bool[source]#

Checks if a 3D point lies on the face.

Parameters:
  • point3d (volmdlr.Point3D) – The 3D point to be checked.

  • tol (float, optional) – Tolerance for the check.

Returns:

True if the point is on the ConicalFace3D, False otherwise.

Return type:

bool

class volmdlr.faces.PlaneFace3D(surface3d: Plane3D, surface2d: Surface2D, reference_path: str = '#', name: str = '')[source]#

Bases: Face3D

Defines a PlaneFace3D class.

Parameters:
  • surface3d (Plane3D.) – a plane 3d.

  • surface2d (Surface2D.) – a 2d surface to define the plane face.

check_inner_contours(face)[source]#

Checks face inner contours.

circle_inside(circle: Circle3D)[source]#

Verifies if a circle 3D is completely inside the plane face.

Parameters:

circle – the circle to verify.

Returns:

True if circle is inside False otherwise.

conicalface_intersections(conical_face: ConicalFace3D)[source]#

Calculates the intersections between a plane face 3D and Conical Face3D.

Parameters:

conical_face – the Conical Face 3D to verify intersections with Plane Face 3D.

Returns:

list of intersecting wires.

copy(deep=True, memo=None)[source]#

Returns a copy of the PlaneFace3D.

cut_by_coincident_face(face)[source]#

Cuts face1 with another coincident face2.

Parameters:

face (Face3D.) – a face 3d.

Returns:

a list of faces 3d.

Return type:

List[Face3D].

cylindricalface_intersections(cylindricalface: CylindricalFace3D)[source]#

Calculates the intersections between a plane face 3D and Cylindrical Face3D.

Parameters:

cylindricalface – the Cylindrical Face 3D to verify intersections with Plane Face 3D.

Returns:

list of intersecting wires.

distance_to_point(point, return_other_point=False)[source]#

Evaluates the distance to a given point.

distance_to_point is deprecated, please use point_distance.

classmethod from_surface_rectangular_cut(plane3d, x1: float, x2: float, y1: float, y2: float, name: str = '')[source]#

Cut a rectangular piece of the Plane3D object and return a PlaneFace3D object.

get_geo_lines(tag: int, line_loop_tag: List[int])[source]#

Gets the lines that define a PlaneFace3D in a .geo file.

is_adjacent(face2: Face3D)[source]#

Verifies if two plane faces are adjacent to eachother.

Parameters:

face2 – other face.

Returns:

True if adjacent, False otherwise.

linesegment_inside(linesegment: LineSegment3D)[source]#

Verifies if a line segment 3D is completely inside the plane face.

Parameters:

linesegment – the line segment to verify.

Returns:

True if circle is inside False otherwise.

static merge_faces(list_coincident_faces: List[Face3D])[source]#

Merges faces from a list of faces in the same plane, if any are adjacent to one another.

minimum_distance_points_plane(other_plane_face, return_points=False)[source]#

Given two plane faces, calculates the points which corresponds to the minimal distance between these two faces.

Parameters:
  • other_plane_face – Second plane face.

  • return_points – Boolean to return corresponding points or not.

Returns:

minimal distance.

planeface_intersections(planeface)[source]#

Calculates the intersections between two plane faces.

Parameters:

planeface – the other Plane Face 3D to verify intersections with Plane Face 3D.

Returns:

list of intersecting wires.

planeface_minimum_distance(planeface: PlaneFace3D, return_points: bool = False)[source]#

Gets the minimal distance from another PlaneFace3D.

Parameters:
  • planeface (PlaneFace3D) – Another PlaneFace3D instance to calculate the minimum distance.

  • return_points (bool, optional) – If True, returns a tuple containing the two points that give the minimum distance.

Returns:

If return_points is False, returns the minimum distance between the two plane faces. If return_points is True, returns a tuple containing the two points that give the minimum distance.

Return type:

float or tuple(float, Tuple3D, Tuple3D)

point_distance(point, return_other_point=False)[source]#

Calculates the distance from a plane face and a point.

Parameters:
  • point – point to verify.

  • return_other_point – bool to decide if corresponding point on face should be returned.

Returns:

distance to planeface3D.

project_faces(faces)[source]#

Divide self based on the faces outer, and inner contours.

Parameters:

faces (TYPE) – DESCRIPTION

Returns:

DESCRIPTION

Return type:

TYPE

toroidalface_intersections(toroidal_face)[source]#

Calculates the intersections between a plane face 3D and Conical Face3D.

Parameters:

toroidal_face – the Toroidal Face 3D to verify intersections with Plane Face 3D.

Returns:

list of intersecting wires.

triangle_intersections(triangleface)[source]#

Gets the intersections between a Plane Face3D and a Triangle3D.

Parameters:

triangleface – the other triangle face.

Returns:

static update_faces_with_divided_faces(divided_faces, face2_2, used, list_faces)[source]#

Update divided faces from project_faces.

class volmdlr.faces.RevolutionFace3D(surface3d: RevolutionSurface3D, surface2d: Surface2D, name: str = '')[source]#

Bases: Face3D

A 3D face with a ruled surface.

This class represents a 3D face with a ruled surface, which is a surface formed by straight lines connecting two input curves. It is a subclass of the Face3D class and inherits all of its attributes and methods.

Parameters:
  • surface3d (RuledSurface3D) – The 3D ruled surface of the face.

  • surface2d (Surface2D) – The 2D projection of the face onto the parametric domain (u, v).

  • name (str) – The name of the face.

classmethod from_surface_rectangular_cut(revolution_surface3d, x1: float, x2: float, y1: float, y2: float, name: str = '')[source]#

Cut a rectangular piece of the RevolutionSurface3D object and return a RevolutionFace3D object.

get_face_polygons()[source]#

Get face polygons.

grid_points(grid_size, polygon_data=None)[source]#

Parametric tesselation points.

grid_size()[source]#

Specifies an adapted size of the discretization grid used in face triangulation.

min_x_density = 50#
min_y_density = 1#
triangulation()[source]#

Triangulates the face.

class volmdlr.faces.RuledFace3D(surface3d: RuledSurface3D, surface2d: Surface2D, name: str = '')[source]#

Bases: Face3D

A 3D face with a ruled surface.

This class represents a 3D face with a ruled surface, which is a surface formed by straight lines connecting two input curves. It is a subclass of the Face3D class and inherits all of its attributes and methods.

Parameters:
  • surface3d (RuledSurface3D) – The 3D ruled surface of the face.

  • surface2d (Surface2D) – The 2D projection of the face onto the parametric domain (u, v).

  • name (str) – The name of the face.

  • color (tuple) – The color of the face.

classmethod from_surface_rectangular_cut(ruled_surface3d, x1: float = 0.0, x2: float = 1.0, y1: float = 0.0, y2: float = 1.0, name: str = '')[source]#

Cut a rectangular piece of the RuledSurface3D object and return a RuledFace3D object.

get_bounding_box()[source]#

General method to get the bounding box.

To be enhanced by restricting wires to cut

grid_size()[source]#

Specifies an adapted size of the discretization grid used in face triangulation.

min_x_density = 50#
min_y_density = 1#
triangulation_lines(angle_resolution=10)[source]#

Specifies the number of subdivision when using triangulation by lines. (Old triangulation).

class volmdlr.faces.SphericalFace3D(surface3d: SphericalSurface3D, surface2d: Surface2D, name: str = '')[source]#

Bases: PeriodicalFaceMixin, Face3D

Defines a SpehericalFace3D class.

Parameters:
  • surface3d (SphericalSurface3D.) – a spherical surface 3d.

  • surface2d (Surface2D.) – a 2d surface to define the spherical face.

classmethod from_contours3d_and_rectangular_cut(surface3d, contours: List[Contour3D], point: Point3D, name: str = '')[source]#

Face defined by contours and a point indicating the portion of the parametric domain that should be considered.

Parameters:
  • surface3d – surface 3d.

  • contours (List[volmdlr.wires.Contour3D]) – Cone, contour base.

  • name – the name to inject in the new face

Returns:

Spherical face.

Return type:

SphericalFace3D

classmethod from_surface_rectangular_cut(spherical_surface, theta1: float = 0.0, theta2: float = 6.283185307179586, phi1: float = -1.5707963267948966, phi2: float = 1.5707963267948966, name='')[source]#

Cut a rectangular piece of the SphericalSurface3D object and return a SphericalFace3D object.

grid_points(grid_size, polygon_data=None)[source]#

Parametric tesselation points.

grid_size()[source]#

Specifies an adapted size of the discretization grid used to calculate the grid_points.

For the sphere the grid size is given in angle resolution in both theta and phi direction.

min_x_density = 5#
min_y_density = 5#
triangulation_lines(angle_resolution=7)[source]#

Specifies the number of subdivision when using triangulation by lines. (Old triangulation).

class volmdlr.faces.ToroidalFace3D(surface3d: ToroidalSurface3D, surface2d: Surface2D, name: str = '')[source]#

Bases: PeriodicalFaceMixin, Face3D

Defines a ToroidalFace3D class.

Parameters:
  • surface3d (ToroidalSurface3D.) – a toroidal surface 3d.

  • surface2d (Surface2D.) – a 2d surface to define the toroidal face.

Example:

contours 2d is rectangular and will create a classic tore with x:2*pi, y:2*pi x is for exterior, and y for the circle to revolute points = [pi, 2*pi] for a half tore

copy(deep=True, memo=None)[source]#

Returns a copy of the ToroidalFace3D.

face_tolerance = 0.001#
classmethod from_surface_rectangular_cut(toroidal_surface3d, theta1: float = 0.0, theta2: float = 6.283185307179586, phi1: float = 0.0, phi2: float = 6.283185307179586, name: str = '')[source]#

Cut a rectangular piece of the ToroidalSurface3D object and return a ToroidalFace3D object.

Parameters:
  • toroidal_surface3d – surface 3d,

  • theta1 – Start angle of the cut in theta direction.

  • theta2 – End angle of the cut in theta direction.

  • phi1 – Start angle of the cut in phi direction.

  • phi2 – End angle of the cut in phi direction.

  • name – (optional) Name of the returned ToroidalFace3D object. Defaults to “”.

Returns:

A ToroidalFace3D object created by cutting the ToroidalSurface3D object.

Return type:

ToroidalFace3D

grid_size()[source]#

Specifies an adapted size of the discretization grid used in face triangulation.

min_x_density = 5#
min_y_density = 1#
neutral_fiber()[source]#

Returns the faces’ neutral fiber.

planeface_intersections(planeface: PlaneFace3D)[source]#

Gets intersections between a Toroidal Face 3D and a Plane Face 3D.

Parameters:

planeface – other plane face.

Returns:

intersections.

static points_resolution(line, pos, resolution)[source]#

Legacy?.

triangulation_lines(angle_resolution=5)[source]#

Specifies the number of subdivision when using triangulation by lines. (Old triangulation).

class volmdlr.faces.Triangle3D(point1: Point3D, point2: Point3D, point3: Point3D, alpha=1, color=None, name: str = '')[source]#

Bases: PlaneFace3D

Defines a Triangle3D class.

Parameters:
  • point1 (volmdlr.Point3D.) – The first point.

  • point2 (volmdlr.Point3D.) – The second point.

  • point3 (volmdlr.Point3D.) – The third point.

area() float[source]#

Calculates the area for the Triangle3D.

Returns:

area triangle.

Return type:

float.

Formula explained here: https://www.triangle-calculator.com/?what=vc

copy(deep=True, memo=None)[source]#

Returns a copy of the Triangle3D.

classmethod dict_to_object(dict_, *args, **kwargs)[source]#

Create a Triangle3D object from a dictionary representation.

This class method takes a dictionary containing the necessary data for creating a Triangle3D object and returns an instance of the Triangle3D class. It expects the dictionary to have the following keys:

Parameters:
  • cls – The Triangle3D class itself (automatically passed).

  • dict – A dictionary containing the required data for object creation.

  • args – Additional positional arguments (if any).

  • kwargs – Additional keyword arguments (if any).

Returns:

Triangle3D: An instance of the Triangle3D class created from the provided dictionary.

frame_mapping(frame: Frame3D, side: str)[source]#

Changes frame_mapping and return a new Triangle3D.

Parameters:
  • frame – frame used.

  • side – ‘old’ or ‘new’.

get_bounding_box()[source]#

General method to get the bounding box.

static get_subdescription_points(new_points, resolution, max_length)[source]#

Gets sub-description points.

height()[source]#

Gets Triangle height.

middle()[source]#

Gets the middle point of the face: center of gravity.

normal()[source]#

Get the normal vector to the face.

Returns#

normal to the face

rotation(center: Point3D, axis: Vector3D, angle: float)[source]#

Triangle3D rotation.

Parameters:
  • center – rotation center.

  • axis – rotation axis.

  • angle – angle rotation.

Returns:

a new rotated Triangle3D.

subdescription(resolution=0.01)[source]#

Returns a list of Point3D with resolution as max between Point3D.

subdescription_to_triangles(resolution=0.01)[source]#

Returns a list of Triangle3D with resolution as max length of sub triangles side.

property surface2d#

Boundary representation of the face.

property surface3d#

Gets the plane on which the triangle is contained.

to_dict(*args, **kwargs)[source]#

Creates a Dictionary with the object’s instance attributes.

translation(offset: Vector3D)[source]#

Plane3D translation.

Parameters:

offset – translation vector.

Returns:

A new translated Plane3D.

triangle_minimum_distance(triangle_face, return_points=False)[source]#

Gets the minimum distance between two triangle.

triangulation()[source]#

Computes the triangulation of the Triangle3D, basically returns itself.

volmdlr.faces.octree_decomposition(bbox, faces)[source]#

Decomposes a list of faces into eight Bounding boxes subdivided boxes.

volmdlr.faces.octree_face_decomposition(face)[source]#

Decomposes the face discretization triangle faces inside eight boxes from a bounding box octree structure.

Parameters:

face – given face.

Returns:

returns a dictionary containing bounding boxes as keys and as values, a list of faces

inside that bounding box.

volmdlr.faces.parametric_face_inside(face1, face2, abs_tol: float = 1e-06)[source]#

Verifies if a face2 is inside face1.

It returns True if face2 is inside or False if the opposite.