On 01/06/2017 at 05:45, xxxxxxxx wrote:
Hi. I have some Python code that resets user data in a group. What I have written looks to be very cumbersome and it is very slow when I have a lot of resets. Here is what I have:
import c4d
def main() :
ID_G_Vegas_RESET = 486
ID_G_Motel_RESET = 485
ID_G_Spitn_Kitten_RESET = 489
ID_G_Vacancy_RESET = 490
ID_G_Open_RESET = 491
ID_G_Sports_Bar_RESET = 492
ID_G_Heinek_RESET = 508
ID_G_Claude_RESET = 509
ID_G_Argon_RESET = 510
ID_G_Xenon_RESET = 511
RESET G ------------------------------------------------------------
#RESET G_Vegas
if obj[c4d.ID_USERDATA, ID_G_Vegas_RESET]:
obj[c4d.ID_USERDATA, ID_G_Vegas_RESET] = False
for id, bc in obj.GetUserDataContainer() :
if bc[c4d.DESC_PARENTGROUP][-1].id == 284: # G_Vegas Group
try:
obj[id] = bc[c4d.DESC_DEFAULT]
except TypeError:
pass
#RESET G_Motel
if obj[c4d.ID_USERDATA, ID_G_Motel_RESET]:
obj[c4d.ID_USERDATA, ID_G_Motel_RESET] = False
for id, bc in obj.GetUserDataContainer() :
if bc[c4d.DESC_PARENTGROUP][-1].id == 285: # G_Motel Group
try:
obj[id] = bc[c4d.DESC_DEFAULT]
except TypeError:
pass
#RESET G_The Spit'n Kitten'
if obj[c4d.ID_USERDATA, ID_G_Spitn_Kitten_RESET]:
obj[c4d.ID_USERDATA, ID_G_Spitn_Kitten_RESET] = False
for id, bc in obj.GetUserDataContainer() :
if bc[c4d.DESC_PARENTGROUP][-1].id == 287: # G_The Spit'n Kitten Group
try:
obj[id] = bc[c4d.DESC_DEFAULT]
except TypeError:
pass
#RESET G_Vacancy
if obj[c4d.ID_USERDATA, ID_G_Vacancy_RESET]:
obj[c4d.ID_USERDATA, ID_G_Vacancy_RESET] = False
for id, bc in obj.GetUserDataContainer() :
if bc[c4d.DESC_PARENTGROUP][-1].id == 289: # G_Vacancy Group
try:
obj[id] = bc[c4d.DESC_DEFAULT]
except TypeError:
pass
#RESET G_Open
if obj[c4d.ID_USERDATA, ID_G_Open_RESET]:
obj[c4d.ID_USERDATA, ID_G_Open_RESET] = False
for id, bc in obj.GetUserDataContainer() :
if bc[c4d.DESC_PARENTGROUP][-1].id == 291: # G_Open Group
try:
obj[id] = bc[c4d.DESC_DEFAULT]
except TypeError:
pass
#RESET G_Sports Bar
if obj[c4d.ID_USERDATA, ID_G_Sports_Bar_RESET]:
obj[c4d.ID_USERDATA, ID_G_Sports_Bar_RESET] = False
for id, bc in obj.GetUserDataContainer() :
if bc[c4d.DESC_PARENTGROUP][-1].id == 293: # G_Sports Bar
try:
obj[id] = bc[c4d.DESC_DEFAULT]
except TypeError:
pass
#RESET G_Heinek
if obj[c4d.ID_USERDATA, ID_G_Heinek_RESET]:
obj[c4d.ID_USERDATA, ID_G_Heinek_RESET] = False
for id, bc in obj.GetUserDataContainer() :
if bc[c4d.DESC_PARENTGROUP][-1].id == 295: # G_Vegas Group
try:
obj[id] = bc[c4d.DESC_DEFAULT]
except TypeError:
pass
#RESET G_Claude
if obj[c4d.ID_USERDATA, ID_G_Claude_RESET]:
obj[c4d.ID_USERDATA, ID_G_Claude_RESET] = False
for id, bc in obj.GetUserDataContainer() :
if bc[c4d.DESC_PARENTGROUP][-1].id == 297: # G_Claude Group
try:
obj[id] = bc[c4d.DESC_DEFAULT]
except TypeError:
pass
#RESET G_Argon
if obj[c4d.ID_USERDATA, ID_G_Argon_RESET]:
obj[c4d.ID_USERDATA, ID_G_Argon_RESET] = False
for id, bc in obj.GetUserDataContainer() :
if bc[c4d.DESC_PARENTGROUP][-1].id == 299: # G_Argon Group
try:
obj[id] = bc[c4d.DESC_DEFAULT]
except TypeError:
pass
#RESET G_Xenon
if obj[c4d.ID_USERDATA, ID_G_Xenon_RESET]:
obj[c4d.ID_USERDATA, ID_G_Xenon_RESET] = False
for id, bc in obj.GetUserDataContainer() :
if bc[c4d.DESC_PARENTGROUP][-1].id == 301: # G_Xenon Group
try:
obj[id] = bc[c4d.DESC_DEFAULT]
except TypeError:
pass
c4d.EventAdd()
I know there is a better way to do this. Can anyone offer a suggestion? Thanks.