Unsolved Fieldlist HasContent() GetCount() bug workaround

Re: FieldList.GetCount Bug
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.



            def flatten_tree(node):
                """ Listifies a GeListNode tree.
                res = []
                while 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!

Checkout my python tutorials, plugins, scripts, xpresso presets and more


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.


MAXON SDK Specialist

MAXON Registered Developer