Fieldlist HasContent() GetCount() bug workaround
-
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 codedef 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://developers.maxon.net/forum/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!
-
hi,
unfortunately, there is nothing in the SDK that will help you in this regard. The only solution i see is to check the type of the layer and hardcode if that layer can have a link or not. Could be just an array containing the IDs of layers that do not have this link.
Cheers,
Manuel -
Hello @mikeudin,
without further questions or postings, we will consider this topic as solved by Monday 05/06/2023 and flag it accordingly.
Thank you for your understanding,
Maxime.