Export a surface to a STL(Stereolithography) file.
Functions in this script (write, tri_write) can export 3d surface to a STL (Stereolithography) format file. This is the python version of surf2stl.m in MATLAB (or Octave).
Exported files can be imported in various 3d software tools (like Blender, Meshlab, etc.)
clone this repository
git clone https://github.com/asahidari/surf2stl-python
Write python script like this:
import numpy as np
import surf2stl
x = np.linspace(-6, 6, 30)
y = np.linspace(-6, 6, 30)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X ** 2 + Y ** 2))
surf2stl.write('3d-sinusoidal.stl', X, Y, Z)
Or like this:
import numpy as np
from scipy.spatial import Delaunay
import surf2stl
u = np.linspace(0, 2.0 * np.pi, endpoint=True, num=50)
v = np.linspace(-0.5, 0.5, endpoint=True, num=10)
u, v = np.meshgrid(u, v)
u, v = u.flatten(), v.flatten()
x = (1 + 0.5 * v * np.cos(u / 2.0)) * np.cos(u)
y = (1 + 0.5 * v * np.cos(u / 2.0)) * np.sin(u)
z = 0.5 * v * np.sin(u / 2.0)
delaunay_tri = Delaunay(np.array([u, v]).T)
surf2stl.tri_write('mobius.stl', x, y, z, delaunay_tri)
If you use jupyter notebook, 'Surf2stl-python_example.ipynb' shows the examples with 3d graphs in matplotlib.
- Python 3
- numpy
- scipy
- matplotlib (to draw graph in python)
asahidari
MIT