Your browser does not seem to support JavaScript. As a result, your viewing experience will be diminished, and you have been placed in read-only mode.
Please download a browser that supports JavaScript, or enable it if it's disabled (i.e. NoScript).
On 23/09/2013 at 01:00, xxxxxxxx wrote:
I have this userdata cycle field with several options (cycles). But I want to change those options depending on other functionality. Reading posts here on the forum, I think I must remove the ud field and then insert it again. However, when inserting, the ud field is always placed at the end of my ud. How can I update the cycle field, but do not change the position of the field.
Here the working code, which updates the cycles, but places the field at the end.
for id_, bc in obj.GetUserDataContainer() : rid = id_[id_.GetDepth() - 1].id if (bc[c4d.DESC_NAME] == "Render Preset") : #get cycle options cycle = bc[c4d.DESC_CYCLE] #basecontainer with cycle options. for i in cycle: print i #show options for debug information cycle.SetData(4,'Lowlow') #overwrite option 4 bc[c4d.DESC_CYCLE] = cycle #write back to container obj.RemoveUserData(rid) #remove ud c4d.SendCoreMessage(c4d.COREMSG_CINEMA, c4d.BaseContainer(c4d.COREMSG_CINEMA_FORCE_AM_UPDATE)) obj.AddUserData(bc) #add again (but now at the end? obj[c4d.ID_USERDATA,rid] = 1 #set default
On 23/09/2013 at 06:20, xxxxxxxx wrote:
I messed some indexes. Thanks to one of Scott's posts it is now working. No need to remove and re-insert.
obj.SetUserDataContainer(id_, bc)