steady-rans-surrogates / code /ezflow_v3 /app /shape_generator.py
BlidReview's picture
weights, code, eval script
bdce880 verified
Raw
History Blame Contribute Delete
1.11 kB
"""Procedural watertight STL shapes (trimesh) for the v2 app. Geometry-neutral."""
from __future__ import annotations
from pathlib import Path
import trimesh
def _save(mesh, out_path: Path):
mesh.vertices -= mesh.bounds.mean(axis=0) # center
out_path.parent.mkdir(parents=True, exist_ok=True)
mesh.export(str(out_path))
def create_cylinder(radius, height, out_path):
_save(trimesh.creation.cylinder(radius=radius, height=height), out_path)
def create_sphere(radius, out_path):
_save(trimesh.creation.icosphere(subdivisions=3, radius=radius), out_path)
def create_box(length, width, height, out_path):
_save(trimesh.creation.box(extents=[length, width, height]), out_path)
def create_capsule(height, radius, out_path):
_save(trimesh.creation.capsule(height=height, radius=radius), out_path)
def create_cone(radius, height, out_path):
_save(trimesh.creation.cone(radius=radius, height=height), out_path)
def create_torus(major_radius, minor_radius, out_path):
_save(trimesh.creation.torus(major_radius=major_radius, minor_radius=minor_radius), out_path)