Python: objeto copiado não exibido no Outliner

Aug 22 2020

Quando eu copio um objeto usando bpy.context.active_object.copy()o novo objeto não aparece no Outliner , embora apareça quando eu list()objetos no shell do Python.

Perguntas:

  1. Existe uma segunda etapa para obter o objeto para mostrar no Outliner ?
  2. Ou talvez esteja apenas copiando os dados do objeto? (Se sim, com que propósito?)
  3. Não há funções complementares, ou seja: colar () e/ou cortar ()? (A conclusão da linha de comando não produz nada.)

Observação: bpy.ops.object.duplicate()faça uma cópia que apareça no Outliner , portanto, essas perguntas não são sobre como fazer uma cópia/duplicata de trabalho. Eu quero entender o propósito do copy().

Respostas

5 batFINGER Aug 22 2020 at 20:57

Vinculá-lo a uma coleção

Antes da versão 2.8, um objeto copiado precisava ser vinculado à coleção de objetos da cena. Para 2.8+, vincule-o a uma coleção.

Ele será exibido no delineador quando a coleção estiver vinculada a uma cena ou for a coleção de cena base.

O operador duplicado vincula o duplicado à coleção de contexto.

import bpy
from bpy import context


ob = context.object.copy()
context.collection.objects.link(ob)

vincular novo objeto à cena com python em 2.8