Skip to content

load_assembly

AssemblyLoader

Bases: Loader

Source code in client/ayon_maya/plugins/load/load_assembly.py
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
class AssemblyLoader(plugin.Loader):

    product_types = {"assembly"}
    representations = {"json"}

    label = "Load Set Dress"
    order = -9
    icon = "code-fork"
    color = "orange"

    def load(self, context, name, namespace, data):
        folder_name = context["folder"]["name"]
        namespace = namespace or unique_namespace(
            folder_name + "_",
            prefix="_" if folder_name[0].isdigit() else "",
            suffix="_",
        )

        containers = setdress.load_package(
            filepath=self.filepath_from_context(context),
            name=name,
            namespace=namespace
        )

        self[:] = containers

        # Only containerize if any nodes were loaded by the Loader
        nodes = self[:]
        if not nodes:
            return

        return containerise(
            name=name,
            namespace=namespace,
            nodes=nodes,
            context=context,
            loader=self.__class__.__name__)

    def update(self, container, context):

        return setdress.update_package(container, context)

    def remove(self, container):
        """Remove all sub containers"""

        # Remove all members
        member_containers = setdress.get_contained_containers(container)
        for member_container in member_containers:
            self.log.info("Removing container %s",
                          member_container['objectName'])
            remove_container(member_container)

        # Remove alembic hierarchy reference
        # TODO: Check whether removing all contained references is safe enough
        members = cmds.sets(container['objectName'], query=True) or []
        references = cmds.ls(members, type="reference")
        for reference in references:
            self.log.info("Removing %s", reference)
            fname = cmds.referenceQuery(reference, filename=True)
            cmds.file(fname, removeReference=True)

        # Delete container and its contents
        if cmds.objExists(container['objectName']):
            members = cmds.sets(container['objectName'], query=True) or []
            cmds.delete([container['objectName']] + members)

remove(container)

Remove all sub containers

Source code in client/ayon_maya/plugins/load/load_assembly.py
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
def remove(self, container):
    """Remove all sub containers"""

    # Remove all members
    member_containers = setdress.get_contained_containers(container)
    for member_container in member_containers:
        self.log.info("Removing container %s",
                      member_container['objectName'])
        remove_container(member_container)

    # Remove alembic hierarchy reference
    # TODO: Check whether removing all contained references is safe enough
    members = cmds.sets(container['objectName'], query=True) or []
    references = cmds.ls(members, type="reference")
    for reference in references:
        self.log.info("Removing %s", reference)
        fname = cmds.referenceQuery(reference, filename=True)
        cmds.file(fname, removeReference=True)

    # Delete container and its contents
    if cmds.objExists(container['objectName']):
        members = cmds.sets(container['objectName'], query=True) or []
        cmds.delete([container['objectName']] + members)