Altium Designer に拡張機能を統合する
(Altium C++ SDKページで説明しているように)Altium Designer にインストール済みの拡張プロジェクトを Run Process 機能で単に呼び出すという概念を超えて、Altium Designer 内の統合機能として動作するように、その機能を拡張できます。
これは、追加のサーバー構成ファイルを導入し、既存ファイルを修正して適切なプロセスランチャー、メニュー項目、ツールバーを実装することで実現します。実質的に、この処理によって新しいリソースが Altium Designer にリンクされます。より具体的には、AddOn のサンプルプロジェクトの場合、PCB Editor 自体にリンクされます。
復習すると、PCB エディタ向けの AddOn サンプルプロジェクトのような拡張サーバーには、一連のプロセスがあります。これらのプロセス識別子はインストールファイル(.ins 拡張子)に格納され、機能はサーバーのソースファイルに実装されます。Altium Designer の GUI にリンクされるコマンドは、(必要に応じて)サーバープロセスとそのパラメータを包む、パッケージ化されたプロセスランチャーです。
Altium Designer におけるコマンドとは、メニュー項目、ツールバーボタン、ホットキーという 3 つのリソースのいずれかにリンクされた、特定のサーバープロセスランチャーである点に注意してください。これらのプロセスランチャーは、サーバーのリソースファイル(.rcs 拡張子)で定義されます。各プロセスランチャーは、サーバープロセス文字列、パラメータ、ビットマップファイル名で構成されます。サンプルのソースファイルは、SDK インストールの ..\Examples\Addon Complete\
サーバー機能の拡張
このセクションでは、AddOn 拡張サーバーを拡張する 3 つの方法を見ていきます。
- 拡張サーバー内から PCB コマンドを実行する。
- PCB エディタにそのプロセスランチャーを追加する。
- サーバーのプロセスランチャーを含む新しいフローティングツールバーを追加する。
プロジェクトを強化するために 3 つの方法を完了すると、Altium Designer とインターフェース(プラグイン)するために、次の物理ファイルが含まれるようになります。*.tlt
| Addon プロジェクトファイル | 説明 |
|---|---|
Addon.dll |
AddOn 拡張サーバーのオブジェクト。 |
Addon.ins |
このサーバーで使用されるプロセス、ドキュメント種別、ツールバー/メニュー/ホットキーを定義するサーバーのインストールファイル。 |
Addon.rcs |
Altium Designer のグラフィカルユーザーインターフェース向けのプロセスランチャーを定義するサーバーのリソースファイル。 |
Addon.tlt |
ツールバーとパネルの配置位置を定義するサーバーのツールレイアウトファイル(任意)。 |
サーバーファイル
完全な AddOn プロジェクトは、少なくとも 4 つのファイルで構成されます。サーバー自体の機能を表すサーバーファイル(DLL)、プロセスランチャーとサーバー UI 構造を含むリソースファイル(RCS)、サーバー設定とコマンド名を含むインストールファイル(INS)、そして任意で、このサーバーのパネル配置位置を表すツールバー位置ファイル(TLT)です。AddOn プロジェクトを拡張するには、新規の 2 ファイル(リソースファイルとツールバーファイル)を修正または作成する必要があります。
リソースおよびツールバー位置のファイルは、(プロセスランチャーとしての)コマンドが PCB エディタのメニューに表示され、さらに 2 つのボタンを含むフローティングツールバーが PCB Editor のワークスペースに表示されるように定義します。ここでは完全なコードは提供しませんが、完成したファイルは \SDK\CPP\Examples\Addon CompleteAddon.tlt
PCB Editor でプロセスを設定する
Altium Designer の
実際には、Add-on 拡張は、サーバーが Altium Designer にロードされると PCB エディタにプロセスランチャーを追加します。以下では、PCB メニューに新しいメニュー項目とそれぞれのメニューキーショートカットを追加する方法、および 2 つのボタンを持つ新しいツールバーを追加する方法を示します。
GUI 上の AddOn プロジェクトのメニュー項目。メインメニューの Help の右側に、新しいツールバーボタンが配置されている点にも注目してください。
PCB Editor の GUI を更新する構成ファイルの修正
PCB Editor で AddOn サーバーのプロセスにリンクする新しいリソース項目を追加するには、次のサーバーファイルを更新する必要があります。
-
インストールファイルAddon.ins -
リソースファイルAddon.rcs -
新しい
ツール位置ファイル(下記参照)Addon.tlt -
メインサーバー(PCB エディタ)の
インストールファイル。AdvPCB.ins
参考として、最終的なプロジェクトファイルは SDK Examples フォルダにあります。
これらのファイルは、PCB エディタの View メニューインターフェースに 3 つの新しいメニュー項目を挿入し、新しいフローティングツールバーに 2 つのツールバーボタンを追加する処理に不可欠です。ツールバーには新しいボタンが必要で、そのビットマップ(18x18 ピクセル)は Altium Designer インストール内の \System\Buttons\
Altium Designer は起動のたびに、すべてのサーバーと、それらのインストール/ツールバー位置/リソースファイルを読み込み、処理します。たとえば PCB エディタがロードされると、既定の PCB リソースも Altium Designer に読み込まれて設定され、その後、他の PCB 拡張(AutoPlace、MakeLib など)のリソースが処理・設定され、サーバー拡張の指示に従って PCB メニューやその他の PCB リソース項目が変更されます。
AddOn プロジェクトのリソースを登録するには、AdvPCB のインストールファイルを更新して、サーバーからのユーザーインターフェース詳細を含める必要があります。これにより、その UI 要素を PCB Editor のユーザーインターフェースに挿入できるようになります(後述)。
次のセクションでは、Altium Designer の GUI 要素を定義するサーバーリソースファイルを見ていきます。
リソースファイルとそのセクション
リソースファイル(RCS 拡張子)は、2 つのセクションで構成されます。Process Launcher 定義と Process Launcher Trees 定義です。
プロセスランチャーは、Altium Designer のメニュー項目、ホットキー、ツールバーなどの UI 要素にリンクされたコマンドです。リソースファイルのプロセスランチャーセクションには、プロセスランチャーブロックの一覧があります。各プロセスランチャーブロックは PL–End 句で示され、固有の名前を持つ必要があります。
PL–End ブロックには次の識別子があります。
- PL
- サーバーコマンド文字列にリンクされたプロセスランチャーの固有名(PL 文字列が接頭辞)
- Command
- Caption
- Image
- ShortCut1
- ShortCut2
- Params
- Description
-
End
これらのプロセスランチャーは、その後リソースファイルの process launcher trees セクションで使用されます。これらの process launcher trees は、Altium Designer のメニュー項目、ツールバーボタン、またはホットキーに対応付けられます。
プロセスランチャー(PL–End ブロック)の例 - CountPads プロセスをメニューとボタンにマップします。
PL PLAddon:CountPadsAndShowDialog Command='Addon:CountPads' Caption='&Pad Count on Dialog...' Image='Pad1.bmp' Shortcut1='d' Shortcut2='' Params='Display=False' Description='Display pad count in a dialog.' End
(上記の)このプロセスランチャーは、Addon:CountPads というプロセスランチャーを定義し、Caption は Pad Count on Dialog、メニュー項目用の画像とショートカットキー「d」を持ちます。注: メニュー項目のホットキーを設定するには、Process Launcher(PL)ブロックの Shortcut1 句にキー文字を、Shortcut2 句に代替キー文字を定義する必要があります。
リソースファイルの process launcher trees セクションは、File メニューのような各トップレベル UI 要素(ホットキー、ツールバー、またはメニュー)を表すツリーの一覧を提供します。各 process launcher tree の中で、特定のプロセスランチャーを、そのトップレベル UI 要素(例: メインメニュー)の下にあるサブ UI 要素(例: サブメニュー)へリンクする定義を行います。たとえば Save As メニュー項目などです。この例では、3 つの AddOon 拡張コマンドが
Process Launcher Tree–End 句には次の識別子があります。
- Tree
- プロセスランチャーツリーの固有名
- TargetId
- RefIDn(n は数値、0..N)
- Popup
- Link
- Separator
- End
ツリーブロック内には Link と Separator があります。Altium Designer では、Separator はメニュー項目/ツールバーボタンと次のメニュー項目/ツールバーボタンの間に区切り線を挿入します。Link については、各 process launcher tree ブロック内で、プロセスランチャーへのリンク識別子が固有でなければなりません。
プロセスランチャーツリーブロックの例 - 3 つのメニュー項目を定義します。
... Tree MNAddonMenuTree Caption='&Addon Menu' Popup='1' Link AddonMenu1 PLID='PLAddon:CountPadsAndShowDialog' End Link AddonMenu2 PLID='PLAddon:CountPadsAndShowDocument' End Separator AddonSeparator1 End Link AddonMenu3 PLID='PLAddon:RunAPCBProcess' End End
このプロセスランチャーツリーブロックは、PCB メニューに表示される 3 つのメニュー項目を定義します。
注: ポップアップメニューを有効にするには、Tree 句の末尾に Popup 識別子とキー値(ここでは Popup='1'
また、PCB エディタがコマンドをどこに接続するかを認識できるように、TargetId と RefID0 の値を指定する必要があります。
TargetID 句は、メインサーバーのリソースファイルからリンク元となるトップレベル UI 要素を識別します。例として PCB の View メニューがあります。下の Insertion–End ブロックのコードを参照してください。
RefID0 句は、新しいリソース項目を、既存の UI 要素(たとえばメニュー内のメニュー項目)の前後どちらに挿入するかを参照します。下の Insertion–End ブロックのコードを参照してください。この処理はツールバーボタンやホットキーでも同様ですが、挿入本体内ではツリーではなく、プロセスランチャーへのリンクだけが必要です。
既存メニューへの新しいメニュー項目の挿入
サーバーのプロセスランチャーを持つターゲットのメニュー(PCB Editor など)に新しいメニュー項目を配置するには、次のことを行う必要があります。
-
AddOn プロジェクトのリソースファイルを、Insertion–End ブロック(
)で更新します。AddOn.rcs -
インストールファイル(
)に、対象 PCB エディタ名を指定した Updates 句を挿入します。AddOn.ins -
対象 PCB エディタのインストールファイル(
)内のAdvPCB.insResourceDependencies ブロックに、拡張サーバー名を挿入します。
// Inserts two new addon processes in the PCB's View menu Insertion MNAddOnMenu TargetID='MNPCB_View10' RefID0='MNPCB_View80' Tree MNAddonMenuTree Caption='&Addon Menu' Popup='1' Link AddonMenu1 PLID='PLAddon:CountPadsAndShowDialog' End Link AddonMenu2 PLID='PLAddon:CountPadsAndShowDocument' End Separator AddonSeparator1 End Link AddonMenu3 PLID='PLAddon:RunAPCBProcess' End End End
これを行うには、PCB メニュー内で新しいメニュー項目を表示する位置を示す Target ID と Resource reference ID の値を把握しておく必要があります。参照すべき \SystemAdvPCB.rcs
AddOn 拡張の完成版ファイルは次のとおりです。後の段階で、ツールバー用の Insertion–End ブロックが追加されます。
PL PLAddon:CountPadsAndShowDialog Command='Addon:CountPads' Caption='&Pad Count on Dialog...' Image='Pad1.bmp' Shortcut1='d' Shortcut2='' Params='Display=False' Description='Display pad count in a dialog.' End PL PLAddon:CountPadsAndShowDocument Command='Addon:CountPads' Caption='&Pad Count on Document...' Image='Pad2.bmp' Shortcut1='t' Shortcut2='' Params='Display=True' Description='Display pad count in a text document.' End PL PLAddon:RunAPCBProcess Command='Addon:RunAPCBProcess' Caption='&Run a PCB Process...' Image='' Shortcut1='r' Shortcut2='' Params='' Description='Runs a PCB Process\!' End // Inserts two new addon processes in the PCB's View menu Insertion MNAddOnMenu TargetID='MNPCB_View10' RefID0='MNPCB_View80' Tree MNAddonMenuTree Caption='&Addon Menu' Popup='1' Link AddonMenu1 PLID='PLAddon:CountPadsAndShowDialog' End Link AddonMenu2 PLID='PLAddon:CountPadsAndShowDocument' End Separator AddonSeparator1 End Link AddonMenu3 PLID='PLAddon:RunAPCBProcess' End End End
このリソースファイルから、3 つのプロセスランチャーブロックがそれぞれのコマンドとともに定義されます。さらに、メニューに表示されるキャプション、アクセラレータキー(ショートカット)、ツールバーおよびメニュー項目に表示されるビットマップへのパス、パラメトリックコマンド用のパラメータ、そして最後に、Altium Designer のツールチップまたはステータスバーに表示されるこのプロセスランチャーの説明も定義されます。
リソースファイル内の Process Launcher Tree セクションでは、CountPads および RunAPCBProcess のプロセスランチャー(それぞれのショートカットキー付き)を含む 3 つの新しいメニュー項目が、
PCB エディタには、AddOn 拡張が PCB View メニューに 3 つのプロセスランチャーを追加したいことを通知する必要があります。そのために、以下に示すように Addon.ins
ClientInsFile 1.0 Server EditorName = 'AddOn' EditorExePath = 'AddOn.DLL' EditorDescription = 'Demonstratory AddOn module' Version = 'Version 6.8.0.14549' Date = '07-Aug-2008' HelpAboutInfo = 'This software is protected by copyright law and international treaties.' Copyright = 'Copyright © Altium Limited 2013' Updates = 'ADVPCB' End Command Name = 'CountPads' LongSummary = 'Find how many pads on a PCB document' End Command Name = 'RunAPCBProcess' LongSummary = 'Invoke a PCB process' End
すべてのファイルを保存して、プロジェクトを再コンパイルします。Altium Designer の \System
PCB エディタのワークスペースにツールバーを追加する
拡張のプロセスランチャーを含む新しいツールバーを PCB エディタのワークスペースに配置する手順は次のとおりです。
- ツールバーおよびパネル位置ファイルに、新しい BarLayout ブロックを定義します。
- サーバープロセスを指す Tree End ブロックでリソースファイルを更新します。
- インストールファイル内の EditorWindowKind ブロックに、Name 句と EditorBar 句を挿入します。
- PCB エディタのインストールファイル内の ResourceDependencies ブロックに、拡張サーバー名を挿入します。
設計ワークスペース上にフローティング表示された新しいツールバー。
上図は、PCB ワークスペース上に AddOn 拡張のツールバーがフローティング表示されている様子を示すスクリーンショットです。最初のステップは、PCB ワークスペース上の新しいフローティングツールバー(具体的には PCB タイプのドキュメントが開かれているときのみ)に対するプロセスランチャーを定義するプロジェクトのリソースファイルを定義することです。この演習では、フローティングツールバーの名称を
次に、TLT 拡張子の新しいツールレイアウトファイルを定義し、サーバーのインストールファイルを更新します。ツールバー名は、サーバーのリソースファイルで使用される名称が、ツール位置ファイルおよびインストールファイルでも使用される点に注意してください。
Altium Designer の GUI を試行している間は、ユーザーインターフェースのカスタマイズを削除するために DXP.RCSDXP.RAFUserTools.TLT
ターゲットのインストールファイルを更新する
拡張サーバーが PCB ワークスペースに新しいツールバーを挿入する場合、AdvPCB.INS
AdvPCB のインストールファイルは、AddOn 拡張のユーザーインターフェース詳細を含むように更新され、PCB エディタのユーザーインターフェースへその UI 要素を挿入できるようになります。Adv.INS\System
ClientInsFile 1.0 Server EditorName = 'PCB' <SNIP> ResourceDependencies 'AutoPlacer' <SNIP> 'PinSwapper' 'AddOn' End End
インストールファイルを更新する
ここでは、次の形式で EditorWindowKind
EditorBar Name = NameOfAddon BarType = ResourceType (Toolbar, Menu, HotKeyTable) End
次に、プロジェクトのリソースファイル内で、ツールバーボタンへのリンクを持つ新しい Tree ブロックを定義します。最後に、TLT ファイル内でツールバー用の BarLayout ブロックを定義します(BarName 句と BarDocumentKind 句の指定を忘れないでください)。
ClientInsFile 1.0 Server EditorName = 'AddOn' EditorExePath = 'AddOn.DLL' EditorDescription = 'Demonstratory AddOn module' Version = 'Version 6.3.0.6689' Date = '29-Dec-2012' HelpAboutInfo = 'This software is protected by copyright and international treaties.' Copyright = 'Copyright © Altium Limited 2012' Updates = 'ADVPCB' End EditorWindowKind Name = 'Pcb' EditorBar Name = 'TLAddon' BarType = Toolbar End End Command Name = 'CountPads' LongSummary = 'Find how many pads on a PCB document' End Command Name = 'RunAPCBProcess' LongSummary = 'Invoke a PCB process' End
Updates 句は、Altium Designer に対して PCB Server(AdvPCB)を更新し、そのリソースを更新するよう指示します。Updates 句の形式は次のとおりです: Updates 'NameOfTargetServer'
この場合、PCB エディタを更新したいので、ADVPCB 文字列を使用します。
リソースファイルを更新する
繰り返しになりますが、拡張サーバーのリソースファイル(RCS 拡張子)は、プロセスランチャーの一覧を持つテキストファイルです。各プロセスランチャーは、コマンド文字列、ビットマップ、パラメータなどから構成される PL-End ブロックで囲まれます。ツール位置ファイル内のツールバー名は、Editor 内の名称に対応します。
PL PLAddon:CountPadsAndShowDialog Command='Addon:CountPads' Caption='&Pad Count on Dialog...' Image='Pad1.bmp' Shortcut1='t' Shortcut2='' Params='Display=False' Description='Display pad count in a dialog.' End PL PLAddon:CountPadsAndShowDocument Command='Addon:CountPads' Caption='&Pad Count on Document...' Image='Pad2.bmp' Shortcut1='d' Shortcut2='' Params='Display=True' Description='Display pad count in a text document.' End PL PLAddon:RunAPCBProcess Command='Addon:RunAPCBProcess' Caption='&Run a PCB Process...' Image='' Shortcut1='r' Shortcut2='' Params='' Description='Runs a PCB Process\!' End // Inserts two addon processes in the PCB's View menu Insertion MNAddOnMenu TargetID='MNPCB_View10' RefID0='MNPCB_View80' Tree MNAddonMenuTree Caption='&Addon Menu' Link AddonMenu1 PLID='PLAddon:CountPadsAndShowDialog' End Link AddonMenu2 PLID='PLAddon:CountPadsAndShowDocument' End Separator AddonSeparator1 End Link AddonMenu3 PLID='PLAddon:RunAPCBProcess' End End End // Inserts two toolbar buttons on a new floating toolbar Tree TLAddon Caption='Addon Tools' TopLevel=True Link TBAddon_Item1 PLID='PLAddon:CountPadsAndShowDialog' End Separator TBAddon_Item2 End Link TBAddon_Item3 PLID='PLAddon:CountPadsAndShowDocument' End End
最後の Tree ブロック内で、2 つの Link 識別子(すべてのリンクは一意)は、2 つのボタンビットマップを持つ新しいツールバー上の 2 つのプロセスランチャーにリンクされます。このツールバーの名称は
サーバーのリソースファイル内のツールバー名は、ツール位置ファイルおよびインストールファイルでも使用されます。
新しいツールレイアウトファイルを定義する
ツールレイアウトファイル(TLT 拡張子)は、各メニュー/パネル/ホットキー/ツールバーに関する情報を持つテキストファイルで、(例として)ドッキングかフローティングか、メニュー・パネル・ツールバーのサイズなどを定義します。ツールレイアウトファイル内のバー名は、サーバーのリソースファイル内のエントリに対応します。たとえば PCB ワークスペースに AddOn 拡張用の新しいツールバーを追加するには、レイアウトファイルを定義する必要があります。
ToolsLayout BarLayout BarName='TLAddon' BarState=BarStateFloating BarDockSite=DockSiteNone BarDockOffset=563 BarFloatLeft=307 BarFloatTop=137 BarFloatWidth=51 BarActive=True BarDocumentKind=PCB End End
ツールレイアウトファイルは、新しいツールバーがフローティングになるように定義し、PCB ワークスペース内でのツールバーの位置とサイズを設定します。BarName が TLAddon に設定され、対応するリソースファイル内の TLAddon エントリと一致していることを確認してください。BarState 識別子は BarStateFloating に、BarDocumentKind 識別子は PCB に設定します。
まとめ
たとえば PCB エディタにメニュー項目を追加するには、リソースファイル内に Insertion 句を用意し、
PCB エディタにツールバーを追加するには、更新すべきファイルが 4 つあります。
- サポートサーバーの INS、TLT、RCS ファイル
-
ターゲットサーバーの INS ファイル(つまり、Altium Designer の
フォルダ内にある適切な\System ファイル)*.ins
\Examples\Addon Complete\
実装およびサーバー拡張の構成ファイルの変更についての詳細は、Server configuration files を参照してください。
Altium Designer SDK を使用した拡張サーバーの開発とデプロイの全体像については、An Overview of the Altium SDK を参照してください。

