Skip to content

create_shape_data

Create shape data instance.

CreateShapeData

Bases: MochaCreator

Create shape instance.

Source code in client/ayon_mocha/plugins/create/create_shape_data.py
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
class CreateShapeData(MochaCreator):
    """Create shape instance."""
    identifier = "io.ayon.creators.mochapro.matteshapes"
    label = "Shape Data"
    description = __doc__
    product_type = "matteshapes"
    icon = "circle"

    def get_attr_defs_for_instance(
            self, instance: CreatedInstance) -> list:
        """Get attribute definitions for instance.

        Returns:
            list: List of attribute definitions.

        """
        exporter_items = {ex.id: ex.label for ex in get_shape_exporters()}

        version = get_mocha_version()
        settings = (
            self.project_settings
            ["mocha"]["create"]["CreateShapeData"]
        )

        try:
            exporter_settings = (
                settings
                [f"mocha_{version}"]
                ["default_exporters"]
            )
        except KeyError:
            exporter_settings = (
                settings
                ["mocha_2024_5"]
                ["default_exporters"]
            )

        exporters = get_shape_exporters()
        exporter_items = {ex.id: ex.label for ex in exporters}

        preselect_exporters = [
            ex.id
            for ex in exporters
            if ex.short_name in exporter_settings
        ]

        layers = {
                    idx: layer.name
                    for idx, layer in enumerate(
                        self.create_context.host.get_current_project().layers)
                } or {-1: "No layers"}

        return [
            EnumDef("layers",
                    label="Layers",
                    items=layers,
                    multiselection=True),
            EnumDef("exporter",
                    label="Exporter format",
                    items=exporter_items,
                    multiselection=True,
                    default=preselect_exporters),
            UISeparatorDef(),
            UILabelDef(
                "Exporter Options (not all are available in all exporters)"),
            EnumDef("layer_mode", label="Layer mode",
                    items={
                        "selected": "Selected layers",
                        "all": "All layers"
                    }),
        ]

get_attr_defs_for_instance(instance)

Get attribute definitions for instance.

Returns:

Name Type Description
list list

List of attribute definitions.

Source code in client/ayon_mocha/plugins/create/create_shape_data.py
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
def get_attr_defs_for_instance(
        self, instance: CreatedInstance) -> list:
    """Get attribute definitions for instance.

    Returns:
        list: List of attribute definitions.

    """
    exporter_items = {ex.id: ex.label for ex in get_shape_exporters()}

    version = get_mocha_version()
    settings = (
        self.project_settings
        ["mocha"]["create"]["CreateShapeData"]
    )

    try:
        exporter_settings = (
            settings
            [f"mocha_{version}"]
            ["default_exporters"]
        )
    except KeyError:
        exporter_settings = (
            settings
            ["mocha_2024_5"]
            ["default_exporters"]
        )

    exporters = get_shape_exporters()
    exporter_items = {ex.id: ex.label for ex in exporters}

    preselect_exporters = [
        ex.id
        for ex in exporters
        if ex.short_name in exporter_settings
    ]

    layers = {
                idx: layer.name
                for idx, layer in enumerate(
                    self.create_context.host.get_current_project().layers)
            } or {-1: "No layers"}

    return [
        EnumDef("layers",
                label="Layers",
                items=layers,
                multiselection=True),
        EnumDef("exporter",
                label="Exporter format",
                items=exporter_items,
                multiselection=True,
                default=preselect_exporters),
        UISeparatorDef(),
        UILabelDef(
            "Exporter Options (not all are available in all exporters)"),
        EnumDef("layer_mode", label="Layer mode",
                items={
                    "selected": "Selected layers",
                    "all": "All layers"
                }),
    ]