@tool() 装饰器
将类注册为 LinkCAD 工具,使其显示在应用程序菜单中,并带有自动生成的选项对话框。
签名
@tool( name: str, menu: str = "Tools/Python", tooltip: str = "", shortcut: str = "", icon: str = "", requires_drawing: bool = True,)class MyTool(Tool): ...参数
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
name | str | required | 菜单中的显示名称 |
menu | str | "Tools/Python" | 菜单路径(使用 / 表示子菜单) |
tooltip | str | "" | 悬停时显示的工具提示 |
shortcut | str | "" | 键盘快捷键(例如 "Ctrl+Shift+M") |
icon | str | "" | 图标文件路径(PNG,24×24) |
requires_drawing | bool | True | 工具是否需要打开的图纸 |
Tool 基类
所有工具插件都必须扩展 Tool 并实现 run():
class Tool: def run(self, drawing) -> None: """Override to implement the tool logic.""" ...drawing 参数提供对当前图纸的访问。如果 requires_drawing=False,它可能为 None。
ToolInfo
装饰器会创建一个附加到类上的 ToolInfo 命名元组:
| 字段 | 说明 |
|---|---|
name | 工具显示名称 |
menu | 菜单路径 |
tooltip | 工具提示文本 |
shortcut | 键盘快捷键 |
icon | 图标路径 |
requires_drawing | 是否需要图纸 |
菜单路径
menu 参数定义工具在 LinkCAD 菜单中的显示位置:
"Tools/Python" → Tools → Python → <tool name>"Tools/Analysis" → Tools → Analysis → <tool name>"Tools/Drawing/Custom" → Tools → Drawing → Custom → <tool name>完整示例
from linkcad.plugin import tool, Tool, Option
@tool( name="Shape Counter", menu="Tools/Analysis", tooltip="Count shapes per layer", shortcut="Ctrl+Shift+C", requires_drawing=True,)class ShapeCounter(Tool): include_refs = Option.boolean("Include cell references", default=False)
def run(self, drawing) -> None: total = 0 for layer_name, shapes in drawing.shapes_by_layer(): count = sum(1 for _ in shapes) total += count print(f"{layer_name}: {count}") print(f"Total: {total}")