diff --git a/io_export_after_effects.py b/io_export_after_effects.py index 580cc20373e0cabf9e1a0e66e77bc30249226ece..3479506364cd02c0e45e3233b09946aa2f52cb92 100644 --- a/io_export_after_effects.py +++ b/io_export_after_effects.py @@ -21,7 +21,7 @@ bl_info = { 'name': 'Export: Adobe After Effects (.jsx)', 'description': 'Export selected cameras, objects & bundles to Adobe After Effects CS3 and above', 'author': 'Bartek Skorupa', - 'version': (0, 55), + 'version': (0, 56), 'blender': (2, 6, 0), 'api': 41098, 'location': 'File > Export > Adobe After Effects (.jsx)', @@ -69,10 +69,10 @@ def get_selected(context, prefix): for ob in obs: if ob.type == 'CAMERA': cameras.append(ob) - cams_names.append(convert_name(ob, prefix)) + cams_names.append(convert_name(False, ob, prefix)) else: nulls.append(ob) - nulls_names.append(convert_name(ob, prefix)) + nulls_names.append(convert_name(False, ob, prefix)) selection = { 'cameras': cameras, @@ -85,12 +85,20 @@ def get_selected(context, prefix): # convert names of objects to avoid errors in AE. Add user specified prefix -def convert_name(ob, prefix): - ob_name = ob.name - for c in (" ", ".", ",", "-", "=", "+", "*"): - ob_name = ob_name.replace(c, "_") +def convert_name(is_comp, ob, prefix): + if is_comp: + ob_name = ob + prefix + ob_name = ob_name.replace('"', "_") + else: + ob_name = ob.name + prefix + + if ob_name[0].isdigit(): + ob_name = "_" + ob_name + + ob_name = bpy.path.clean_name(ob_name) + ob_name = ob_name.replace("-", "_") - return prefix + ob_name + return ob_name # get object's blender's location and rotation and return AE's Position and Rotation/Orientation @@ -320,7 +328,7 @@ def write_jsx_file(file, data, selection, export_bundles, comp_name, prefix): #convert the position into AE space ae_pos_rot = convert_pos_rot_matrix(matrix, data['width'], data['height'], data['aspect'], x_rot_correction=False) #get the name of the tracker - name_ae = convert_name(track, prefix) + name_ae = convert_name(False, track, prefix) #write JS script for this Bundle jsx_file.write('var %s = newComp.layers.addNull();\n' % name_ae) jsx_file.write('%s.threeDLayer = true;\n' % name_ae) @@ -343,6 +351,7 @@ def write_jsx_file(file, data, selection, export_bundles, comp_name, prefix): def main(file, context, export_bundles, comp_name, prefix): data = get_comp_data(context) selection = get_selected(context, prefix) + comp_name = convert_name(True, comp_name, "") write_jsx_file(file, data, selection, export_bundles, comp_name, prefix) print ("\nExport to After Effects Completed") return {'FINISHED'}