1
$\begingroup$

I had to import many FBX files (exported from 3d max) and save them as a blender files and just now realized that all the files also imported custom properties for every objects material.

enter image description here

I could delete it manually but since its a ton of files with tons of materials i'd prefer to do this by script. However I can't seem to get it to work.

I checked the python code for the custom property and was hoping I could remove it with this line:

bpy.ops.wm.properties_remove(data_path="material", property="�L��") 

But that sadly didn't work. It doesn't understand the "property". I would like the script to be able to run thru all materials in the scene and then delete this (or if possible ANY) custom property for each material.

$\endgroup$

1 Answer 1

3
$\begingroup$

You can delete all custom properties on all the materials in the file with this snippet :

import bpy for mat in bpy.data.materials: # Iterate over all materials props = [*mat.keys()] # Retrieve custom props names for prop in props: del mat[prop] 

Note * is the iterator unpacking operator.

$\endgroup$
3
  • $\begingroup$ Fantastic, this works like a charm, thank you. But what is the difference with props in mat.keys and wm.properties? Do they access different custom properties? $\endgroup$ Commented Feb 8, 2022 at 1:30
  • 1
    $\begingroup$ bpy.ops.wm.properties_remove is an operator. Long story short, this is a construct that is supposed to be used only in the UI when clicking on a button, it is very high level and has a lot of shortcomings, for example it forces a UI redraw everytime it is called. So you really should be using lower-level API whenever you can. mat.keys lets you directly get all the custom properties names in a sweep. You can access custom properties with mat["prop"] for instance like it was a python dictionary $\endgroup$ Commented Feb 8, 2022 at 6:20
  • $\begingroup$ Thank you for the explanation :) $\endgroup$ Commented Feb 13, 2022 at 23:24

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.