diff --git a/conanfile.py b/conanfile.py index 044ff34..2db0e85 100644 --- a/conanfile.py +++ b/conanfile.py @@ -27,3 +27,4 @@ class SDL3CppConan(ConanFile): self.requires("cli11/2.6.0") self.requires("bullet3/3.25") self.requires("box2d/3.1.1") + self.requires("assimp/6.0.2") diff --git a/scripts/generate_cube_stl.py b/scripts/generate_cube_stl.py new file mode 100644 index 0000000..80c67c0 --- /dev/null +++ b/scripts/generate_cube_stl.py @@ -0,0 +1,45 @@ +#!/usr/bin/env python3 +"""Produce a cube STL with CadQuery for the Lua scene to load.""" + +from __future__ import annotations + +import argparse +from pathlib import Path + +import cadquery as cq +from cadquery import exporters + + +def parse_args() -> argparse.Namespace: + parser = argparse.ArgumentParser(description="Generate a simple cube STL.") + parser.add_argument( + "--size", + type=float, + default=2.0, + help="Edge length of the cube in model units (default: 2.0 to match Lua cube bounds).", + ) + parser.add_argument( + "-o", + "--output", + type=Path, + default=Path(__file__).parent / "models" / "cube.stl", + help="Path to write the ASCII STL file.", + ) + return parser.parse_args() + + +def main() -> None: + args = parse_args() + args.output.parent.mkdir(parents=True, exist_ok=True) + cube = cq.Workplane("XY").box(args.size, args.size, args.size) + exporters.export( + cube, + str(args.output), + exportType=exporters.ExportTypes.STL, + opt={"ascii": True}, + ) + print(f"Wrote cube STL to {args.output}") + + +if __name__ == "__main__": + main() diff --git a/scripts/models/cube.stl b/scripts/models/cube.stl new file mode 100644 index 0000000..0ac6874 --- /dev/null +++ b/scripts/models/cube.stl @@ -0,0 +1,86 @@ +solid + facet normal -1.000000e+00 0.000000e+00 0.000000e+00 + outer loop + vertex -1.000000e+00 -1.000000e+00 1.000000e+00 + vertex -1.000000e+00 1.000000e+00 -1.000000e+00 + vertex -1.000000e+00 -1.000000e+00 -1.000000e+00 + endloop + endfacet + facet normal -1.000000e+00 0.000000e+00 0.000000e+00 + outer loop + vertex -1.000000e+00 -1.000000e+00 1.000000e+00 + vertex -1.000000e+00 1.000000e+00 1.000000e+00 + vertex -1.000000e+00 1.000000e+00 -1.000000e+00 + endloop + endfacet + facet normal 1.000000e+00 0.000000e+00 0.000000e+00 + outer loop + vertex 1.000000e+00 -1.000000e+00 1.000000e+00 + vertex 1.000000e+00 -1.000000e+00 -1.000000e+00 + vertex 1.000000e+00 1.000000e+00 -1.000000e+00 + endloop + endfacet + facet normal 1.000000e+00 -0.000000e+00 0.000000e+00 + outer loop + vertex 1.000000e+00 -1.000000e+00 1.000000e+00 + vertex 1.000000e+00 1.000000e+00 -1.000000e+00 + vertex 1.000000e+00 1.000000e+00 1.000000e+00 + endloop + endfacet + facet normal 0.000000e+00 -1.000000e+00 -0.000000e+00 + outer loop + vertex 1.000000e+00 -1.000000e+00 1.000000e+00 + vertex -1.000000e+00 -1.000000e+00 -1.000000e+00 + vertex 1.000000e+00 -1.000000e+00 -1.000000e+00 + endloop + endfacet + facet normal -0.000000e+00 -1.000000e+00 0.000000e+00 + outer loop + vertex 1.000000e+00 -1.000000e+00 1.000000e+00 + vertex -1.000000e+00 -1.000000e+00 1.000000e+00 + vertex -1.000000e+00 -1.000000e+00 -1.000000e+00 + endloop + endfacet + facet normal 0.000000e+00 1.000000e+00 0.000000e+00 + outer loop + vertex 1.000000e+00 1.000000e+00 1.000000e+00 + vertex 1.000000e+00 1.000000e+00 -1.000000e+00 + vertex -1.000000e+00 1.000000e+00 -1.000000e+00 + endloop + endfacet + facet normal 0.000000e+00 1.000000e+00 0.000000e+00 + outer loop + vertex 1.000000e+00 1.000000e+00 1.000000e+00 + vertex -1.000000e+00 1.000000e+00 -1.000000e+00 + vertex -1.000000e+00 1.000000e+00 1.000000e+00 + endloop + endfacet + facet normal -0.000000e+00 0.000000e+00 -1.000000e+00 + outer loop + vertex 1.000000e+00 1.000000e+00 -1.000000e+00 + vertex -1.000000e+00 -1.000000e+00 -1.000000e+00 + vertex -1.000000e+00 1.000000e+00 -1.000000e+00 + endloop + endfacet + facet normal 0.000000e+00 -0.000000e+00 -1.000000e+00 + outer loop + vertex 1.000000e+00 1.000000e+00 -1.000000e+00 + vertex 1.000000e+00 -1.000000e+00 -1.000000e+00 + vertex -1.000000e+00 -1.000000e+00 -1.000000e+00 + endloop + endfacet + facet normal 0.000000e+00 0.000000e+00 1.000000e+00 + outer loop + vertex 1.000000e+00 1.000000e+00 1.000000e+00 + vertex -1.000000e+00 1.000000e+00 1.000000e+00 + vertex -1.000000e+00 -1.000000e+00 1.000000e+00 + endloop + endfacet + facet normal 0.000000e+00 0.000000e+00 1.000000e+00 + outer loop + vertex 1.000000e+00 1.000000e+00 1.000000e+00 + vertex -1.000000e+00 -1.000000e+00 1.000000e+00 + vertex 1.000000e+00 -1.000000e+00 1.000000e+00 + endloop + endfacet +endsolid