Skip to content
Snippets Groups Projects
Commit 1af4eb6f authored by Campbell Barton's avatar Campbell Barton
Browse files

Fix io_anim_camera error exporting cameras with quotes in their name

Also use context to ensure the file is closed properly.
parent 080d74fe
Branches
Tags
No related merge requests found
...@@ -19,23 +19,23 @@ bl_info = { ...@@ -19,23 +19,23 @@ bl_info = {
import bpy 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 = ( data_attrs = (
'lens', "lens",
'shift_x', "shift_x",
'shift_y', "shift_y",
'dof.focus_distance', "dof.focus_distance",
'clip_start', "clip_start",
'clip_end', "clip_end",
'display_size', "display_size",
) )
obj_attrs = ( obj_attrs = (
'hide_render', "hide_render",
) )
fw = open(filepath, 'w').write fw = fh.write
scene = bpy.context.scene scene = bpy.context.scene
...@@ -77,21 +77,21 @@ def write_cameras(context, filepath, frame_start, frame_end, only_selected=False ...@@ -77,21 +77,21 @@ def write_cameras(context, filepath, frame_start, frame_end, only_selected=False
fw("scene.frame_set(%d + frame)\n" % f) fw("scene.frame_set(%d + frame)\n" % f)
for obj, obj_data in cameras: 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() matrix = obj.matrix_world.copy()
fw("obj.location = %r, %r, %r\n" % matrix.to_translation()[:]) fw("obj.location = %r, %r, %r\n" % matrix.to_translation()[:])
fw("obj.scale = %r, %r, %r\n" % matrix.to_scale()[:]) fw("obj.scale = %r, %r, %r\n" % matrix.to_scale()[:])
fw("obj.rotation_euler = %r, %r, %r\n" % matrix.to_euler()[:]) fw("obj.rotation_euler = %r, %r, %r\n" % matrix.to_euler()[:])
fw("obj.keyframe_insert('location')\n") fw("obj.keyframe_insert(\"location\")\n")
fw("obj.keyframe_insert('scale')\n") fw("obj.keyframe_insert(\"scale\")\n")
fw("obj.keyframe_insert('rotation_euler')\n") fw("obj.keyframe_insert(\"rotation_euler\")\n")
# only key the angle # only key the angle
fw("data = obj.data\n") fw("data = obj.data\n")
fw("data.lens = %s\n" % obj_data.lens) fw("data.lens = %s\n" % obj_data.lens)
fw("data.keyframe_insert('lens')\n") fw("data.keyframe_insert(\"lens\")\n")
fw("\n") fw("\n")
...@@ -129,7 +129,8 @@ class CameraExporter(bpy.types.Operator, ExportHelper): ...@@ -129,7 +129,8 @@ class CameraExporter(bpy.types.Operator, ExportHelper):
default=True) default=True)
def execute(self, context): 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'} return {'FINISHED'}
def invoke(self, context, event): def invoke(self, context, event):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment