"""Blender companion script: restore sharp + seam edge marks after importing a production GLB. After importing a Schaeffler production GLB in Blender, run this script once via the Scripting workspace (Text Editor → Run Script). It reads the sharp angle that was baked into the GLB at export time and re-applies mark_sharp() + mark_seam() on every mesh object. The GLB visual shading already encodes the sharp edges via vertex splits (normals). This script restores the blue sharp-crease and red seam markers in Edit Mode for further editing in Blender. Usage: 1. File → Import → glTF 2.0 (.glb) — open your production GLB 2. Open the Scripting workspace 3. Open this file (Text Editor → Open → restore_sharp_marks.py) 4. Click Run Script """ import bpy import math angle_deg = bpy.context.scene.get("schaeffler_sharp_angle_deg", 30.0) smooth_rad = math.radians(float(angle_deg)) mesh_objects = [o for o in bpy.data.objects if o.type == "MESH"] if not mesh_objects: print("No mesh objects found in scene.") else: total_sharp = 0 bpy.ops.object.select_all(action="DESELECT") for obj in mesh_objects: bpy.context.view_layer.objects.active = obj obj.select_set(True) bpy.ops.object.mode_set(mode="OBJECT") for poly in obj.data.polygons: poly.use_smooth = True bpy.ops.object.mode_set(mode="EDIT") bpy.ops.mesh.select_all(action="DESELECT") bpy.ops.mesh.edges_select_sharp(sharpness=smooth_rad) bpy.ops.mesh.mark_sharp() bpy.ops.mesh.mark_seam() bpy.ops.object.mode_set(mode="OBJECT") total_sharp += sum(1 for e in obj.data.edges if e.use_edge_sharp) obj.select_set(False) print(f"Restored sharp/seam marks at {angle_deg}°: " f"{total_sharp} edges across {len(mesh_objects)} objects.")