This is a pre-production deployment of Warehouse, however changes made here WILL affect the production instance of PyPI.
Latest Version Dependencies status unknown Test status unknown Test coverage unknown
Project Description

Python/Cython wrapper of Marco Attene’s wonderful, award-winning MeshFix software. This module brings the speed of C++ with the portability and ease of installation of Python.

This software takes as input a polygon mesh and produces a copy of the input where all the occurrences of a specific set of “defects” are corrected. MeshFix has been designed to correct typical flaws present in RAW DIGITIZED mesh models, thus it might fail or produce coarse results if run on other sorts of input meshes (e.g. tessellated CAD models).

The input is assumed to represent a single CLOSED SOLID OBJECT, thus the output will be a SINGLE WATERTIGHT TRIANGLE MESH bounding a polyhedron. All the singularities, self-intersections and degenerate elements are removed from the input, while regions of the surface without defects are left unmodified.


From PyPI

pip install pymeshfix

From source at GitHub

git clone --recursive
cd pymeshfix
pip install .


Required: numpy, cython. Optional: vtk

Minimum requirements are numpy and cython. To enable plotting and several other features, vtk 5.0 or greater must be installed with Python bindings. VTK can be installed through a variety of methods. Please see


Test installation with the following from Python

from pymeshfix import Tests

# Test of pymeshfix without VTK module

# Performs same mesh repair while leveraging VTK's plotting/mesh loading

Easy Example

This example uses the cython wrapper directly. No bells or whistles here.

from pymeshfix import _meshfix

# Read mesh from infile and output cleaned mesh to outfile
_meshfix.CleanFromFile(infile, outfile)

This example assumes the user has vertex and faces arrays in Python. Again, no bells or whistles.

from pymeshfix import _meshfix

# Generate vertex and face arrays of cleaned mesh
vclean, fclean = CleanFromVF(v, f) # v and f are numpy arrays or python lists

Fuller Examples with and without VTK

One of the main reasons to bring MeshFix to Python is to allow the library to communicate to other python programs without having to use the hard drive. Therefore, this example assumes that you have a mesh within memory and wish to repair it using MeshFix.

#Load module
from pymeshfix import meshfix

# Create object
mfobj = meshfix.MeshFixClass()
mfobj.LoadVF(v, f) # from arrays or lists
#mfobj.LoadFile(filename) # or from file
#mfobj.LoadMesh(vtkpoly) # or from a vtk.vtkPolyData object

# Plot input (if vtk is available)

# Repair input mesh

# Generate vtk output mesh\
mfobj.GenFixedMesh() # creates mfobj.grid

# Or, access the resulting arrays directly from the object
mfobj.vclean # numpy np.float array
mfobj.fclean # numpy np.int32 array

# View the repaired mesh

# Save the mesh

Alternatively, the user could use the cython wrapper of MeshFix directly if vtk is unavailable or they wish to have more control over the cleaning algorthim.

from pymeshfix import _meshfix

# Create TMesh object
tin = _meshfix.PyTMesh()

# tin.LoadArray(v, f) # can also read arrays from memory

# Attempt to join nearby components
# tin.JoinClosestComponents()

# Fill holes
print('There are {:d} boundaries'.format(tin.Boundaries())

# Clean (removes self intersections)
tin.MeshClean(max_iters=10, inner_loops=3)

# Check mesh for holes again
print('There are {:d} boundaries'.format(tin.Boundaries())

# Clean again if necessary...

# Output mesh
# vclean, fclean = tin.ReturnArrays() # returns numpy arrays

Algorithim and Citation Policy

To better understand how the algorithm works, please refer to the following paper:

M. Attene. A lightweight approach to repairing digitized polygon meshes. The Visual Computer, 2010. (c) Springer. DOI: 10.1007/s00371-010-0416-3

This software is based on ideas published therein. If you use MeshFix for research purposes you should cite the above paper in your published results. MeshFix cannot be used for commercial purposes without a proper licensing contract.

Release History

Release History


This version

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

Download Files

Download Files

TODO: Brief introduction on what you do with files - including link to relevant help section.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
pymeshfix-0.10-cp27-cp27m-win_amd64.whl (1.4 MB) Copy SHA256 Checksum SHA256 2.7 Wheel Sep 21, 2016
pymeshfix-0.10-cp35-cp35m-win_amd64.whl (1.3 MB) Copy SHA256 Checksum SHA256 3.5 Wheel Sep 21, 2016
pymeshfix-0.10.tar.gz (1.4 MB) Copy SHA256 Checksum SHA256 Source Sep 21, 2016

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS HPE HPE Development Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting