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.
- class trimesh.path.Path2D(entities=None, vertices=None, metadata=None, process=True, colors=None, **kwargs)
Bases:
Path
Hold multiple vector curves (lines, arcs, splines, etc) in 3D.
- 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 in-place.
- property area
Return the area of the polygons interior.
- Returns
area – Total area of polygons minus interiors
- Return type
float
- property body_count
Returns a count of the number of unconnected polygons that may contain other curves but aren’t contained themselves.
- Returns
body_count – Number of unconnected independent polygons.
- Return type
int
- 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
Undirected graph object of polygon enclosure.
- Returns
enclosure – Enclosure graph of self.polygons by index.
- Return type
networkx.Graph
- property enclosure_directed
Directed graph of polygon enclosure.
- Returns
enclosure_directed – Directed graph: child nodes are fully contained by their parent node.
- Return type
networkx.DiGraph
- property enclosure_shell
A dictionary of path indexes which are ‘shell’ paths, and values of ‘hole’ paths.
- Returns
corresponding – {index of self.paths of shell : [indexes of holes]}
- Return type
dict
- 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 – Unique identifier
- Return type
(5,) float
- property identifier_hash
Return a hash of the identifier.
- Returns
hashed – Hashed identifier.
- Return type
str
- property identifier_md5
- 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 – Indexes of self.paths self.polygons_closed
which are valid polygons.
- Return type
(n,) bool
- 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.
- Parameters
show (bool) – Open a window immediately or not
annotations (bool) – Call an entities custom plot function.
color (str) – Override entity colors and make them all this color.
- 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 or (2,) float) – Length(s) in model space of pixel edges
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 – Rasterized version of closed regions.
- 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 – List of indexes
- Return type
(n,) int
- 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 b-splines.
- 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 self.metadata that transform will be used.
- Returns
path_3D – 3D version of current path
- Return type
- 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:
Path
Hold multiple vector curves (lines, arcs, splines, etc) in 3D.
- 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