Setting Parameters from JSON File
-
Hi,
I'm trying to set parameters from a json file but it gives an error of
TypeError: GeListNode_ass_subscript expected Description identifier, not str
. How do I convert anstr
data toGeListNode_ass_subscript
?Thank you for looking at my problem
Here's the working code:
import c4d # Description: Adds a tag to a selected object # This default parameter sets the dynamics tag to a collider tag. # Assume this is from an external JSON file hence all strings and integers default_param = { "collider_body": { "alt": "Standard", "shift": "Standard", "param": { "[c4d.RIGID_BODY_DYNAMIC]": 0, "[c4d.RIGID_BODY_RESTITUTION]": 1, "[c4d.RIGID_BODY_FRICTION]": 1, } } } def main(): tag_type = 180000102 tag_name = "collider_body" tag = op.MakeTag(tag_type) doc.AddUndo(c4d.UNDOTYPE_NEW, tag) param_dict = default_param[tag_name]['param'] for key, value in param_dict.items(): # Gives an error of TypeError: GeListNode_ass_subscript expected Description identifier, not str tag[key] = value #This should be equivalent as tag[c4d.RIGID_BODY_DYNAMIC] = 0/False, c4d.EventAdd() # Execute main() if __name__=='__main__': main()
-
Hi, the main issue is that the key is a string ad not either a descId or an integer.
So either you have to evaluate this either you can use getattr to retrieve the parameter like so.keyId = getattr(c4d, "RIGID_BODY_DYNAMIC", None) if keyId is None: return False tag[keyId] = value
Cheers,
Maxime. -
Thanks! Works as expected!
-