0
$\begingroup$

Is there any chance to get index of custom property ?

enter image description here

Thanks to batFINGER I found that you can acces custom property by:

import bpy
bpy.context.active_object.keys()[i] # i is index

but if I have array in the property i dont know how to find specific value. I used:

bpy.context.active_object.get(bpy.context.active_object.keys()[2][2])

for third value of the array but it doesnt work.

$\endgroup$
7
  • 2
    $\begingroup$ Not sure how useful a custom property index is? Are they in same order as the ob.keys() list? $\endgroup$
    – batFINGER
    Commented Mar 8, 2018 at 14:48
  • $\begingroup$ You cant manually use a name of property and you can add and remove property and searching the values only by for loop. I do everythink little bit responsive. $\endgroup$
    – MRL
    Commented Mar 8, 2018 at 15:05
  • $\begingroup$ Yes but i have 36-360 properties, sometimes they are used and sometimes they are not - it depends on source data. So I would like to get the data by index, because I know the order. $\endgroup$
    – MRL
    Commented Mar 8, 2018 at 15:11
  • $\begingroup$ View source on the custom props panel rna_prop_ui.py. Can emulate the way that is ordered . $\endgroup$
    – batFINGER
    Commented Mar 8, 2018 at 15:12
  • 1
    $\begingroup$ If you have the nn_ naming convention, perhaps use that with list comp. {p : ob[p] for p in ob.keys() if p.name.startswith("%2d_" % index)} $\endgroup$
    – batFINGER
    Commented Mar 8, 2018 at 15:37

1 Answer 1

1
$\begingroup$

Lets dissect what your code does:

key = bpy.context.active_object.keys()[2]
# key contains the name '02_back'

char = key[2]
# gets the third character which is '_'

bpy.context.active_object.get(char)
# which throws an error as key '_' does not exist

It should be

bpy.context.active_object.get(bpy.context.active_object.keys()[2])[2]

Let's dissect this

key = bpy.context.active_object.keys()[2]
# key contains the name '02_back'

prop = bpy.context.active_object.get(key)
# gets the property with the name '02_back'

value = prop[2]
# gets the third item of the property `1.2`
$\endgroup$
3
  • $\begingroup$ The order of the props in the UI is sorted and filtered (doesn't list _RNA_UI key for instance that will have index after the UI prop was created). Quite often cycles sits in index 0. IMO relying on keys()[2] to be the one in position 2 is a slippery slope. $\endgroup$
    – batFINGER
    Commented Mar 9, 2018 at 13:56
  • 1
    $\begingroup$ Agree I just repeated what the question was using. $\endgroup$
    – J. Bakker
    Commented Mar 9, 2018 at 15:45
  • $\begingroup$ Yes, you are right batFinger, but I am glad that there are explain the basic system - that was the goal. RNA_UI and cycles property can by easily skip by your previous code. $\endgroup$
    – MRL
    Commented Mar 10, 2018 at 20:14

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .