Python : l'objet copié ne s'affiche pas dans l'Outliner
Lorsque je copie un objet à l'aide bpy.context.active_object.copy()du nouvel objet, il n'apparaît pas dans l' Outliner même s'il apparaît lorsque j'utilise list()des objets dans le shell Python.
Des questions:
- Y a-t-il une deuxième étape pour que l'objet s'affiche dans l' Outliner ?
- Ou peut-être ne copie-t-il que les données de l'objet ? (Si oui, dans quel but ?)
- N'y a-t-il pas de fonctions compagnons, c'est-à-dire : coller () et/ou couper () ? (L'achèvement de la ligne de commande ne donne rien.)
Remarque : bpy.ops.object.duplicate()fait une copie qui s'affiche dans l' Outliner , donc ces questions ne portent pas sur la façon de faire une copie de travail/duplicata. Je veux comprendre le but de copy().
Réponses
Associez-le à une collection
Avant la version 2.8, un objet copié nécessitait d'être lié à la collection d'objets de la scène. Pour 2.8+, liez-le à une collection.
Il s'affichera dans l'outliner lorsque la collection est liée à une scène ou est la collection de scènes de base.
L'opérateur duplicate lie le dupe à la collection de contexte.
import bpy
from bpy import context
ob = context.object.copy()
context.collection.objects.link(ob)
lier un nouvel objet à la scène avec python en 2.8