コンテンツにスキップ

@tool() デコレーター

クラスを LinkCAD ツールとして登録し、自動生成されたオプションダイアログ付きでアプリケーションメニューに表示します。

シグネチャ

@tool(
name: str,
menu: str = "Tools/Python",
tooltip: str = "",
shortcut: str = "",
icon: str = "",
requires_drawing: bool = True,
)
class MyTool(Tool):
...

パラメーター

パラメーターデフォルト説明
namestrrequiredメニュー内の表示名
menustr"Tools/Python"メニューパス(サブメニューには / を使用)
tooltipstr""ホバー時に表示されるツールチップ
shortcutstr""キーボードショートカット(例: "Ctrl+Shift+M"
iconstr""アイコンファイルへのパス(PNG、24×24)
requires_drawingboolTrueツールが開いている図面を必要とするかどうか

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}")