Re: FieldList.GetCount Bug
Hello!
I have a same issue but @pyr's workaround not working for me. Because the issue of fieldlayers based on linked objects. But if FieldList have fieldlayers without linked objects like Solid this code
def CheckFieldHealth (self,doc,field):
if field == None: return False
def get_field_layers(field):
""" Returns all field layers that are referenced in a field list.
https://plugincafe.maxon.net/topic/11809/iterating-trough-field-list/2
"""
def flatten_tree(node):
""" Listifies a GeListNode tree.
"""
res = []
while node:
res.append(node)
for child in node.GetChildren():
res += flatten_tree(child)
node = node.GetNext()
return res
# get the GeListHead for the FieldList
root = field.GetLayersRoot()
if root is None:
return []
# Get the first node under the GeListHead
first = root.GetFirst()
if first is None:
return []
# traverse the graph
return flatten_tree(first)
error = 0
for f in get_field_layers(field):
if f.GetName() != None and f.GetLinkedObject(doc) == None and f[c4d.DESC_NAME]== None:
error += 1
if error == field.GetCount(): return False
return True
will give same result as fieldlayer with destructed object. So how to figure out type of fieldlayer: FieldObject, Fieldlayer, Modifier Layer? Is this layer based on object or tag from OM or not? Thank you!