[Bf-extensions-cvs] [1af4eb6f] master: Fix io_anim_camera error exporting cameras with quotes in their name

Campbell Barton noreply at git.blender.org
Tue Mar 8 07:04:28 CET 2022


Commit: 1af4eb6f32cd62d84f5a91b2d2fcb19fe0757d67
Author: Campbell Barton
Date:   Tue Mar 8 17:01:23 2022 +1100
Branches: master
https://developer.blender.org/rBA1af4eb6f32cd62d84f5a91b2d2fcb19fe0757d67

Fix io_anim_camera error exporting cameras with quotes in their name

Also use context to ensure the file is closed properly.

===================================================================

M	io_anim_camera.py

===================================================================

diff --git a/io_anim_camera.py b/io_anim_camera.py
index 92948f58..fbc7eaab 100644
--- a/io_anim_camera.py
+++ b/io_anim_camera.py
@@ -19,23 +19,23 @@ bl_info = {
 import bpy
 
 
-def write_cameras(context, filepath, frame_start, frame_end, only_selected=False):
+def write_cameras(context, fh, frame_start, frame_end, only_selected=False):
 
     data_attrs = (
-        'lens',
-        'shift_x',
-        'shift_y',
-        'dof.focus_distance',
-        'clip_start',
-        'clip_end',
-        'display_size',
-        )
+        "lens",
+        "shift_x",
+        "shift_y",
+        "dof.focus_distance",
+        "clip_start",
+        "clip_end",
+        "display_size",
+    )
 
     obj_attrs = (
-        'hide_render',
-        )
+        "hide_render",
+    )
 
-    fw = open(filepath, 'w').write
+    fw = fh.write
 
     scene = bpy.context.scene
 
@@ -77,21 +77,21 @@ def write_cameras(context, filepath, frame_start, frame_end, only_selected=False
         fw("scene.frame_set(%d + frame)\n" % f)
 
         for obj, obj_data in cameras:
-            fw("obj = cameras['%s']\n" % obj.name)
+            fw("obj = cameras[%r]\n" % obj.name)
 
             matrix = obj.matrix_world.copy()
             fw("obj.location = %r, %r, %r\n" % matrix.to_translation()[:])
             fw("obj.scale = %r, %r, %r\n" % matrix.to_scale()[:])
             fw("obj.rotation_euler = %r, %r, %r\n" % matrix.to_euler()[:])
 
-            fw("obj.keyframe_insert('location')\n")
-            fw("obj.keyframe_insert('scale')\n")
-            fw("obj.keyframe_insert('rotation_euler')\n")
+            fw("obj.keyframe_insert(\"location\")\n")
+            fw("obj.keyframe_insert(\"scale\")\n")
+            fw("obj.keyframe_insert(\"rotation_euler\")\n")
 
             # only key the angle
             fw("data = obj.data\n")
             fw("data.lens = %s\n" % obj_data.lens)
-            fw("data.keyframe_insert('lens')\n")
+            fw("data.keyframe_insert(\"lens\")\n")
 
             fw("\n")
 
@@ -129,7 +129,8 @@ class CameraExporter(bpy.types.Operator, ExportHelper):
             default=True)
 
     def execute(self, context):
-        write_cameras(context, self.filepath, self.frame_start, self.frame_end, self.only_selected)
+        with open(self.filepath, 'w', encoding='utf-8') as fh:
+            write_cameras(context, fh, self.frame_start, self.frame_end, self.only_selected)
         return {'FINISHED'}
 
     def invoke(self, context, event):



More information about the Bf-extensions-cvs mailing list