跳转到内容

编写工具插件

本教程说明如何创建一个显示在 LinkCAD 菜单系统中的 Python 工具,并带有自动生成的选项对话框。

工具框架

工具插件由以下部分组成:

  1. 一个使用 @tool() 装饰并扩展 Tool 的类
  2. 定义 UI 对话框的选项类属性
  3. 一个实现逻辑的 run() 方法

示例:图层统计

在你的插件目录中创建文件 layer_stats.py

from linkcad.plugin import tool, Tool, Option
@tool(
name="Layer Statistics",
menu="Tools/Analysis",
tooltip="Show shape count per layer",
)
class LayerStats(Tool):
include_empty = Option.boolean(
"Include empty layers",
default=False,
tooltip="Show layers with zero shapes",
)
def run(self, drawing) -> None:
for layer_name, shapes in drawing.shapes_by_layer():
count = sum(1 for _ in shapes)
if count > 0 or self.include_empty:
print(f"{layer_name}: {count} shapes")

工作原理

  1. @tool() 将类注册为 LinkCAD 工具
  2. name 显示在菜单中,menu 设置菜单路径
  3. Option.boolean(...) 在自动生成的对话框中创建复选框
  4. 用户在对话框中点击 OK 后会调用 run()

选项类型

工厂方法UI 控件示例
Option.integer()微调框Option.integer("Count", default=1, min=0, max=100)
Option.real()双精度微调框Option.real("Scale", default=1.0, decimals=4)
Option.boolean()复选框Option.boolean("Enable", default=True)
Option.string()文本字段Option.string("Name", default="output")
Option.choice()下拉框Option.choice("Mode", choices=["Fast", "Precise"])
Option.path()文件选择器Option.path("Output", file_filter="*.csv")
Option.color()颜色选择器Option.color("Fill", default="#FF0000")
Option.table()可编辑网格请参阅面板拼版
Option.cell_choice()单元下拉框Option.cell_choice("Target Cell")

条件选项

使用 enabled_when 动态显示/隐藏选项:

class MyTool(Tool):
mode = Option.choice("Mode", choices=["Simple", "Advanced"])
threshold = Option.real(
"Threshold",
default=0.5,
enabled_when=lambda self: self.mode == "Advanced",
)

threshold 字段仅在 mode 为 “Advanced” 时启用。

键盘快捷键

@tool(
name="My Tool",
menu="Tools/Custom",
shortcut="Ctrl+Shift+M",
)
class MyTool(Tool):
...

后续步骤