Altium Designer SDK クイックスタートガイド

Altium Designer SDK を使用すると、Altium Designer に直接統合されるカスタム拡張機能を構築できます。これにより、コマンドの追加、ワークフローの自動化、管理された .NET API を介した設計データへのアクセスが可能になります。

このガイドでは、開発ツールのインストール、拡張機能プロジェクトの作成、コマンドの追加、そして Altium Designer 内での実行までを順を追って説明します。

前提条件

  • Altium Developer Center への登録 - Altium Designer SDK とその拡張機能へのアクセスを有効にするために必要です

  • Altium Designer がインストール済みで、ライセンス認証されていること

  • .NET 対応 IDE(Visual Studio または C# サポート付きの VS Code

ステップ 1: Altium Developer Extension をインストールする

Altium Developer 拡張機能をインストールすると、プロジェクトテンプレートと SDK ツールが Altium Designer に直接追加されます。

  1. Altium Designer で、Extensions and Updates → Available に移動します。

  2. Software Extensions セクションで、Altium Developer を検索します。

  3. 拡張機能をインストールし、指示が表示されたら Altium Designer を再起動します。

ステップ 2: 新しい拡張機能プロジェクトを作成する

  1. Altium Designer で、File → New → Other → Extension に移動します。

    • Extension ID: ShowNetsExtension

    • Extension Kind: Altium Designer Server

    • Development Language: C#

    • IDE Version: latest

    • SDK Versionlatest

  2. 拡張機能が作成されると、Altium Designer にその詳細が表示されます。Source Location を確認し、そのパスにある .csproj ファイルを IDE で開いてください。

ステップ 3: 最初のコマンドを追加する

Source Code\Commands.cs を開き、次のメソッドを Commands クラスに追加します:

    /// <summary>
    /// Determines the enabled/visible state for the "Show Nets" command in Altium Designer.
    /// </summary>
    /// <param name="argContext">The current server document view context.</param>
    /// <param name="argParameters">Command parameters (unused).</param>
    /// <param name="argEnabled">Set to true if the command should be enabled.</param>
    /// <param name="argChecked">Set to true if the command should appear checked (unused).</param>
    /// <param name="argVisible">Set to true if the command should be visible (unused).</param>
    /// <param name="argCaption">Command caption (unused).</param>
    /// <param name="argImageFile">Command image file (unused).</param>
    public static void GetState_ShowNets(IServerDocumentView argContext, ref string argParameters, ref bool argEnabled,
        ref bool argChecked, ref bool argVisible, ref string argCaption, ref string argImageFile)
    {
        // Retrieve the currently focused project from Altium Designer's workspace.
        var project = DXP.GlobalVars.DXPWorkSpace.DM_FocusedProject() as IProject;

        // If the project needs to be compiled (e.g., netlist out of date), compile it.
        if (project?.DM_NeedsCompile() == true)
            project.DM_Compile();

        // Enable the command only if a valid project is focused and it's not the "Free Documents" project.
        argEnabled = project != null && !IsFreeDocumentsProject(project);
    }

    /// <summary>
    /// Command handler to display all net names in the current schematic document or project.
    /// </summary>
    /// <param name="view">The current server document view.</param>
    /// <param name="parameters">Command parameters (unused).</param>
    public static void Command_ShowNets(IServerDocumentView view, ref string parameters)
    {
        // Get the currently focused project from Altium Designer.
        var project = DXP.GlobalVars.DXPWorkSpace.DM_FocusedProject() as IProject;
        if (project == null || IsFreeDocumentsProject(project))
            return;

        string documentName;
        // Get the currently focused document (e.g., schematic sheet).
        var document = DXP.GlobalVars.DXPWorkSpace.DM_FocusedDocument() as IDocument;
        if (document == null)
        {
            // If no document is focused, ensure the project is compiled and use the flattened project document.
            if (project.DM_NeedsCompile()) project.DM_Compile();
            document = project.DM_DocumentFlattened();
            documentName = "Project";
        }
        else
        {
            // Only proceed if the focused document is a schematic (DocKindSch).
            if (document.DM_DocumentKind() != EDPConstant.DocKindSch) return;
            documentName = document.DM_FileName();
        }

        // Enumerate all nets in the document, retrieve their full names, and sort them alphabetically.
        var netNames = Enumerable.Range(0, document.DM_NetCount())
            .Select(document.DM_Nets)
            .Select(net => net.DM_FullNetName())
            .OrderBy(name => name);

        // Display the list of net names in an information dialog within Altium Designer.
        DXP.Utils.ShowInfo(string.Join(Environment.NewLine, netNames), $"Nets [{documentName}]");
    }

    /// <summary>
    /// Checks if the given project is the special "Free Documents" project in Altium Designer.
    /// </summary>
    /// <param name="project">The project to check.</param>
    /// <returns>True if the project is the Free Documents project; otherwise, false.</returns>
    private static bool IsFreeDocumentsProject(IProject project)
    {
        return project == DXP.GlobalVars.DXPWorkSpace.DM_FreeDocumentsProject();
    }

Source Code\Main.cs を開き、PluginServerModule クラスでコマンドを登録します:

protected override void InitializeCommands()
{
    ((CommandLauncher)CommandLauncher).RegisterCommand("ShowNets", Commands.Command_ShowNets, Commands.GetState_ShowNets);
}

プロジェクトをビルドして、拡張機能をインストールします。

ステップ 4: Altium Designer でコマンドを実行する

  1. Altium Designer を起動します。

  2. 任意のツールバーを右クリックし、Customize…

  3. を選択します Commands の下で、New… をクリックし、次のように設定します:

    • Process: ShowNetsExtension:ShowNets

    • Caption: ShowNets

  4. 新しいコマンドをツールバーにドラッグします。

  5. そのコマンドをクリックすると、ネットの一覧を含むダイアログが表示されます。

次のステップ

  • 回路図、PCB レイアウト、コンポーネントなどを扱うインターフェースについては、Altium Designer SDK のドキュメントを参照してください。

  • AltiumDeveloper GitHub organization で、サンプル拡張機能やデモを確認してください。

AI-LocalizedAI で翻訳
問題が見つかった場合、文字/画像を選択し、Ctrl + Enter キーを押してフィードバックをお送りください。
Content