サーバー設定ファイル

 

拡張機能サーバーの構成ファイルにより、Altium Designer は起動時に拡張機能のシステム機能と構成を判断できます。本ドキュメントでは、Altium Designer におけるソフトウェア拡張 DLL(ドキュメントエディターやシンプルなアドオンサーバーなど)の構成と配置について詳しく説明します。

構成ファイル セット

ソフトウェア拡張機能の主な構成ファイルには、リソースファイル、インストールファイル、ツールロケーションファイルがあります。拡張プロジェクトに含まれるファイルは、その機能と Altium Designer とのインターフェース方法によって異なります。

拡張機能の構成ファイル

  • リソースファイル (.rcs)
  • インストールファイル (.ins)
  • Tools Layout ファイル (.tlt)
  • ボタンファイル(通常は .bmp)
  • アイコンファイル (.ico)

構成ファイルは通常、メインプロジェクトフォルダー内の \Installation フォルダーに格納され、画像、アイコン、参照ファイルはそれぞれのサブフォルダーに格納されます。たとえば、ボタン画像は \Installation\Buttons に格納されます。

よりシンプルなプロジェクト、たとえばアドオン拡張機能(既存のドキュメントエディターに機能を“追加する”もの)では、Altium Designer にコマンドを実装するためにインストール構成ファイルのみを含める場合があります。モデルエディターや出力ジェネレーターなど、他の種類の拡張サーバーも Altium Designer で開発および配置できます。これらの種類の拡張プロジェクトには、次のものが含まれる場合があります。

  • サーバー実装モデルファイル
  • 出力ジェネレーターまたは実装の構成ファイル

リソースファイル

Altium Designer 環境では、操作はユーザーがメニュー、ツールバー、ホットキーを通じて開始します。そのため、拡張機能の観点では、メニュー、ツールバー、キーボードのホットキーリストは、この環境ではリソースとして扱われます。ツールバーアイコンやメニュー項目などの各リソース項目の背後には、リソース項目が選択されたときにコマンドを起動する、あらかじめ用意されたプロセスランチャーがあります。

拡張機能用のプロセスおよびプロセスランチャーは、そのインストールファイルとリソースファイルによって Altium Designer に公開されます。したがって、拡張機能がインストールされると、MyExtension.dllMyExtension.rcsMyExtension.ins ファイルは C:\ProgramData\Altium\Altium Designer {GUID}\Extensions\MyExtension フォルダー内に共存します。

リソースファイルは、プロセスランチャーブロックとユーザーインターフェース要素を含む ASCII テキストファイルです。リソースファイルは、サーバーのユーザーインターフェースにプロセスランチャーを割り当てるために使用され、拡張子は .RCS です。キーショートカット、メニュー項目、ツールバーボタンを割り当てることができます。要するに、Altium Designer の起動時に、まず \Extensions フォルダー内のすべてのサーバーからデフォルトリソースが読み込まれ(前述のとおり)、システムレベルで拡張機能を実装するために Extension Registry (ExtensionsRegistry.xml) が更新されます。 

リソースファイルの構造

プロセスランチャーは、メニュー項目、ツールバーボタン、ショートカットキーという 3 種類のリソース項目にリンクできます。プロセスランチャーはパラメトリックプロセスにすることもでき、Altium Designer のメニュー項目などのユーザーインターフェース要素にプロセスランチャーがリンクされると、これをコマンドと呼びます。プロセスランチャーはリソースファイルに格納され、プロセス(コマンド)はインストールファイルに格納されます。

リソースファイルの構造は 2 つのセクションで構成されます。

  • 最初のセクションには、定義されたプロセスランチャーの一覧があります。
  • 2 番目のセクションには、プロセスランチャーツリーの一覧があります。

2 番目のセクションでは、拡張サーバーのメニュー、ツールバー、キーテーブルを定義でき、このサーバーのどのプロセスランチャーをどのユーザーインターフェース要素にリンクするかを指定できます。リソースファイルには、コメント文字列の前に二重バックスラッシュを付けることでコメントを記述できます。

リソーススクリプトを作成する際は、すべての Process Launcher Name エントリが一意である必要がある点に注意してください。これは、サーバーが Altium Designer でアクティブ化されると、そのサーバー固有のリソースが読み込まれ、重複するエントリがあると上書きされるためです。

Process Launchers セクション

リソースファイルの Process Launchers セクションには、PL と End のブロックから成るプロセスランチャーステートメントの一覧があります。各ブロック内には、PLName、Command、Params、Caption、Image、ShortCut、Description の各識別子があります。

各プロセスランチャーは、PLServerName: ProcessName 文字列によって参照されます。これらのプロセスランチャーは、リソースファイルの次のセクションで使用され、特定のメニュー項目、ツールバーボタン、またはホットキーにリンクされます。

A process launcher statement:

PL
PLName: Process
Command = 'Server: Process'
Params = 'Parameter1 = Value1\|Parameter2=Value2'
Caption = 'text'
Image ='Name.BMP'
ShortCut1 = ''
Description = ''
End

Process Launcher statement table:

Process Launcher 識別子

説明

PL

PL は Process Launcher ブロックを表します。このブロックは終端文字列 End で終了します。

PLName: Process

各プロセスランチャーブロックには、サーバー名とそのプロセスを表す一意の PLName: Process 文字列があります。この文字列は、プロセスランチャーに割り当てられたプロセスの一意名を表します。例として PLSch:Undo があります。プロセスがパラメトリックである場合、各パラメトリックプロセスに対して異なるプロセスランチャーを持つことができます。

Command = Server: Process

Command 句は、実際のサーバープロセスを表します。Command 句に割り当てられる Server: Process 文字列は、サーバーのインストールファイル内にある Command Name 句のいずれかから識別されます。PLName: Process 文字列は PL End ブロックの名前であり、Command 句と Params 句によって特定のプロセスランチャーが識別されます。

Params ='Parameter1 = value1 | .. ParameterN = Value N'

サーバープロセスに複数のパラメーターを割り当てます。同じサーバープロセスであっても、異なる Process Launcher ブロック内で個別のプロセスランチャーおよび異なる Params 句を持つことができる点に注意してください。

Caption

プロセスランチャーベースのメニュー項目に対するキャプションの定義です。Caption 文字列内では '&' 文字を使用でき、これはホットキー / アクセラレータキーを示し、& の直後の文字に下線が引かれます。たとえば、キャプション文字列 &File は File メニュー上で File として表示されます。

Image

プロセスランチャーベースのツールバー項目またはメニュー項目用ビットマップ画像へのパスです。画像は Altium Designer インストール内の \Buttons フォルダーに保存され、各ボタン画像のサイズは 18 x 18 ピクセルである必要があります。

ShortCut1

メニュー項目のアクセラレータキーショートカットです。

ShortCut2

同じメニュー項目に対する 2 つ目のアクセラレータキーショートカットです。

Description

ツールチップおよび Altium Designer のステータスバーに使用されるテキストメッセージです。

PLRepeat

PLRepeat 識別子は、繰り返しコマンドの範囲を定義するために必要です。繰り返される類似コマンドの範囲を定義するには、PLName: Process 識別子、Symbol1、BeginIndex1、EndIndex1 識別子が必要である点に注意してください。

End

プロセスランチャーブロックの終了を示す終端文字列です。

An example of Process Launcher block

PL
PLSch:Undo
Command='Sch:Undo'
Caption='&Undo '
Image='UNDO.BMP'
Shortcut1='Ctrl+Z'
Shortcut2='Alt+Backspace'
Description='Undo'
End

Process Launcher Trees セクション

リソースファイルの 2 番目のセクションには Process Launcher Trees が含まれます。各ツリーは、3 種類のリソースのいずれか 1 つ、すなわちメニュー、ツールバー、ホットキーテーブルを指定します。また、1 つのツリー内にサブツリー(たとえばメニューのサブメニューを表すもの)を持つこともできます。同じプロセスランチャーを複数の process launcher identifier(PLID)に割り当てることができます。各ツリー内では、Link 句がプロセスランチャーを指し、一意のリンク名を持つ必要があります。

Altium Designer は、すべてのアクティブサーバーについて、ユーザーインターフェース リソース用のプロセスランチャーテーブルを維持します。したがって、process launcher clause への各リンクには一意の Link 識別子が必要です。プロセスランチャーのショートカットは、利用可能な process launcher tree のいずれかに含まれていれば有効になります。

プロセスランチャーにはショートカットが(2 つ)あるため、ショートカットそのものを保持するためにホットキーテーブルを用意する必要はありません。ただし、ホットキーテーブルを使うことで、プロセスランチャー(コマンド)がメニュー内にも表示中のツールバー内にもない場合でも、そのショートカットを機能させることができます。ショートカットテーブルがなければ、そのショートカットは機能しません。そのため、ファイルの PL セクションには別のツリーカテゴリがあり、これは基本的に、他の利用可能な process launcher tree に含まれている場合も含まれていない場合もあるプロセスランチャーの一覧ですが、ショートカットを有効にしたいものを列挙するものです。概念的には、ホットキーテーブルは実質的に不可視のツールバーです。

以下の例は、Altium Designer における 3 種類の異なるリソースに対して、Process Launcher Trees がどのように構築されるかを示しています。

A basic process launcher tree
Tree NameOfUniqueTreeResource Caption = '' TopLevel = Boolean
TreeCopy NameOfTree_N OriginalID = NameOfTreeToCopy IDSuffix = '' End
Separator Name End
Link NameOfUniqueResourceItem PLID=PLName: Process End
End

この基本的な process launcher tree には必要な要素が含まれますが、既存の Process Launcher tree を別の拡張サーバーのリソースから自分のサーバーリソースへコピーすることもできます。これは、拡張機能のリソースが、たとえば PCB エディターや Schematic エディターなどのドキュメントエディターのリソースに依存している場合に便利です。

Process Launcher Tree table:

Process Launcher Tree 識別子

説明

Tree

process launcher tree の開始ブロックを示します。

NameOfUniqueTreeResource

指定したサーバー用の新しい process launcher tree を構築するには、このツリーに一意の名前が必要です。

Caption

メニュー項目に表示されるキャプション文字列です。

TopLevel

メニュー階層の最上位レベルと、サブメニューを定義するためのサブツリーの使用を記述します。

Popup

Altium Designer のアクティブなドキュメント上にフローティング表示されるポップアップメニューを示します。各ポップアップメニューには一意の文字を割り当てる必要があります。Popup 識別子は Tree 句の一部です。ポップアップメニューに関連付けられたキーが押されると、このポップアップメニューがマウスカーソル位置に表示されます。

ポップアップメニューは既存のメニューと同じ内容にすることもできます。たとえば、ユーザーはメニューバーの File メニューへ移動する方法を 2 つ持つことになります。ポップアップメニュー用に F を押すと、File メニューと同じメニュー項目を持つ File メニューがアクティブになります。

TreeCopy

既存の process launcher tree をプライマリサーバーのリソースファイル(たとえば PCB リソース)からコピーします。この機能は、たとえば File メニューや Edit メニュー項目のような最新の共通ユーザーインターフェース要素を維持するために使用できます。

今後の Altium Designer の更新によりメニュー構造が変更される可能性があるため、TreeCopy 句を使用する拡張サーバーでは、プライマリサーバーと同じユーザーインターフェースが保証されます。ただし、各 Link 識別子が一意になるように IDSuffix 識別子を使用する必要があり、またコピー元の元のプロセスランチャーを識別するために OriginalID 識別子も必要です。

Separator

Separator 識別子は、メニューまたはツールバー内で、あるプロセスランチャーと次のプロセスランチャーの間に空白行を挿入します。

Link

指定したプロセスランチャーをユーザーインターフェース要素にリンクします。Altium Designer はアクティブなすべてのサーバーのプロセスランチャーのテーブルを保持しているため、各 Link 文は一意の識別子を持つ必要があります。

IDSuffix

IDSuffix は、既存の Process Launcher Tree を別のサーバーのリソースからコピーする場合に使用します。コピーされた Tree では、Process Launcher Tree ID に IDSuffix 識別子が追加されます。繰り返しになりますが、Altium Designer はロードされたすべてのサーバーについてプロセスランチャーのテーブルを保持しているため、Link 句内のすべての Link 識別子は一意である必要があります。

PLID

リソースファイル内の process launchers セクションから特定のプロセスランチャーを参照する PLID 識別子です。

LinkRepeat

この LinkRepeat 句は tree または sub tree 内で使用され、後続の Symbol、BeginIndex、および EndIndex の各サブ句を使って、類似した Process Launcher の範囲を定義します。

OriginalId

 

BeginIndex

BeginIndex は、繰り返される類似プロセスランチャーの範囲の開始を示します。LinkRepeat 句は tree または sub tree 内で使用され、後続の Symbol、BeginIndex、および EndIndex の各サブ句を使って、類似した Process Launcher の範囲を定義します。

EndIndex

EndIndex は、繰り返される類似プロセスランチャーの範囲の終端を示します。LinkRepeat 句は tree または sub tree 内で使用され、後続の Symbol、BeginIndex、および EndIndex の各サブ句を使って、類似した Process Launcher の範囲を定義します。

End

Tree、TreeCopy、および Link 句の終了文字列です。

Process Launchers Tree の例

Menu Tree snippet
Tree MNPCB_AutoRoute10 Caption='&Auto Route' Popup='A'
Link MNPCB_AutoRoute20 PLID='PLPCB:AutorouteAll' End
End

メニューでは、メニュー Tree 識別子の短縮形として 'MN' が使用され、各メニュー項目の識別子でも同様に MN が短縮形として使用されます。Tree 句の末尾に Popup='A' 識別子がある点に注意してください。

Toolbar Tree snippet
Tree TLFindSelections Caption='Find Selections' TopLevel=True
Link TBPCB_FindSelections20 PLID='PLPCB:JumpFirstSelection' End
End

ツールバー tree では、Toolbar Tree 識別子の短縮形として 'TL' が使用され、各 Toolbar Button の識別子では TB が短縮形として使用されます。tree 内には sub-tree を含めることができるため、最も外側の tree では TopLevel を true に設定する必要があります。sub tree では、TopLevel を false に設定するか、TopLevel 識別子自体を省略します。

Keys Tree snippet
Tree HTPCBHotKeys Caption='PCB Shortcuts' TopLevel=True
Link HKPCBHotKeys20 PLID='PLPCB: PopupZoomIn' End
End

キー テーブルでは、Keys Tree 識別子の短縮形として 'HT' が使用され、各キーボタンの識別子では HK が短縮形として使用されます。

これら 3 種類のリソース tree が resources ファイル内でどのように定義されるかを理解するには、Altium Designer の AdvPCB.RCS を調べることができます。AdvPCB.RCS は、Altium Designer インストールの \System フォルダーにある PCB Editor の resources ファイルです。

Menu example in AdvPCB.rcs:

//..........................................................................
//********\* Top Level Autoroute Menu
//..........................................................................
Tree MNPCB_AutoRoute10 Caption='&Auto Route' Popup='A'
Link MNPCB_AutoRoute20 PLID='PLPCB:AutorouteAll' End
Separator MNPCB_AutoRoute30 End
Link MNPCB_AutoRoute40 PLID='PLPCB:AutorouteNet' End
Separator MNPCB_AutoRoute90 End
Tree MNPCB_Fanout Caption='&Fanout'
Link MNPCB_Fanout20 PLID='PLPCB:FanoutAll' End
Link MNPCB_Fanout30 PLID='PLPCB:FanoutPowerPlaneNets' End
Separator MNPCB_Fanout50 End
Link MNPCB_Fanout60 PLID='PLPCB:FanoutNet' End
Link MNPCB_Fanout70 PLID='PLPCB:FanoutConnection' End
End
Separator MNPCB_AutoRoute95 End
Link MNPCB_AutoRoute100 PLID='PLPCB:AutorouteSetup' End
Link MNPCB_AutoRoute110 PLID='PLPCB:AutorouteStop' End
End
Toolbar example:
Tree TLFindSelections Caption='Find Selections' TopLevel=True
Link TBPCB_FindSelections20 PLID='PLPCB:JumpFirstSelection' End
Link TBPCB_FindSelections30 PLID='PLPCB:JumpPreviousSelection' End
Link TBPCB_FindSelections40 PLID='PLPCB:JumpNextSelection' End
Link TBPCB_FindSelections50 PLID='PLPCB:JumpLastSelection' End
Separator TBPCB_FindSelections60 End
Link TBPCB_FindSelections70 PLID='PLPCB:JumpFirstGroup' End
Link TBPCB_FindSelections80 PLID='PLPCB:JumpPreviousGroup' End
Link TBPCB_FindSelections90 PLID='PLPCB:JumpNextGroup' End
Link TBPCB_FindSelections100 PLID='PLPCB:JumpLastGroup' End
End
Hot key Table example
Tree HTPCBHotKeys Caption='PCB Shortcuts' TopLevel=True
Tree HTPCBHotKeys Caption='PCB Shortcuts'
Link HKPCBHotKeys20 PLID='PLPCB: PopupZoomIn' End
Link HKPCBHotKeys30 PLID='PLPCB: PopupZoomOut' End
Link HKPCBHotKeys40 PLID='PLPCB:ViewZoomOut' End
Link HKPCBHotKeys50 PLID='PLPCB:ViewZoomIn' End
Link HKPCBHotKeys60 PLID='PLPCB:ViewFitDocument' End
Link HKPCBHotKeys70 PLID='PLPCB:ToggleElectricalGrid' End
Link HKPCBHotKeys80 PLID='PLPCB:Redo' End
Link HKPCBHotKeys90 PLID='PLPCB:Undo' End
Link HKPCBHotKeys110 PLID='PLPCB: PopupSnapGridOther' End
Link HKPCBHotKeys120 PLID='PLPCB:MeasureDistance' End
End
End

Resources ファイルのカスタマイズ

Altium Designer に拡張サーバーをインストールすると、システムは自動的にそのサーバーの resources script file (RCS) を探します。メニュー、ツールバー、キーボード ホットキーなどのリソースは、サーバーの installation file (INS) から定義される点に注意してください。

この installation file 内の EditorBars 識別子は、そのサーバーのツールバー、ホットキー テーブル、およびメニュー バーを指定します。installation file の詳細については、Server's Installation File セクションを参照してください。リソースの実際の実装は、.RCS 拡張子を持つサーバーの resources file で定義されます。resources filename は server filename と同じ名前でなければなりません。

補助拡張機能からの新しい Process Launcher の挿入

ターゲットのソフトウェア拡張機能(たとえば PCB editor)のリソースを更新するには、補助拡張機能の resources script でリソースを定義し、その後、補助拡張機能の installation file に Updates 句を挿入する必要があります。process launcher を挿入するには、補助 resources file 内で Insertion - End ブロックを定義します。process launcher は一度に 1 つずつしか挿入できません。つまり、一度に挿入できるのは 1 つの Menu tree、1 つの Toolbar、または 1 つのキー割り当てだけです。そのため、複数の process launcher を挿入するには、複数の Insertion ブロックが必要です。

TargetID
The TargetID 識別子は、プライマリ resources file からリンクする Process Launcher tree を識別します。たとえば、この識別子はメニューを指すことができます。

RefID0
The RefID0(数値 0 を持つ)識別子は、新しいリソース項目をどの参照メニュー項目に挿入するかを示します。ツールバー ボタンおよびホットキーでもこの処理は同様ですが、通常、挿入本体内では tree は使用されません。必要なのは process launcher へのリンクのみです。たとえば、RefID0 識別子はメニュー項目を指すことができます。

基本的に、Insertion 構造は次のとおりです。

Insertion UniqueNameOfResource TargetID= InsertType= RefID=
Link ResourceItem PLID= End
End

次の 3 つの一般的な例は、process launcher を 3 種類の異なるユーザーインターフェース要素(ホットキー、ツールバー、メニュー項目)にリンクする方法を示しています。

Inserting a menu item based process launcher:

Insertion NameOfMenuTree TargetID='NameOfMenuTreeFromServer' InsertType=After RefID0='ReferenceMenuItemFromServer'
Tree PopUp Caption='CaptionText to appear on menu item'
Link MenuItem1 PLID='PLName: Process' End
Link MenuItem2 PLID='PLName: Process' End
Separator MenuItem3
Link MenuItem4 PLID='PLName: Process' End
End
End

Inserting a toolbar based process launcher:

Insertion UniqueToolBarName TargetID='ToolbarName' InsertType=After RefID0='ToolBarItemName'
Link UniqueToolBarItemName PLID='PLName: Process' End
End

Inserting a hot key based process launcher:

Insertion UniqueHotKeyName TargetID='HotKeyTreeNameFromServer' InsertType=After RefID0='HotKeyItemNameFromServer'
Link UniqueHotKeyItemName PLID='PLName: Process' End
End

ただし、複数のツールバー ボタンを挿入する場合は、複数の insert が必要です。各 insert には異なる RefID0 句を割り当てる必要がある点に注意してください。そうしないと、前のユーザーインターフェース要素が現在の RefID0 挿入で上書きされます。

サーバーのユーザーインターフェース要素は、Insertion 識別子の代わりに Deletion 識別子を使用して削除でき、削除対象の process launcher を識別するために複数の RefID 識別子を使用できます。

ターゲットへの新しいツールバーの追加

Add-on project の例のコマンド(process launcher)を含む新しいツールバーを実装し、それらのコマンドをターゲット拡張機能(たとえば PCB editor ワークスペース上の新しいツールバー)に表示するには、補助サーバーの installation file(たとえば addon.ins)にターゲット サーバー識別子名を持つ Updates 句を挿入し、resources を補助 resources file(たとえば addon.rcs)で定義する必要があります。

次に、EditorBar 句をターゲット installation file(たとえば advpcb.ins)に挿入し、EditorWindowKind 句を識別し(複数の document kind をサポートする場合)、新しいリソースの名前とリソース種別(Menu、Toolbar、HotKey)を指定する必要があります。ResourceDependencies ブロックも、補助サーバー名(たとえば Addon)で更新する必要がある場合があります。 最後に、ツールバーの表示位置、およびドッキングするかフローティング ツールバーとして構成するかを定義するために、tool locations file を作成できます。詳細は Tools Locations File セクションを参照してください。

Updating the target server with the Updates clause in Addon.INS installation file example:

ClientInsFile 0.0
Server
EditorName = 'AddOn'
EditorExePath = 'AddOn.DLL'
EditorDescription = 'A demonstratory AddOn module'
Version = 'Version 8.4.03.3664'
Date = '31-Dec-2004'
HelpAboutInfo = 'This software is protected by copyright law and international treaties.'
CopyRight = 'Copyright © Altium Limited 2005'
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

Resources の例

SDK の \Examples\AddOn Complete フォルダーの例にある拡張機能の resources file を参照してください。この extension server は PCB editor に複数の process launcher を追加します。

Addon.rcs resources file

PL
PLAddon:CountPadsAndShowDialog
Command='Addon:CountPads'
Caption='&Count...'
Image='Pad1.bmp'
Shortcut1='d'
Shortcut2=''
Params='Display=False'
Description='Count pads'
End
 
PL
PLAddon:CountPadsAndShowDocument
Command='Addon:CountPads'
Caption='&Count...'
Image='Pad2.bmp'
Shortcut1='t'
Shortcut2=''
Params='Display=True'
Description='Count pads'
End
 
PL
PLAddon:RunAPCBProcess
Command='Addon:RunAPCBProcess'
Caption='&RunAPCBCProcess...'
Image=''
Shortcut1='r'
Shortcut2=''
Params=''
Description='Runs a PCB Process'
End
 
// Inserts three addon processes in the PCB's View menu
Insertion \_AddOnMenu TargetID='MNPCB_View10' RefID0='MNPCB_View140'
Tree AddonMenuTree 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'
Link TBAddon_Item1 PLID= 'PLAddon:CountPadsAndShowDialog' End
Separator TBAddon_Item2 End
Link TBAddon_Item3 PLID = 'PLAddon:CountPadsAndShowDocument' End
End

この resources script では、3 つの process launcher が定義されています。PCB resources の TargetID 値および RefID 値を確認するための参考として、AdvPCB.RCS ファイルを参照できます。新しいツールバーのボタンが PCB document 上に表示されるようにするには、2 つのボタン画像ファイルをインストール先の \Buttons フォルダーに配置する必要があります。

editor に拡張機能の process launcher を追加する流れを要約すると、次のとおりです。

  • このサーバーの resources file で process launcher と process launcher tree を定義し、PCB または Schematic editor に新しいコマンドを挿入します。AdvSch.RCS または AdvPCB.RCS ファイルは、\System フォルダー内で Target 番号および RefID 番号の参照元となります。
  • 拡張機能プロジェクトの installation file に Updates 'NameOfEditor' 文(ターゲット サーバー)を追加します。

Installation File

ソフトウェア拡張機能の installation file は、サーバー プロセス、リソース種別、ファイル保存/読み込み種別、および設定を含む ASCII テキスト ファイルです。

拡張サーバーの process および process launcher は、その Installation ファイルと Resource ファイルによって Altium Designer に公開される点に注意してください。したがって、.DLL、.RCS、.INS ファイルはインストール フォルダー内に共存します。

すべてのソフトウェア拡張機能には、それ自体と同じファイル名に基づく専用の installation file (*.INS) があります。このようにして、Altium Designer は installation file のデータに基づいてその拡張機能を登録します。

Installation file の構造

editor を構築する際には、ドキュメントの種類とリソースを指定する必要があります(たとえば Schematic Editor には 2 種類の document type、すなわち schematic sheets と schematic libraries があります)。installation file は、document kind を定義できる場所の 1 つです。システムのテキストベースの構成ファイルは、document extension に対する document type の関連付けを指定するため、DXP アプリケーションは特定の document type が生成およびオープンされる際に、どのサーバーを呼び出すべきかを認識できます。

これを行うには、システムの FileFilters および FileExtensions テキストファイルを更新して、document extension に関連付けられた document type を指定する必要があります。file filters の適用例については、SDK の GraphicViewer サンプル プロジェクトを参照してください。

A skeleton Installation file:

ClientInsFile 1.0
Server
EditorName = <Description>
EditorExePath = <DLL FileName>
EditorDescription = <Description>
Version = <Version>
Date = <Day-Month-Year>
HelpAboutInfo = <Description>
CopyRight = <Description>
 
StartupBitmap = <BMP Filename>
Updates = <ServerName>
 
ResourceDependencies
<SupportingServer Name1>
<SupportingServer NameN>
End
End
 
EditorWindowKind
Name = <NameString>
NewWindowCaption = <NewWindowCaptionString>
NewWindowExtension = <NewWindowExtensionString>
WindowKindDescription = <WindowKindDescriptionString>
IconName = <IconNameString>
 
EditorBar Name = <Name> BarType = <Menu,HotKeyTable,Toolbar> End
 
EditorClasses
End
 
LoadFilters
<File Format Name> <FileExtension>
End
 
SaveFilters
<File Format Name> <FileExtension>
End
End
 
PanelInfo
Name = <NameString>
Category = <CategoryString>
BitMap = <Bitmap>
Hotkey = <HotKey>
ButtonVisible = <Boolean>
CanDockVertical = <Boolean>
CanDockHorizontal= <Boolean>
DocumentKinds
<DocumentKinds>
End
ProjectTypes
<ProjectTypes>
End
End
 
Options Page
OptionsPage
Caption = <CaptionName>
FormName = <FormName>
OrderIndex = <Integer>
End
End
 
Command Name= <ProcessName> LongSummary = <Description> End
Command Name= <ProcessName> LongSummary = <Description> End
Command Name= <ProcessName> LongSummary = <Description> End

Installation clauses table:

Installation 句

説明

Server Block

 

EditorName = <Description>

サーバー名を定義する文字列

EditorExePath = <DLL FileName>

サーバーのパス名を定義する文字列

EditorDescription = <Description>

editor の説明を定義する文字列。

Version = <Version>

Altium Designer のバージョン ビルドに基づいてサーバーのバージョンを定義する文字列です。Build Number は DXP の About ダイアログで確認してください。

Date= <Day-Month-Year>

このサーバーがビルドまたは配布された日付を定義する文字列。

HelpAboutInfo = <Description>

サーバーの概要を定義する文字列です。

CopyRight = <Description>

サーバーの著作権情報を定義する文字列です。

StartupBitmap = <BMP Filename>

StartupBitmap が true の場合、サーバーの起動時には毎回、サーバーの読み込み中であることを示すビットマップを表示できます。これは、大規模で複雑なデータ構造を持ち、Altium Designer での読み込みに時間がかかる可能性があるサーバーで役立ちます。

ResourcesDependencies block

 

ResourceDependencies = <Supporting ServerName>

これは、サーバー A がサーバー B のリソースを更新する場合を指し、つまりサーバー A がサーバー B にリソースを追加することを意味します。そのため、Altium Designer が B のリソースを読み込むたびに、続いてサーバー A のリソースが読み込まれます。

これは「プロセスランチャーツリーのコピー」(treecopy)に必要であり、サーバー B がサーバー A によってコピーされるプロセスランチャーツリーを定義している場合に必要です。この場合、Altium Designer はサーバー A のリソースを読み込む前に、まずサーバー B のリソースを読み込みます。具体例として、PCB エディターのようなターゲットサーバーが PCB リソースファイル内で拡張サーバーのプロセスランチャーにリンクしている場合、PCB のインストールファイル内に、その拡張の名前を持つ ResourcesDependency 句が必要になります。

Updates <Target Editor Server>

サポート側サーバーのインストールファイルには updates 句が必要であり、これによって、そのターゲットサーバー文書向けのターゲットサーバーのユーザーインターフェースに新しいプロセスランチャーをリンクすることが指定されます。たとえば、HoleSize 拡張サーバーでは、Updates 句にターゲットサーバーとして AdvPCB が割り当てられ、HoleSize のプロセスランチャーがリンクされます。

EditorWindowKind block

 

EditorWindowKind
<DocumentType> <BlankDocumentTitle> <DocumentExtension> <Description> <ResourcesIconFileName> END

この EditorWindowKind はドキュメントの種類を示します。
<DocumentType> は、SCH、SCHLIB、PCB、PCBLIB などのドキュメントタイプを示します。
<BlankDocumentTitle> は、ドキュメントが Altium Designer で表示されているときにタイトルバーに表示されるドキュメントタイトルです。
<DocumentExtension> は、ドキュメントファイル名の拡張子です。
<Description> は、このドキュメントの説明です。
<ResourcesIconFileName> は、このドキュメントのタブ用アイコンです。

EditorBar Name = <DocumentType> <Tree Id> <Resource Type>

エディターバーには 3 種類あります
- メニュー、ツールバー、ホットキーです。
DocumentType: ドキュメント種別文字列。たとえば PCB ドキュメントなら 'PCB'、回路図ライブラリドキュメントなら 'SCHLIB' などです。
TreeId: リソースファイル / ツールロケーションファイル内のリソース名識別子の 1 つです。
Resource Type: Menu、Toolbar、HotKeyTable

PanelInfo block

 

PanelInfo <PanelName> <DocumentType> <Bitmap> <HotKey> <Button Visible> <Dock Vertical> <Dock Horizontal> <DocumentKinds> <ProjectTypes>

この PanelInfo 句は、サーバーがサポートするパネルを示します。
<PanelName> は、このパネルの名前を示します。
<DocumentType> は、SCH、SCHLIB、PCB、PCBLIB などのドキュメントタイプを示します。
<Bitmap> は、このパネルに関連付けられたビットマップを示します。True / False
<HotKey> は、このパネルの表示状態を切り替えるホットキーを示します。True / False
<ButtonVisibility> は、パネルのボタンを表示するかどうかを示します。True / False。
<Dock Vertical> は、パネルを垂直方向にドッキングできるかどうかを示します。True / False
<Dock Horizontal> は、パネルを水平方向にドッキングできるかどうかを示します。True / False
DocumentKinds の End ブロック。
<ProjectTypes> ブロック

Commands block

 

Command Name = <ProcessName> LongSummary = <Description> HelpFilename <HLPFilename> END

CommandName 句には、このサーバーでサポートされるサーバープロセス定義が含まれます。

インストールファイルの例

各サーバーは、それぞれ INS 拡張子のインストールファイルを持ちます。インストールファイルとサーバーファイルは同じファイル名を持つため、Altium Designer はサーバーの存在を認識し、登録できます。

ドキュメントエディターを構築する場合、そのドキュメントタイプとリソースは、インストールファイル内の EditorFileLoadKind 句および EditorFileSaveKind 句で指定する必要があります。拡張機能固有のドキュメントタイプを扱う場合は、Altium Designer の FileExtensions および FileFilters テキストファイル(\System フォルダー内)も、それに合わせて更新する必要があります。インストール句の使われ方を確認するには、以下の AdvSch.ins インストールファイルを参照してください。

AdvSch.INS Schematic Installation File:

ClientInsFile 1.0
 
Server
EditorName = 'Sch'
EditorExePath = 'AdvSch.dll'
EditorDescription = 'Schematic Capture'
Version = 'Version 8.4.03.3664'
Date = '20-July-2005'
HelpAboutInfo = 'This software is protected by copyright law and international treaties.'
Copyright = 'Copyright © Altium Limited 2005'
StartupBitmap = 'Startup_Schematic.bmp'
 
ResourceDependencies
'Sim'
'LoadPCADSCH'
'Macro'
'SavePCADSCH'
'SchDwgUtility'
'SignalIntegrity'
'EditVHDL'
End
End
 
EditorWindowKind
Name = 'Sch'
NewWindowCaption = 'Sheet'
NewWindowExtention = 'SchDoc'
WindowKindDescription = 'Schematic Document'
IconName = 'SCH'
 
EditorBar Name = 'MNSchematicMenu' BarType = Menu End
EditorBar Name = 'HTSchematicHotKeys' BarType = HotkeyTable End
EditorBar Name = 'TLSchematicTools' BarType = Toolbar End
EditorBar Name = 'TLSimulationSources' BarType = Toolbar End
EditorBar Name = 'TLAdvSimTools' BarType = Toolbar End
EditorBar Name = 'TLSignalIntegrity' BarType = Toolbar End
EditorBar Name = 'TLFormatting' BarType = Toolbar End
EditorBar Name = 'TLFocusedProject' BarType = Toolbar End
EditorBar Name = 'TLSchUtilities' BarType = Toolbar End
EditorBar Name = 'TLWiringTools' BarType = Toolbar End
EditorBar Name = 'TBNavigation' BarType = Toolbar End
EditorBar Name = 'TBLayout' BarType = Toolbar End
 
EditorClasses
'PCBSource'
'FPGASource'
'CoreSource'
End
 
LoadFilters
'Advanced Schematic binary files (*.schdoc)'
'Advanced Schematic binary files (*.sch)'
'Advanced Schematic ascii files (*.schdoc)'
'Protel DOS Schematic files (*.s??)'
'Orcad SDT Schematic files (*.sch)'
End
 
SaveFilters
'Advanced Schematic binary (*.schdoc)'
'Advanced Schematic ascii (*.schdoc)'
'Schematic binary 4.0 (*.sch)'
'Orcad SDT Schematic (*.sch)'
'Advanced Schematic template (*.schdot)'
'Export AutoCAD Files (.dwg;.dxf)'
End
End
 
PanelInfo
Name = 'SchLibraryPanel'
Category = 'S&CH'
Bitmap = ''
Hotkey = 'B'
ButtonVisible = True
CanDockVertical = True
CanDockHorizontal = False
End
 
Command Name = 'AddComponentPart' LongSummary = 'Add a new part to the currently displayed component 'End
Command Name = 'AddRemoveLibraryInSchEditor' LongSummary = 'Add and remove libraries from the schematic editor library list' End

上記の AdvSch.INS ファイルは、主要な機能を示すために簡略化したインストールファイルです。サポートする他のサーバーに対して、Schematic サーバーのユーザーインターフェースを更新するよう指示する ResourceDependency 句がある点に注意してください。

 

ToolBar Locations ファイル

ツールバーとパネルを持つエディターでは、これらのツールバーおよびパネルの位置はツールバー位置ファイル servername.tlt に保存されます。設計ドキュメントが読み込まれると、Altium Designer はツール位置ファイルを読み込み、この関連サーバーのツールバーおよびパネルの位置を最初の 1 回だけ更新します。

Altium Designer は、サーバーの toolbar locations ファイル (.TLT) から、そのサーバーのツールバーおよびパネルレイアウトのデフォルトを読み込みます。次に、それらのデフォルトを上書きする独自の UserTools.TLT ファイル(存在する場合)を適用し、新しいツールバー位置(存在する場合)を更新します。Altium Designer の TLT ファイルは ..\*UserName\AppData\Roaming\AD{xxx} フォルダー(Windows 7)にあります。

ToolsLayout ブロック内には、任意の数の BarLayout ブロックおよび FrameLayout ブロックを含めることができます。BarLayout ブロックはツールバーを定義し、 FrameLayout ブロックは各フレーム内および各フレームに関連付けられたパネルを定義します。アクティブにできるパネルは 1 つだけです。

A skeleton tools layout file:

ToolsLayout
    BarLayout
        BarName= < Name >
        BarState= < State >
        BarDockSite= < DockSite >
        BarDockRow= < DockRow >
        BarDockOffset= < NoOfPixels >
        BarFloatLeft= < NoOfPixels >
        BarFloatTop= < NoOfPixels >
        BarFloatWidth= < NoOfPixels >
        BarActive= < Boolean >
        BarHotkey= < Key >
        BarDocumentKind = < Server Document Name >
    End
    FrameLayout
        FrameState= < State >
        FrameDockSite= < DockSite >
        FrameDockedWidth= < NoOfPixels >
        FrameDockedHeight= < NoOfPixels >
        FrameFloatLeft= < NoOfPixels >
        FrameFloatTop= < NoOfPixels >
        FrameFloatWidth= < NoOfPixels >
        FrameFloatHeight= < NoOfPixels >
        SectionLayout
        SectionSplitRatio=50
        SectionSplitType=Horizontal
            ActivePanels
                <Name Of Document Kind> <NameOfPanel>
            End
            PanelLayout
                PanelName= < Name >
                PanelVisible= < Boolean >
                PanelFloatWidth= < NoOfPixels >
                PanelFloatHeight= < NoOfPixels >
                PanelCanDockHorizontally= < Boolean >
                PanelCanDockVertically= < Boolean >
                PanelHotkey= < Key >
                PanelButtonVisible= < Boolean >
            End
    End
End

ツールバー レイアウト識別子

以下の表では、ツールバーとパネルの tools layout 構造を定義しています。ツールバーとパネルはフローティングとして定義でき、モニター画面の左上隅を基準とした位置に設定できます。

この構造内では、BarLayout ブロックおよび FrameLayout ブロックを定義できます。FrameLayout ブロック内では、PanelLayout ブロックおよび ActivePanel ブロックを定義できます。

Tools Layout identifiers table:

Tools Identifier

説明

ToolsLayout

tools layout ブロックの概要を示す最上位識別子です。ブロックは End 識別子で終了します。

BarLayout

ツールバーの位置です。フローティングツールバーまたはドッキングされたツールバーとして定義できます。

FrameLayout

FrameLayout 内では、PanelLayout ブロックおよび ActivePanels ブロックを定義できます。

SectionLayout

section layout は、フレームセクションのレイアウトを表します。フレームセクションとは、フレーム内で複数のパネルが上下に「積み重ね」られる領域のことです。

PanelLayout

サーバーパネルの設定です。

ActivePanels

FrameLayout ブロック内でどのパネルをアクティブにするかを指定するために使用します。ActivePanels 句は、そのパネルが他のパネルを含むフレームにドッキングされている場合に適用され、このパネルにフォーカスが当たります。

End

ToolsLayout ブロック、BarLayout ブロック、FrameLayout ブロック、PanelLayout ブロック、および ActivePanels ブロックの終了識別子です。

FrameLayout identifiers table for a FrameLayout - End block:

FrameLayout Identifiers

説明

FrameState

フレームの状態です。FrameStateFloating、FrameStateDocked、Unpinned

FrameDockSite

パネルをドッキングする位置です。これは、FrameState 識別子に FrameStateDocked 値が割り当てられている場合にのみ適用されます(上記参照)。この DockSite 識別子には次のパラメーターがあります。DockSiteNone、DockSiteTop、DockSiteLeft

FrameDockedWidth

ドッキングされたフレームの幅を、モニター画面の 0,0 を基準にしたピクセル単位で指定します。

FrameDockedHeight

ドッキングされたフレームの高さを、モニター画面の 0,0 を基準にしたピクセル単位で指定します。

FrameFloatLeft

フローティングフレームの位置を、モニター画面の 0,0 を基準にしたピクセル単位で指定します。

FrameFloatTop

フローティングフレームの位置を、モニター画面の 0,0 を基準にしたピクセル単位で指定します。

FrameFloatWidth

フローティングフレームの幅を、モニター画面の 0,0 を基準にして指定します。

FrameFloatHeight

フローティングフレームの高さを、モニター画面の 0,0 を基準にして指定します。

PanelLayout identifiers table for a PanelLayout - End block:

PanelLayout Identifiers

説明

PanelName

サーバーパネルの一意の名前です。

PanelVisible

ブール値。起動時のパネル表示状態を設定します。

PanelFloatWidth

フローティングパネルの位置を、モニター画面の左上隅を基準にしたピクセル単位で指定します。

PanelFloatHeight

フローティングパネルの位置を、モニター画面の左上隅を基準にしたピクセル単位で指定します。

PanelCanDockHorizontally

ブール値。パネルを水平方向にドッキングできるかどうかを設定します。

PanelCanDockVertically

ブール値。パネルを垂直方向にドッキングできるかどうかを設定します。

PanelHotkey

このパネルにホットキー文字を割り当てます。

PanelButtonVisible

ブール値。パネルボタンを他のパネルボタンとともに Altium Designer のステータスバーに表示するかどうかを設定します。

ActivePanels identifiers table for an ActivePanels - End block:

ActivePanels Identifiers

説明

< サーバー名 >

ドキュメント種別の名前を含む文字列。

< パネル名 >

FrameLayout ブロック内における、このサーバーのアクティブなパネル名を含む文字列。

BarLayout identifiers table for a BarLayout - End block:

バー レイアウト識別子

説明

BarName

このツールバーの一意の名前。このツールバーは、サーバーのインストール ファイル内の EditorBar 句によっても定義されます。

BarState

ツールバーの状態。BarStateFloating、BarStateDocked。

BarDockSite

ツールバーをドッキングする位置。これは、BarState 識別子に BarStateDocked 値が割り当てられている場合にのみ適用されます。この DockSite 識別子には次のパラメーターがあります。DockSiteNone、DockSiteTop、DockSiteLeft、DockSiteRight、DockSiteBottom。

BarDockRow

3 つのドッキング行オプション (0,1,2) のうち、どこにドッキングするかを指定します。

BarDockOffset

ツールバーが左側からドッキングされる位置のオフセットをピクセル単位で指定します。

BarFloatLeft

Altium Designer の左上隅を基準にしたツールバーの位置をピクセル単位で指定します。

BarFloatTop

Altium Designer の左上隅を基準にしたツールバーの位置をピクセル単位で指定します。

BarFloatWidth

フローティング時のツールバーの幅を指定します。

BarActive

ブール値。ツールバーを有効または無効にします。

BarHotKey

このツールバーにホットキーを割り当てます。

BarDocumentKind

ツールバーを関連付けるドキュメントを指定します。PCB ドキュメントには 'PCB'、回路図ドキュメントには 'SCH' を指定します。

PCB エディターへの新しいツールバーの挿入

例として、拡張機能をサポートするプロセス ランチャーを備えたターゲット拡張サーバーに新しいツールバーを配置するには、次のようにします。

  • このサポート サーバー用に、BarLayout ブロックを含む新しい tool locations ファイルを定義する必要があります。
  • ツールバーの process launchers ツリー ブロックを含めるように、サポート サーバーの resources ファイルを更新する必要があります。
  • PCB ワークスペース用の新しいツールバーを含めるために、サポート対象の拡張サーバーのインストール ファイルに Updates 句を追加する必要があります。

また、ターゲット拡張機能のインストール ファイルも変更する必要があります。具体的には、EditorWindowKind ブロック内の既存リストに EditorBar 句を追加します。さらに、ResourceDependencies ブロックの末尾に、たとえば 'AddOn' のようなサポート サーバー名のエントリを追加する必要があります。

この場合、新しいツールバー (TLAddon) は、Add-on プロジェクトの resources ファイルで定義された process launchers とともに呼び出され、インストール ファイルには Updates 句および EditorBar 句が追加されます。完全なソース コード ファイルは SDK の ..\Examples\Addon Complete フォルダーにあります。

新しいツールバーに付ける名前は一意であり、サーバーのインストール ファイル、tool locations ファイル、および resources ファイルの各句で同じ名前を使用することが不可欠です。

Addon.rcs resources file (Addon.rcs):

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

// two tool bar buttons added to the new 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

この resources ファイルでは、2 つのツール ボタンが既存の 2 つの process launchers にリンクされています。指定されたツールバー名 TLAddon は、以下の tool locations ファイルでも使用されています。

Addon Tool Locations File (Addon.tlt):

ToolsLayout
BarLayout
BarName='TLAddon'
BarState=BarStateFloating
BarDockSite=DockSiteNone
BarDockRow=0
BarDockOffset=563
BarFloatLeft=299
BarFloatTop=201
BarFloatWidth=46
BarActive=True
BarDocumentKind = PCB
End
End

tool locations ファイルはサポート サーバー用に定義されており、新しいツールバーがフローティングに設定され、その位置とサイズが PCB ワークスペース内で指定されています。

Addon Installation File (Addon.ins):

ClientInsFile 1.0
 
Server
EditorName = 'AddOn'
EditorExePath = 'AddOn.DLL'
EditorDescription = 'Demonstratory AddOn module'
Version = 'Version 8.3.03.3231'
Date = '23-Apr-2005'
HelpAboutInfo = 'This software is protected by copyright law and international treaties.'
Copyright = 'Copyright © Altium Limited 2005'
Updates = 'ADVPCB'
End
 
EditorWindowKind
Name = 'Pcb'
EditorBar Name = 'TLAddon' BarType = Toolbar End
End
 
Command Name = 'CountPads' LongSummary = 'Find how many pads' End
Command Name = 'RunAPCBProcess' LongSummary = 'Invoke a PCB process' End

EditorBar 句には、ツールバーの一意名 (TLAddon) とリソース項目のタイプ (toolbar、hotkeytable、または menu) が含まれていることに注意してください。

拡張機能のツールバーとパネルの位置

Altium Designer は、ツールバーおよびパネルの位置情報を保持します。拡張機能では、パネルやツールバーを再配置してから Altium Designer を終了すると、新しいパネル/ツールバーの位置は UserTools.TLT ファイルに書き出されます。このファイルは ..\*username*\AppData\AD{xxx} フォルダー、またはその同等の場所にあります。これらの位置情報の値は、次回 Altium Designer でその拡張機能のツールバーやパネルを開くときに、拡張機能の既定値を上書きします。

 

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