Befehlszeilenprogramm zum Ausführen von CSG / Booleschen Operationen

Ich suche nach einem Befehlszeilenprogramm, das konstruktive Volumenkörpergeometrie ausführen kann, auch bekannt als Boolesche Operationen an Netzen. Ich möchte es so verwenden:

intersect a.stl b.stl result.stl

Blender kann diese Operation ausführen , jedoch nicht über die Befehlszeile.

MeshLab kann dies über die Befehlszeile tun, aber leider wird das Netz neu abgetastet, was die Dateigröße erhöht und das Netz verschwommen aussehen lässt. Bei der Implementierung in Blender ist dies nicht der Fall.

Willkommen! Kommandozeile von welchem ​​Betriebssystem?
Ich bin auf Windows. Wenn es eine Lösung für Linux gibt, wäre ich auch interessiert.

Antworten (1)

Es stellt sich heraus, dass Sie Blender von der Befehlszeile aus ausführen können:

blender -b -P intersect.py -- a.stl b.stl result.stl

Und das ist das Python-Skript intersect.py:

import bpy
import sys

index = sys.argv.index("--")
file_a = sys.argv[index + 1]
file_b = sys.argv[index + 2]
file_out = sys.argv[index + 3]

bpy.ops.object.select_all(action = 'SELECT')
bpy.ops.object.delete()

bpy.ops.import_mesh.stl(filepath = file_a)
obj_a = bpy.context.selected_objects[0]

bpy.ops.import_mesh.stl(filepath = file_b)
obj_b = bpy.context.selected_objects[0]

bpy.context.scene.objects.active = obj_a
bpy.ops.object.modifier_add(type = 'BOOLEAN')
bpy.context.object.modifiers[0].object = obj_b
bpy.ops.object.modifier_apply(modifier='Boolean')

bpy.context.scene.objects.active = obj_b
bpy.ops.object.delete()

bpy.context.scene.objects.active = obj_a
bpy.ops.export_mesh.stl(filepath = file_out)