5
$\begingroup$

I want to change multiple text objects at once.

Is there a way to copy the settings to all selected text objects?

$\endgroup$
  • $\begingroup$ possible duplicate of How do I copy a property from an active object to selected objects? $\endgroup$ – Ray Mairlot Mar 4 '15 at 21:27
  • 1
    $\begingroup$ @RayMairlot that doesn't work on all properties also $\endgroup$ – Chebhou Mar 4 '15 at 21:29
  • $\begingroup$ @AttackingHobo do you have specific properties to copy ? $\endgroup$ – Chebhou Mar 4 '15 at 21:33
  • 2
    $\begingroup$ @RayMairlot That does not work for text properties. $\endgroup$ – AttackingHobo Mar 4 '15 at 22:30
  • $\begingroup$ @Chebhou Everything on the text tab. Geometry, Font, and Paragraph mainly. $\endgroup$ – AttackingHobo Mar 4 '15 at 22:32
4
$\begingroup$

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

  • or hit space and type 'copy text '

enter image description here


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()
$\endgroup$
  • $\begingroup$ seems to be broken on 2.77? Get key error from selected object? $\endgroup$ – 3pointedit Mar 24 '16 at 15:02
  • $\begingroup$ WOW, It's such a useful script! but it doesn't works in 2.77!!!!! Can anybody help with this? $\endgroup$ – LDCO Sep 8 '16 at 21:36
  • $\begingroup$ Or should I open a new question for asking improving this script to work on newest Blender? $\endgroup$ – LDCO Sep 8 '16 at 21:38
  • $\begingroup$ @Chebhou Is there a way to make this script work in 2.77a? $\endgroup$ – LDCO Sep 9 '16 at 16:14
  • 1
    $\begingroup$ @Chebho Sorry, but no... now it's like this - if one of the text is a duplicate of another - one of them just disparate. if it's two new made textes - nothing changes (it rights although that "properties copied..." . Maybe we should open a new thread and ask for help? It's a really useful feature... $\endgroup$ – LDCO Sep 11 '16 at 1:44
2
$\begingroup$

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:

Linked Text GIF

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

Link Fonts Command

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.

$\endgroup$
  • 1
    $\begingroup$ Thanks for trying, but this doesn't help me. I need to copy everything from the Geometry, Font, and Paragraph. $\endgroup$ – AttackingHobo Mar 4 '15 at 22:52
  • $\begingroup$ No problem, however I'm afraid you will need to use a script to do the other two. Blender does not have a way to do that AFAIK. $\endgroup$ – VRM Mar 5 '15 at 1:37

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.