import os, sys import FreeCAD as App import Part import Import import MeshPart def convert(step_path, out_path, lin=0.1, ang=0.35): doc = App.newDocument("conv") Import.insert(os.path.abspath(step_path), doc.Name) doc.recompute() shapes = [] for o in doc.Objects: if hasattr(o, "Shape") and o.Shape and not o.Shape.isNull(): shapes.append(o.Shape) if not shapes: raise RuntimeError("Keine Shapes gefunden.") compound = Part.makeCompound(shapes) if len(shapes) > 1 else shapes[0] mesh = MeshPart.meshFromShape( Shape=compound, LinearDeflection=lin, AngularDeflection=ang, Relative=False ) mesh.write(os.path.abspath(out_path)) App.closeDocument(doc.Name) def main(argv): #print(argv, len(argv)) if len(argv) < 3: print("Usage: FreeCADCmd script.py -- input.step output.stl [lin_defl] [ang_defl]") return 1 inp = argv[2] out = argv[3] lin = float(argv[4]) if len(argv) > 4 else 0.1 ang = float(argv[5]) if len(argv) > 5 else 0.35 convert(inp, out, lin, ang) print(f"OK: {inp} -> {out}") return 0 # WICHTIG: immer ausführen (FreeCAD setzt __name__ nicht zuverlässig auf "__main__") raise SystemExit(main(sys.argv))