diff --git a/io_mesh_uv_layout/__init__.py b/io_mesh_uv_layout/__init__.py index e875a22ee..b0c7347f4 100644 --- a/io_mesh_uv_layout/__init__.py +++ b/io_mesh_uv_layout/__init__.py @@ -75,7 +75,7 @@ class ExportUVLayout(bpy.types.Operator): size: IntVectorProperty( size=2, default=(1024, 1024), - min=8, max=32768, + min=8, max=65536, description="Dimensions of the exported file", ) opacity: FloatProperty( @@ -136,10 +136,14 @@ class ExportUVLayout(bpy.types.Operator): obj_eval.to_mesh_clear() export = self.get_exporter() - export(filepath, polygon_data, different_colors, self.size[0], self.size[1], self.opacity) - - if is_editmode: - bpy.ops.object.mode_set(mode='EDIT', toggle=False) + try: + export(filepath, polygon_data, different_colors, self.size[0], self.size[1], self.opacity) + except ValueError as ex: + self.report({'ERROR'}, str(ex)) + return {'CANCELLED'} + finally: + if is_editmode: + bpy.ops.object.mode_set(mode='EDIT', toggle=False) return {'FINISHED'} diff --git a/io_mesh_uv_layout/export_uv_png.py b/io_mesh_uv_layout/export_uv_png.py index 784337be4..a5ae14e39 100644 --- a/io_mesh_uv_layout/export_uv_png.py +++ b/io_mesh_uv_layout/export_uv_png.py @@ -16,8 +16,11 @@ except ImportError: def export(filepath, face_data, colors, width, height, opacity): - offscreen = gpu.types.GPUOffScreen(width, height) - offscreen.bind() + try: + offscreen = gpu.types.GPUOffScreen(width, height) + offscreen.bind() + except RuntimeError: + raise ValueError("Texture allocation failed. Try using a smaller size for export.") try: fb = gpu.state.active_framebuffer_get()