trimesh.path¶
 trimesh.path.exchange
 trimesh.path.arc
 trimesh.path.creation
 trimesh.path.curve
 trimesh.path.entities
 trimesh.path.intersections
 trimesh.path.packing
 trimesh.path.path
 trimesh.path.polygons
 trimesh.path.raster
 trimesh.path.repair
 trimesh.path.segments
 trimesh.path.simplify
 trimesh.path.traversal
 trimesh.path.util
trimesh.path¶
Handle 2D and 3D vector paths such as those contained in an SVG or DXF file.
Classes:

Hold multiple vector curves (lines, arcs, splines, etc) in 3D. 

Hold multiple vector curves (lines, arcs, splines, etc) in 3D. 

class
trimesh.path.
Path2D
(entities=None, vertices=None, metadata=None, process=True, colors=None, **kwargs)¶ Bases:
trimesh.path.path.Path
Hold multiple vector curves (lines, arcs, splines, etc) in 3D.
Methods:
Transform the current path so that its OBB is axis aligned and OBB center is at the origin.
apply_scale
(scale)Apply a 2D scale to the current Path2D.
connected_paths
(path_id[, include_self])Given an index of self.paths find other paths which overlap with that path.
extrude
(height, **kwargs)Extrude the current 2D path into a 3D mesh.
medial_axis
([resolution, clip])Find the approximate medial axis based on a voronoi diagram of evenly spaced points on the boundary of the polygon.
plot_discrete
([show, annotations])Plot the closed curves of the path.
plot_entities
([show, annotations, color])Plot the entities of the path, with no notion of topology
rasterize
(pitch, origin[, resolution, fill, …])Rasterize a Path2D object into a boolean image (“mode 1”).
sample
(count, **kwargs)Use rejection sampling to generate random points inside a polygon.
show
([annotations])Plot the current Path2D object using matplotlib.
simplify
(**kwargs)Return a version of the current path with colinear segments merged, and circles entities replacing segmented circular paths.
simplify_spline
([smooth, verbose])Convert paths into bsplines.
split
(**kwargs)If the current Path2D consists of n ‘root’ curves, split them into a list of n Path2D objects
to_3D
([transform])Convert 2D path to 3D path on the XY plane.
triangulate
(**kwargs)Create a region aware triangulation of the 2D path.
Attributes:
Return the area of the polygons interior.
Networkx Graph object of polygon enclosure.
Networkx DiGraph of polygon enclosure
A dictionary of path indexes which are ‘shell’ paths, and values of ‘hole’ paths.
A unique identifier for the path.
Return an MD5 of the identifier
Get a transform that centers and aligns the OBB of the referenced vertices with the XY axis.
returns: path_valid – which are valid polygons :rtype: (n,) bool, indexes of self.paths self.polygons_closed
Cycles in the vertex graph, as shapely.geometry.Polygons.
A list of shapely.geometry.Polygon objects with interiors created by checking which closed polygons enclose which other polygons.
Which indexes of self.paths/self.polygons_closed are root curves.

apply_obb
()¶ Transform the current path so that its OBB is axis aligned and OBB center is at the origin.
 Returns
obb – Homogeneous transformation matrix
 Return type
(3, 3) float

apply_scale
(scale)¶ Apply a 2D scale to the current Path2D.
 Parameters
scale (float or (2,) float) – Scale to apply inplace.

property
area
¶ Return the area of the polygons interior.
 Returns
area
 Return type
float, total area of polygons minus interiors

property
body_count
¶

connected_paths
(path_id, include_self=False)¶ Given an index of self.paths find other paths which overlap with that path.
 Parameters
path_id (int) – Index of self.paths
include_self (bool) – Should the result include path_id or not
 Returns
path_ids – Indexes of self.paths that overlap input path_id
 Return type
(n, ) int

property
enclosure
¶ Networkx Graph object of polygon enclosure.

property
enclosure_directed
¶ Networkx DiGraph of polygon enclosure

property
enclosure_shell
¶ A dictionary of path indexes which are ‘shell’ paths, and values of ‘hole’ paths.
 Returns
corresponding
 Return type
dict, {index of self.paths of shell : [indexes of holes]}

extrude
(height, **kwargs)¶ Extrude the current 2D path into a 3D mesh.
 Parameters
height (float, how far to extrude the profile) –
kwargs (passed directly to meshpy.triangle.build:) –
 triangle.build(mesh_info,
verbose=False, refinement_func=None, attributes=False, volume_constraints=True, max_volume=None, allow_boundary_steiner=True, allow_volume_steiner=True, quality_meshing=True, generate_edges=None, generate_faces=False, min_angle=None)
 Returns
mesh
 Return type
trimesh object representing extruded polygon

property
identifier
¶ A unique identifier for the path.
 Returns
identifier
 Return type
(5,) float, unique identifier

property
identifier_md5
¶ Return an MD5 of the identifier

medial_axis
(resolution=None, clip=None)¶ Find the approximate medial axis based on a voronoi diagram of evenly spaced points on the boundary of the polygon.
 Parameters
resolution (None or float) – Distance between each sample on the polygon boundary
clip (None, or (2,) float) – Min, max number of samples
 Returns
medial – Contains only medial axis of Path
 Return type
Path2D object

property
obb
¶ Get a transform that centers and aligns the OBB of the referenced vertices with the XY axis.
 Returns
obb – Homogeneous transformation matrix
 Return type
(3, 3) float

property
path_valid
¶ returns: path_valid – which are valid polygons :rtype: (n,) bool, indexes of self.paths self.polygons_closed

plot_discrete
(show=False, annotations=True)¶ Plot the closed curves of the path.

plot_entities
(show=False, annotations=True, color=None)¶ Plot the entities of the path, with no notion of topology

property
polygons_closed
¶ Cycles in the vertex graph, as shapely.geometry.Polygons. These are polygon objects for every closed circuit, with no notion of whether a polygon is a hole or an area. Every polygon in this list will have an exterior, but NO interiors.
 Returns
polygons_closed
 Return type
(n,) list of shapely.geometry.Polygon objects

property
polygons_full
¶ A list of shapely.geometry.Polygon objects with interiors created by checking which closed polygons enclose which other polygons.
 Returns
full – Polygons containing interiors
 Return type
(len(self.root),) shapely.geometry.Polygon

rasterize
(pitch, origin, resolution=None, fill=True, width=None, **kwargs)¶ Rasterize a Path2D object into a boolean image (“mode 1”).
 Parameters
pitch (float, length in model space of a pixel edge) –
origin ((2,) float, origin position in model space) –
resolution ((2,) int, resolution in pixel space) –
fill (bool, if True will return closed regions as filled) –
width (int, if not None will draw outline this wide (pixels)) –
 Returns
raster
 Return type
PIL.Image object, mode 1

property
root
¶ Which indexes of self.paths/self.polygons_closed are root curves. Also known as ‘shell’ or ‘exterior.
 Returns
root
 Return type
(n,) int, list of indexes

sample
(count, **kwargs)¶ Use rejection sampling to generate random points inside a polygon.
 Parameters
count (int) – Number of points to return If there are multiple bodies, there will be up to count * bodies points returned
factor (float) – How many points to test per loop IE, count * factor
max_iter (int,) – Maximum number of intersection loops to run, total points sampled is count * factor * max_iter
 Returns
hit – Random points inside polygon
 Return type
(n, 2) float

show
(annotations=True)¶ Plot the current Path2D object using matplotlib.

simplify
(**kwargs)¶ Return a version of the current path with colinear segments merged, and circles entities replacing segmented circular paths.
 Returns
simplified
 Return type
Path2D object

simplify_spline
(smooth=0.0002, verbose=False)¶ Convert paths into bsplines.
 Parameters
smooth (float) – How much the spline should smooth the curve
verbose (bool) – Print detailed log messages
 Returns
simplified – Discrete curves replaced with splines
 Return type

split
(**kwargs)¶ If the current Path2D consists of n ‘root’ curves, split them into a list of n Path2D objects
 Returns
split – Each connected region and interiors
 Return type
(n,) list of Path2D objects

to_3D
(transform=None)¶ Convert 2D path to 3D path on the XY plane.
 Parameters
transform ((4, 4) float) – If passed, will transform vertices. If not passed and ‘to_3D’ is in metadata that transform will be used.
 Returns
path_3D
 Return type
Path3D version of current path

triangulate
(**kwargs)¶ Create a region aware triangulation of the 2D path.
 Parameters
**kwargs (dict) – Passed to trimesh.creation.triangulate_polygon
 Returns
vertices ((n, 2) float) – 2D vertices of triangulation
faces ((n, 3) int) – Indexes of vertices for triangles


class
trimesh.path.
Path3D
(entities=None, vertices=None, metadata=None, process=True, colors=None, **kwargs)¶ Bases:
trimesh.path.path.Path
Hold multiple vector curves (lines, arcs, splines, etc) in 3D.
Methods:
show
(**kwargs)Show the current Path3D object.
to_planar
([to_2D, normal, check])Check to see if current vectors are all coplanar.

show
(**kwargs)¶ Show the current Path3D object.

to_planar
(to_2D=None, normal=None, check=True)¶ Check to see if current vectors are all coplanar.
If they are, return a Path2D and a transform which will transform the 2D representation back into 3 dimensions
 Parameters
to_2D ((4,4) float) – Homogeneous transformation matrix to apply, If not passed a plane will be fitted to vertices.
normal ((3,) float, or None) – Approximate normal of direction of plane If to_2D is not specified sign will be applied to fit plane normal
check (bool) – If True: Raise a ValueError if points aren’t coplanar
 Returns
planar (trimesh.path.Path2D) – Current path transformed onto plane
to_3D ((4,4) float) – Homeogenous transformations to move planar back into 3D space
