6

How can I check if the object exists in python? I want to create an add-on but I'm unable to find any reference. For example how can I check if "Cube" exist? If yes I will make another object green, if no I will make it red.

Andy Andy
  • 331
  • 2
  • 10

2 Answers2

12

Best practice is iterating through Scene.objects collection (all objects of the current scene):

import bpy

for o in bpy.context.scene.objects: if o.name == "Cube": print ("Cube found in scene")

Even easier to read is using python's get() on the actual collection to get the reference:

cube = bpy.context.scene.objects.get("Cube")
if cube:
    print ("Cube found in scene")

Recommend use the python console to figure out:

>>> C.scene.objects.get("Cube")
bpy.data.objects['Cube']

Alternatively you can also iterate through Data.objects (all objects of the actual file using):

>>> D.objects.get("Cube")
bpy.data.objects['Cube']

For the sake of completeness, demo on how to get all objects starting with "Cube":

import bpy

objs = [] for o in bpy.data.objects: if o.name.startswith("Cube"): objs.append(o)

if objs: print ("Cube found {} time(s) in file".format(len(objs)))

Related: Python: Selecting object by name in 2.8

brockmann
  • 12,613
  • 4
  • 50
  • 93
2

I use .keys()

objects = bpy.context.scene.objects.keys()
if 'Cube' not in objects:
     print("cube doesn't exist!")
elif 'Cube' in objects:
     print("Cube exists!!")

the same as dict.keys() in python dict returns a list of the objects names

Gorgious
  • 30,723
  • 2
  • 44
  • 101
Keali'i
  • 31
  • 1
  • Thanks for trying to help, however there's a few issues with your answer, which have resulted with a downvote: an answer already exists, but you didn't explain why your answer is a reasonable alternative to it; you didn't check your answer (there's a syntax error because of the apostrophe in the string); there's no point in calling .keys() method, as that will be the default iterator; instead of using elif you could just use else and make the code cleaner. – Markus von Broady Feb 25 '21 at 13:44
  • This answer is much better than the selected answer. Yes there is a syntax error but I really appreciate the key idea highlighted in this answer which is to use dictionaries something which we do so frequently in regular python codes. Also i appreciate the explicit usage of keys(). – Mohit Lamba Mar 05 '23 at 01:44