Python: oggetto copiato non visualizzato in Outliner

Aug 22 2020

Quando copio un oggetto usando bpy.context.active_object.copy()il nuovo oggetto non viene visualizzato in Outliner anche se appare quando eseguo list()oggetti nella shell Python.

Domande:

  1. C'è un secondo passaggio per mostrare l'oggetto nell'Outliner ?
  2. O forse sta solo copiando i dati dell'oggetto? (Se sì, a quale scopo?)
  3. Non ci sono funzioni complementari, ad esempio: paste() e/o cut()? (Il completamento della riga di comando non produce nulla.)

Nota: bpy.ops.object.duplicate()crea una copia che viene visualizzata in Outliner , quindi queste domande non riguardano come creare una copia/duplicato funzionante. Voglio capire lo scopo di copy().

Risposte

5 batFINGER Aug 22 2020 at 20:57

Collegalo a una raccolta

Prima della 2.8 un oggetto copiato richiedeva il collegamento alla raccolta di oggetti della scena. Per 2.8+ collegalo a una raccolta.

Verrà visualizzato nel contorno quando la raccolta è collegata a una scena o è la raccolta di scene di base.

L'operatore duplicato collega il duplicato alla raccolta di contesto.

import bpy
from bpy import context


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

collegare un nuovo oggetto alla scena con Python in 2.8