1
$\begingroup$

How can I remove a linked library that pertains to a created proxy without deleting or altering the proxy or proxy's data?

Using the "make local" function,L in object mode, simply unselects the selected proxy without making any changes.

$\endgroup$
1
  • $\begingroup$ Shift-clicking and then clicking on the chain icon beside the datablock selector seems to work. For a larger set of objects, SHIFT+D Duplicate combined with "Make local" seems to produce fully local copies. $\endgroup$
    – Will Chen
    Commented Jul 19, 2020 at 6:19

2 Answers 2

0
$\begingroup$

As a workaround, one could save the proxy's associated data(Animation,Materials,etc) through fake users, then delete the associated linked library in the outliner, append the original object or armature the proxy came from, if the file is still available, and then reassociate the data.

$\endgroup$
0
$\begingroup$

I had this issue today and it took me a while to figure out a workaround, but here it is: It's essentially just duplicating the object and moving the proxy to an unused layer and disabling it from rendering. Just select the proxy and run it. AFAIK it also carries the child relationships as well.

    import bpy

    ###SCRIPT TO FIX PROXIES###

    old = bpy.context.active_object.name #call the name of the proxy object
    bpy.ops.object.duplicate_move(OBJECT_OT_duplicate={"linked":False, "mode":'TRANSLATION'}) #duplicate
    newname = bpy.context.active_object.name #call the name of the new object
    newobj = bpy.context.object #call the data/ID of the new object
    bpy.ops.object.select_all(action='DESELECT') #deselect all

    bpy.data.objects[old].select = True #select proxy
    obj = bpy.context.object #call data/ID of proxy
    bpy.context.scene.objects.active = obj #make proxy active
    bpy.ops.object.move_to_layer(layers=(False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, True))
    bpy.context.object.hide_render = True #after moving, hide the proxy from rendering

    bpy.context.area.type = 'VIEW_3D' #change context to 3D

    bpy.ops.view3d.layers(nr=0, extend=False) #select all layers
    bpy.ops.object.select_all(action='DESELECT') #deselect all
    bpy.ops.view3d.layers(nr=0, extend=False) #deselect all layers

    bpy.context.area.type = 'TEXT_EDITOR' #change context back to text editor

    bpy.data.objects[newname].select = True #make new object selected
    bpy.context.scene.objects.active = newobj #make new object active
$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .