I want to change multiple text objects at once.
Is there a way to copy the settings to all selected text objects?
I want to change multiple text objects at once.
Is there a way to copy the settings to all selected text objects?
This script will enable you to copy the text object properties from active to selected :
run the script once to register
you will find it in: 3D View -> object ->copy text properties
import bpy
from bpy.types import Operator # for defining new operator
from bpy.props import * # for operator parameters
S = scene = bpy.context.scene
C = context = bpy.context
def text_prop_copier():
if context.active_object.type != 'FONT':
return False
active = bpy.data.curves[context.active_object.name]
for ob in context.selected_objects:
if ob.type == 'FONT':
text = bpy.data.curves[ob.name]
# collect names of writeable properties
properties = [p.identifier for p in active.bl_rna.properties if not p.is_readonly]
# copy those properties (prop != 'body') will skip from setting body property same as active object this changes all other properties but text content
for prop in properties:
if (not prop.startswith('texspace') ) and (prop != 'name') and (prop != 'body') :
print(prop, 'copied')
setattr(text, prop, getattr(active, prop))
return True
class tex_prop_cop(Operator):
"""copy active text object properties to selected"""
bl_idname = "fonts.prop_copy"
bl_label = "copy text properties"
bl_options = {'REGISTER', 'UNDO'}
def invoke(self, context, event):
if text_prop_copier():
self.report({'INFO'},"properties copied")
return {'FINISHED'}
def addObject(self, context):
self.layout.operator(
tex_prop_cop.bl_idname,
text = tex_prop_cop.bl_label,
icon = 'PLUGIN')
def register():
bpy.utils.register_class(tex_prop_cop)
bpy.types.VIEW3D_MT_object.append(addObject)
print("register done")
def unregister():
bpy.utils.unregister_class(tex_prop_cop)
bpy.types.VIEW3D_MT_object.remove(addObject)
print("unregister done")
if __name__ == "__main__":
register()
The only way I know of and that I use, is to copy the text objects with Alt+D. This will copy all settings between them, however the text itself is copied as well:

You can link the font with Ctrl+L > Fonts without linking the actual text:

Sadly it is currently not possible to copy other settings on text objects as they are not meshes.
The standard RMB > Copy to Selected is grayed out and can not be used.
In Blender 2.9 you can select all the text objects you want to change the font on, selecting the font object that you want to copy the font from last. Then simply choose Object > Link/Transfer data > Link Fonts to Text here's what that looks like: 