import pathlib import shutil import subprocess import tempfile import numpy as np def stl_from_1d(data, output, scale=[1, 1, 1], translate=[0, 0, 0]): with tempfile.TemporaryDirectory() as tmppath: tmpdir = pathlib.Path(tmppath) np.savetxt(tmpdir.joinpath("data.dat"), np.stack((data, data))) with open(tmpdir.joinpath("scad"), "wt") as scad: scad.write( f"mirror([1, 0, 0])" f"translate({translate})" f"scale({scale})" f"""surface("data.dat");""" ) subprocess.run(("openscad", "scad", "-o", "data.stl"), cwd=tmpdir) shutil.copy2(tmpdir.joinpath("data.stl"), output)