Skip to content

layer

图层相关 CLI 命令。

cmd_layer_create(fmt, name, file_id)

在指定文件中创建新图层(需 Dimine 运行)。

Source code in dimine_python_sdk\cli\commands\layer.py
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
def cmd_layer_create(fmt: str, name: str, file_id: str | None) -> None:
    """在指定文件中创建新图层(需 Dimine 运行)。"""
    err = require_remote_sdk()
    if err:
        output_error(err, fmt)

    async def _run():
        nonlocal file_id
        client = await get_client()
        if not file_id:
            files = await client.get_files()
            if not files:
                raise_or_exit("没有打开的文件,请先打开文件或提供 --file-id", fmt)
            file_id = files[0].id
        layer = await client.create_layer(file_id=file_id, name=name)
        return {
            "success": True,
            "file_id": file_id,
            "layer_id": layer.id,
            "layer_name": layer.name,
            "message": f"已成功创建图层: {name}",
        }

    try:
        result = asyncio.run(_run())
        output_result(result, fmt)
    except SystemExit:
        raise
    except Exception as e:
        handle_sdk_error(e, fmt, "创建图层失败")

cmd_layer_delete(fmt, name, file_id)

删除指定名称的图层(需 Dimine 运行)。

Source code in dimine_python_sdk\cli\commands\layer.py
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
def cmd_layer_delete(fmt: str, name: str, file_id: str | None) -> None:
    """删除指定名称的图层(需 Dimine 运行)。"""
    err = require_remote_sdk()
    if err:
        output_error(err, fmt)

    async def _run():
        nonlocal file_id
        client = await get_client()
        if not file_id:
            files = await client.get_files()
            if not files:
                raise_or_exit("没有打开的文件,请先打开文件或提供 --file-id", fmt)
            file_id = files[0].id
        await client.delete_layer(file_id=file_id, name=name)
        return {
            "success": True,
            "file_id": file_id,
            "layer_name": name,
            "message": f"已成功删除图层: {name}",
        }

    try:
        result = asyncio.run(_run())
        output_result(result, fmt)
    except SystemExit:
        raise
    except Exception as e:
        handle_sdk_error(e, fmt, "删除图层失败")

cmd_layer_visibility(fmt, file_id, layer_name, action)

设置图层显示/隐藏状态(需 Dimine 运行)。

Source code in dimine_python_sdk\cli\commands\layer.py
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
def cmd_layer_visibility(fmt: str, file_id: str, layer_name: str, action: str) -> None:
    """设置图层显示/隐藏状态(需 Dimine 运行)。"""
    err = require_remote_sdk()
    if err:
        output_error(err, fmt)

    from dimine_python_sdk.models.conn import VisibilityAction

    valid_actions = {
        "show": VisibilityAction.SHOW,
        "hide": VisibilityAction.HIDE,
        "exclusive_show": VisibilityAction.EXCLUSIVE_SHOW,
    }

    async def _run():
        client = await get_client()
        await client.set_layer_visibility(
            file_id=file_id,
            layer_name=layer_name,
            action=valid_actions[action],
        )
        action_cn = {"show": "显示", "hide": "隐藏", "exclusive_show": "排他显示"}
        return {
            "success": True,
            "message": f"已成功{action_cn.get(action, action)}图层 {layer_name}",
        }

    try:
        result = asyncio.run(_run())
        output_result(result, fmt)
    except Exception as e:
        handle_sdk_error(e, fmt, "设置图层可见性失败")

cmd_layers(fmt, file_id)

获取指定文件的所有图层列表(需 Dimine 运行)。

Source code in dimine_python_sdk\cli\commands\layer.py
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
def cmd_layers(fmt: str, file_id: str | None) -> None:
    """获取指定文件的所有图层列表(需 Dimine 运行)。"""
    err = require_remote_sdk()
    if err:
        output_error(err, fmt)

    async def _run():
        nonlocal file_id
        client = await get_client()
        if not file_id:
            files = await client.get_files()
            if not files:
                raise_or_exit("没有打开的文件,请先打开文件或提供 --file-id", fmt)
            file_id = files[0].id
        layers = await client.get_layers(file_id)
        result = [{"id": l.id, "name": l.name} for l in layers]
        return {"file_id": file_id, "layer_count": len(result), "layers": result}

    try:
        result = asyncio.run(_run())
        output_result(result, fmt)
    except SystemExit:
        raise
    except Exception as e:
        handle_sdk_error(e, fmt, "获取图层列表失败")

register_commands(subparsers, format_parent)

向 subparsers 注册图层相关子命令。

Source code in dimine_python_sdk\cli\commands\layer.py
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
def register_commands(subparsers, format_parent) -> None:
    """向 subparsers 注册图层相关子命令。"""
    p = subparsers.add_parser("layers", parents=[format_parent], help="列出图层")
    p.add_argument("--file-id", default=None, help="文件ID,不提供则使用当前打开的第一个文件")

    p = subparsers.add_parser("layer-create", parents=[format_parent], help="创建图层")
    p.add_argument("--name", required=True, help="图层名称")
    p.add_argument("--file-id", default=None, help="文件ID,不提供则使用当前打开的第一个文件")

    p = subparsers.add_parser("layer-delete", parents=[format_parent], help="删除图层")
    p.add_argument("--name", required=True, help="图层名称")
    p.add_argument("--file-id", default=None, help="文件ID,不提供则使用当前打开的第一个文件")

    p = subparsers.add_parser("layer-visibility", parents=[format_parent], help="设置图层显示/隐藏状态")
    p.add_argument("--file-id", required=True, help="文件ID")
    p.add_argument("--layer-name", required=True, help="图层名称")
    p.add_argument("--action", choices=["show", "hide", "exclusive_show"], default="show", help="操作类型(默认: show)")