1
$\begingroup$

I'm using blender 2.93 so not sure if that changes anything but i'm trying a simple script as found here

import bpy for o in ("Cube", "Camera", "Light"):   obj = bpy.context.scene.objects.get(o)   #if obj: obj.hide_viewport = False   if obj: obj.hide_set(False) 

I have made a simple scene with cubes, point lights and cameras, some hidden, but if I run the script, nothing happens. It doesn't give any errors either so im not sure what I'm doing wrong. I'm so stupid I guess. Any ideas?

Files here Script file Scene

$\endgroup$

1 Answer 1

2
$\begingroup$

The function bpy.context.scene.objects.get() will get an object matching the name of the parameter passed to it, or return nothing if there isn't an object with that name. The line for o in ("Cube", "Camera", "Light"): iterates over the strings "Cube", "Camera", and "Light", which are the names of the default three objects when a new .blend file is created, so only those objects will get unhidden.

To iterate over all objects, use bpy.context.scene.objects as shown below:

import bpy for obj in bpy.context.scene.objects: obj.hide_set(False) 
$\endgroup$
3
  • $\begingroup$ Ohh shoot, I thought the script I used was iterating over classes, not object names. Now I get it. (your script works perfectly). I'm coming from maxscript so its a little confusing, But how if I f.e. want to hide only all lights. How would I go about doing that? $\endgroup$ Commented Sep 3, 2021 at 6:37
  • 2
    $\begingroup$ for obj in (o for o in bpy.context.scene.objects if o.type == 'LIGHT'): Here are all the possible object types : docs.blender.org/api/current/… (Make sure you use all caps) $\endgroup$ Commented Sep 3, 2021 at 7:46
  • $\begingroup$ Sorry for the late reply, thank you for that. $\endgroup$ Commented Oct 21, 2021 at 7:01

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.