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 Complete フォルダにあります。ただし、Addon.tlt ファイルは含まれていない場合があります。その場合でも、下の Tools Layout File セクションに例があります。

PCB Editor でプロセスを設定する

Altium Designer の Run Process ダイアログからサーバープロセスを実行して AddOn 拡張を起動できますが、より良い方法があります。コマンドは、ツールバーボタン、メニュー項目、ホットキーから PCB Editor 内で呼び出せます。これらの拡張サーバープロセスは、PCB エディタ内の新しいリソース項目にリンクされます。

実際には、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 定義です。

Process Launchers resource section

プロセスランチャーは、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 section

リソースファイルの process launcher trees セクションは、File メニューのような各トップレベル UI 要素(ホットキー、ツールバー、またはメニュー)を表すツリーの一覧を提供します。各 process launcher tree の中で、特定のプロセスランチャーを、そのトップレベル UI 要素(例: メインメニュー)の下にあるサブ UI 要素(例: サブメニュー)へリンクする定義を行います。たとえば Save As メニュー項目などです。この例では、3 つの AddOon 拡張コマンドが View » AddOn メニューの下に表示されます。

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 エディタに新しいメニュー項目を追加するには、Insertion–End ブロックを挿入し、そのブロック内に、特定の拡張プロセスランチャーへの Link を定義した Tree–End ブロックを含める必要があります。

また、PCB エディタがコマンドをどこに接続するかを認識できるように、TargetId と RefID0 の値を指定する必要があります。

TargetID
TargetID 句は、メインサーバーのリソースファイルからリンク元となるトップレベル UI 要素を識別します。例として PCB の View メニューがあります。下の Insertion–End ブロックのコードを参照してください。

RefID0
RefID0 句は、新しいリソース項目を、既存の UI 要素(たとえばメニュー内のメニュー項目)の前後どちらに挿入するかを参照します。下の Insertion–End ブロックのコードを参照してください。この処理はツールバーボタンやホットキーでも同様ですが、挿入本体内ではツリーではなく、プロセスランチャーへのリンクだけが必要です。

既存メニューへの新しいメニュー項目の挿入

サーバーのプロセスランチャーを持つターゲットのメニュー(PCB Editor など)に新しいメニュー項目を配置するには、次のことを行う必要があります。

  • AddOn プロジェクトのリソースファイルを、Insertion–End ブロック(AddOn.rcs)で更新します。
  • インストールファイル(AddOn.ins)に、対象 PCB エディタ名を指定した Updates 句を挿入します。
  • 対象 PCB エディタのインストールファイル(AdvPCB.ins)内の ResourceDependencies ブロックに、拡張サーバー名を挿入します。

Example Insertion–End block - this inserts the three process menu items

// 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 の値を把握しておく必要があります。参照すべき TargetId および RefID0 識別子に対応する値は、Altium Designer の \System フォルダ内にある AdvPCB.rcs ファイルで探してください。

AddOn 拡張の完成版ファイルは次のとおりです。後の段階で、ツールバー用の Insertion–End ブロックが追加されます。

Addon.rcs resources file

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 | View メニューのどこに表示されるかを定義します。 

PCB エディタには、AddOn 拡張が PCB View メニューに 3 つのプロセスランチャーを追加したいことを通知する必要があります。そのために、以下に示すように Addon.ins ファイルへ Updates 句と 'ADVPCB' 識別子(シングルクォートを含む)を挿入します。Updates キーワードは基本的に、Altium Designer に対してターゲットサーバー(この場合は PCB エディタ)を直ちに更新するよう指示します。

Installation file (AddOn.ins) with Updates clause added

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 フォルダ内にあるリソースファイル、インストールファイル、およびサーバーモジュール(DLL)を更新することを忘れないでください。これらのファイルをこのフォルダにコピーし、PCB ドキュメントを開いた状態で Altium Designer を起動したら、PCB の View メニューに追加された 3 つの新しいメニュー項目のいずれかから AddOn 拡張のコマンドを呼び出せます。

PCB エディタのワークスペースにツールバーを追加する

拡張のプロセスランチャーを含む新しいツールバーを PCB エディタのワークスペースに配置する手順は次のとおりです。

  • ツールバーおよびパネル位置ファイルに、新しい BarLayout ブロックを定義します。
  • サーバープロセスを指す Tree End ブロックでリソースファイルを更新します。
  • インストールファイル内の EditorWindowKind ブロックに、Name 句と EditorBar 句を挿入します。
  • PCB エディタのインストールファイル内の ResourceDependencies ブロックに、拡張サーバー名を挿入します。

設計ワークスペース上にフローティング表示された新しいツールバー。

上図は、PCB ワークスペース上に AddOn 拡張のツールバーがフローティング表示されている様子を示すスクリーンショットです。最初のステップは、PCB ワークスペース上の新しいフローティングツールバー(具体的には PCB タイプのドキュメントが開かれているときのみ)に対するプロセスランチャーを定義するプロジェクトのリソースファイルを定義することです。この演習では、フローティングツールバーの名称を TLAddon とします。

次に、TLT 拡張子の新しいツールレイアウトファイルを定義し、サーバーのインストールファイルを更新します。ツールバー名は、サーバーのリソースファイルで使用される名称が、ツール位置ファイルおよびインストールファイルでも使用される点に注意してください。

Altium Designer の GUI を試行している間は、ユーザーインターフェースのカスタマイズを削除するために DXP.RCSDXP.RAFUserTools.TLT ファイルを削除することが不可欠です。Altium Designer はこれらのファイルを再作成しますが、念のため既存ファイルを先にバックアップしておくのが賢明です。

Windows OS のインストール状況によっては、DXP.RCSDXP.RAFUserTools.TLT ファイルが隠しフォルダに保存されている場合があります。Windows 7 の場合、これは C:\Users\username\AppData\Roaming\Altium\AD{xxxx} のような場所になります。ここで 'username' は個人フォルダ(通常はログオン名と一致)で、'xxxx' は GUID の数字/文字列を示します。

隠しフォルダを表示するには、Windows の Folder Options ダイアログにある View タブで「隠しファイル、隠しフォルダー、および隠しドライブを表示する」を選択します。

ターゲットのインストールファイルを更新する

拡張サーバーが PCB ワークスペースに新しいツールバーを挿入する場合、AdvPCB.INS ファイルの ResourceDependencies ブロックを修正する必要があります(前述の手順でまだ行っていない場合)。

AdvPCB のインストールファイルは、AddOn 拡張のユーザーインターフェース詳細を含むように更新され、PCB エディタのユーザーインターフェースへその UI 要素を挿入できるようになります。Adv.INS ファイルも、Altium Designer インストールの \System フォルダ内にあります。

AdvPCB installation file (AdvPCB.ins) snippet: Addon server resources reference inserted

ClientInsFile 1.0
Server
EditorName = 'PCB'
<SNIP>
ResourceDependencies
'AutoPlacer'
<SNIP>
'PinSwapper'
'AddOn'
End
End

インストールファイルを更新する

ここでは、次の形式で EditorWindowKind ブロックをサポートサーバーの INS ファイル内に挿入する必要があります。
EditorBar Name = NameOfAddon BarType = ResourceType (Toolbar, Menu, HotKeyTable) End

次に、プロジェクトのリソースファイル内で、ツールバーボタンへのリンクを持つ新しい Tree ブロックを定義します。最後に、TLT ファイル内でツールバー用の BarLayout ブロックを定義します(BarName 句と BarDocumentKind 句の指定を忘れないでください)。

Installation file (addon.ins): Toolbar included

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 内の名称に対応します。

Resources file (addon.rcs): With Toolbar Tree block added

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 つのプロセスランチャーにリンクされます。このツールバーの名称は TLAddon です。

サーバーのリソースファイル内のツールバー名は、ツール位置ファイルおよびインストールファイルでも使用されます。

 

新しいツールレイアウトファイルを定義する

ツールレイアウトファイル(TLT 拡張子)は、各メニュー/パネル/ホットキー/ツールバーに関する情報を持つテキストファイルで、(例として)ドッキングかフローティングか、メニュー・パネル・ツールバーのサイズなどを定義します。ツールレイアウトファイル内のバー名は、サーバーのリソースファイル内のエントリに対応します。たとえば PCB ワークスペースに AddOn 拡張用の新しいツールバーを追加するには、レイアウトファイルを定義する必要があります。

Tools layout file (addon.tlt)

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 句を用意し、TargetIDRefID0 で PCB エディタのサーバーリソースファイル内のユーザーインターフェース要素 ID を参照する必要があります。

PCB エディタにツールバーを追加するには、更新すべきファイルが 4 つあります。

  • サポートサーバーの INS、TLT、RCS ファイル
  • ターゲットサーバーの INS ファイル(つまり、Altium Designer の \System フォルダ内にある適切な *.ins ファイル)

\Examples\Addon Complete\ フォルダ内の AddOn サンプルを参照できます。

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