27 lines
1006 B
Python
27 lines
1006 B
Python
import sys
|
|
|
|
import bpy
|
|
|
|
|
|
def add_mesh(name, vertices, faces):
|
|
mesh = bpy.data.meshes.new(name)
|
|
mesh.from_pydata(vertices, [], faces)
|
|
mesh.update()
|
|
obj = bpy.data.objects.new(name + "Object", mesh)
|
|
bpy.context.collection.objects.link(obj)
|
|
return obj
|
|
|
|
|
|
def main(output_path: str) -> None:
|
|
bpy.ops.wm.read_factory_settings(use_empty=True)
|
|
add_mesh("OpenQuad", [(-1, -1, 0), (1, -1, 0), (1, 1, 0), (-1, 1, 0)], [(0, 1, 2, 3)])
|
|
add_mesh("OpenNgon", [(0, 1, 0), (1, 0.3, 0), (0.6, -1, 0), (-0.6, -1, 0), (-1, 0.3, 0)], [(0, 1, 2, 3, 4)])
|
|
add_mesh("NonManifold", [(0, 0, 0), (1, 0, 0), (0, 1, 0), (0, 0, 1), (0, -1, 0)], [(0, 1, 2), (0, 3, 1), (0, 1, 4)])
|
|
bpy.ops.wm.save_as_mainfile(filepath=output_path, compress=True)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
if "--" not in sys.argv or len(sys.argv) <= sys.argv.index("--") + 1:
|
|
raise SystemExit("usage: blender -b --python generate-topology-fixture.py -- output.blend")
|
|
main(sys.argv[sys.argv.index("--") + 1])
|