アドインの登録

アドインの登録

Revit 内部で表示するには、外部コマンドや外部アプリケーションを登録する必要があります。.addin マニフェスト ファイルに追加することで登録できます。

外部コマンドやアプリケーションが Revit に一覧表示される順番は、Revit の起動時に読み込まれる順序によって決まります。

マニフェスト ファイル

Revit API アプリケーションは .addin マニフェスト ファイルを介して Revit に登録されます。ユーザのシステム上の次の 2 つの場所のいずれかにマニフェスト ファイルが配置されていると、Revit によって自動的に読み込まれます。

「アプリケーション データ」内のユーザ固有ではない場所:

  • Vista/Windows 7/Windows 8 の場合 - C:¥ProgramData¥Autodesk¥Revit¥Addins¥2015¥

「アプリケーション データ」内のユーザ固有の場所:

  • Vista/Windows 7/Windows 8 の場合 - C:¥Users¥<user>¥AppData¥Roaming¥Autodesk¥Revit¥Addins¥2015¥

これらの場所にある .addin という名前のすべてのファイルが Revit の起動時に読み込まれ、処理されます。ユーザ固有の場所やすべてのユーザの場所の両方にあるすべてのファイルがまとめて処理され、アルファベット順でロードされます。すべてのユーザのマニフェスト ファイルがユーザ固有のマニフェスト ファイルと同じ名前を持っている場合は、すべてのユーザのマニフェスト ファイルが無視されます。各マニフェスト ファイル内の外部コマンドや外部アプリケーションが、リストされている順番にロードされます。

1 つの ExternalCommand を追加する基本ファイルは次のようになります。

コード領域 3-9: マニフェスト .addin ExternalCommand

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<RevitAddIns>
        <AddIn Type="Command">
                <Assembly>c:\MyProgram\MyProgram.dll</Assembly>
                <AddInId>76eb700a-2c85-4888-a78d-31429ecae9ed</AddInId>
                <FullClassName>Revit.Samples.SampleCommand</FullClassName>
                <Text>Sample command</Text>
                <VendorId>ADSK</VendorId>
                <VendorDescription>Autodesk, www.autodesk.com</VendorDescription> 
                <VisibilityMode>NotVisibleInFamily</VisibilityMode>
                <Discipline>Structure</Discipline>
                <Discipline>Architecture</Discipline>
                <AvailabilityClassName>Revit.Samples.SampleAccessibilityCheck</AvailabilityClassName>
                <LongDescription>
                        This is the long description for my command.
                        This is another descriptive paragraph, with notes about how to use the command properly.
                </LongDescription>
                <TooltipImage>c:\MyProgram\Autodesk.png</TooltipImage>
                <LargeImage>c:\MyProgram\MyProgramIcon.png</LargeImage>
        </AddIn>
</RevitAddIns>

1 つの ExternalApplication を追加する基本ファイルは次のようになります。

コード領域 3-10: マニフェスト .addin ExternalApplication

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<RevitAddIns>
<AddIn Type="Application">
                <Name>SampleApplication</Name>
                <Assembly>c:\MyProgram\MyProgram.dll</Assembly>
                <AddInId>604B1052-F742-4951-8576-C261D1993107</AddInId>
                <FullClassName>Revit.Samples.SampleApplication</FullClassName>
                <VendorId>ADSK</VendorId>
                <VendorDescription>Autodesk, www.autodesk.com</VendorDescription>
</AddIn>
</RevitAddIns>

1 つの DB レベルの外部アプリケーションを追加する基本ファイルは次のようになります。

コード領域: マニフェスト .addin ExternalDBApplication

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<RevitAddIns>
<AddIn Type="DBApplication">
                <Assembly>c:\MyDBLevelApplication\MyDBLevelApplication.dll</Assembly>
                <AddInId>DA3D570A-1AB3-4a4b-B09F-8C15DFEC6BF0</AddInId>

                <FullClassName>MyCompany.MyDBLevelAddIn</FullClassName>

                <Name>My DB-Level AddIn</Name>                    
                <VendorId>ADSK</VendorId>
                <VendorDescription>Autodesk, www.autodesk.com</VendorDescription>
</AddIn>
</RevitAddIns>

1 つのマニフェスト ファイルで複数のアドインを提供できます。

次の表では、使用可能な XML タグについて説明します。

タグ

説明

Assembly

アドイン アセンブリ ファイルへの完全パスです。すべての ExternalCommand と ExternalApplication に必要です。

FullClassName

IExternalCommand または IExternalApplication を実装するアセンブリ ファイルのクラスの完全な名前です。すべての ExternalCommand と ExternalApplication に必要です。

AddInId

この特定のアプリケーションの ID を表す GUID です。AddInId は Revit の特定のセッションに対して一意である必要があります。

オートデスクは、登録された各アプリケーションまたはコマンド用に一意の GUID を生成することをお勧めします。すべての ExternalCommand と ExternalApplication に必要です。

Name

アプリケーションの名前です。ExternalApplication のみに必要です。

テキスト

ボタンの名前です。(省略可能)このタグは ExternalCommand にのみ使用します。既定は「外部ツール」です。

VendorId

オートデスク ベンダー ID 規格に準拠した文字列です。すべての ExternalCommand と ExternalApplication に必要です。

オートデスクでのベンダー ID 文字列の登録は、http://www.autodesk.com/symbreg で行います。

VendorDescription

ベンダーの正式名称とその他の関連情報を含む説明です。省略可能。

説明

コマンドの簡単な説明で、ボタンのツールチップとして使用します。(省略可能)このタグは ExternalCommand にのみ使用します。

既定ではコマンド文字列とツールチップが表示されます。

VisibilityMode

外部コマンドが表示されるモードです。このオプションには、複数の値を設定できます。(省略可能)このタグは ExternalCommand にのみ使用します。

既定では、アクティブなドキュメントがない場合も含め、すべてのモードでコマンドを表示します。以前に作成した外部コマンドで、アクティブなドキュメントに対して実行する必要があるものについては、アクティブなドキュメントがない場合のコマンドの呼び出しをコードで処理するようにするか、NotVisibleWhenNoActiveDocument モードを適用するように修正する必要があります。詳細については、下の表を参照してください。

Discipline

外部コマンドが表示される専門分野です。このオプションには、複数の値を設定できます。(省略可能)このタグは ExternalCommand にのみ使用します。

既定では、すべての専門分野でコマンドを表示します。特定の専門分野をリストに入れると、それらの専門分野にのみコマンドが表示されます。詳細については、下の表を参照してください。

AvailabilityClassName

IExternalCommandAvailability を実装しているアセンブリ ファイルのクラスの完全な名前です。このクラスを使用すると、コマンド ボタンをコンテキストに応じて選択的にグレー表示することができます。(省略可能)このタグは ExternalCommand にのみ使用します。

既定は、表示時に使用可能なコマンドです。

LargeImage

[外部ツール]プルダウン メニューのボタンに使用するアイコンです。(省略可能)このタグは ExternalCommand にのみ使用します。

既定では、アイコンなしでボタンを表示します。

SmallImage

クイック アクセス ツールバーにボタンを昇格する際に使用するアイコンです。(省略可能)このタグは ExternalCommand にのみ使用します。

既定では、クイック アクセス ツールバー ボタンはアイコンなしで表示されますが、ユーザが混乱する恐れがあります。

LongDescription

コマンドの詳しい説明で、ボタンの拡張ツールチップの一部として使用されます。マウスをコマンドの上に一定時間以上置くと表示されます。(省略可能)このタグは ExternalCommand にのみ使用します。このプロパティと TooltipImage が指定されていない場合、ボタンには拡張ツールチップは表示されません。

TooltipImage

ボタンの拡張ツールチップの一部として表示されるイメージ ファイルです。マウスをコマンドの上に一定時間以上置くと表示されます。(省略可能)このタグは ExternalCommand にのみ使用します。このプロパティと TooltipImage が指定されていない場合、ボタンには拡張ツールチップは表示されません。

LanguageType

外部ツールボタンの Text、Description、LargeImage、LongDescription、TooltipImage のローカリゼーション設定です。Revit は、指定された言語リソース dll からリソース値をロードします。値には Revit がサポートする 11 の言語のうちいずれか 1 つを使用できます。LanguageType が指定されていない場合、Revit の現在のセッションで使用されている言語リソースが自動的にロードされます。詳細については、ローカリゼーションのセクションを参照してください。

AllowLoadIntoExistingSession ロード権限のフラグです。false に設定すると、新しく追加した .addin マニフェスト ファイルのアドインを Revit が再起動なしで自動的にロードするのを防ぐことができます。省略可能。既定では、Revit は新しく追加した .addin マニフェスト ファイルから Revit の再起動なしでアドインを自動的にロードします。

表 3: VisibilityMode メンバー

メンバー名

説明

AlwaysVisible

Revit API がサポートするすべてのモードでコマンドを使用できます。

NotVisibleInProject

プロジェクト ドキュメントがアクティブな場合、コマンドは表示されません。

NotVisibleInFamily

ファミリ ドキュメントがアクティブな場合、コマンドは表示されません。

NotVisibleWhenNoActiveDocument

アクティブなドキュメントがない場合、コマンドは表示されません。

表 4: Discipline メンバー

メンバー名

説明

Any

Revit API がサポートするすべての専門分野でコマンドを使用できます。

Architecture

Autodesk Revit Architecture でコマンドを表示します。

Structure

Autodesk Revit Structure でコマンドを表示します。

StructuralAnalysis

[構造解析]専門分野編集ツールが使用できる場合に、コマンドを表示します。

MassingAndSite

[マス & 外構]専門分野編集ツールが使用できる場合に、コマンドを表示します。

EnergyAnalysis

[エネルギー解析]専門分野編集ツールが使用できる場合に、コマンドを表示します。

Mechanical

Autodesk Revit MEP などで[機械]専門分野編集ツールが使用できる場合に、コマンドを表示します。

Electrical

Autodesk Revit MEP などで[電気]専門分野編集ツールが使用できる場合に、コマンドを表示します。

配管

Autodesk Revit MEP などで[配管]専門分野編集ツールが使用できる場合に、コマンドを表示します。

MechanicalAnalysis

[機械解析]専門分野編集ツールが使用できる場合に、コマンドを表示します。

PipingAnalysis

[配管解析]専門分野編集ツールが使用できる場合に、コマンドを表示します。

ElectricalAnalysis

[電気解析]専門分野編集ツールが使用できる場合に、コマンドを表示します。

マニフェスト ファイル用の .NET アドイン ユーティリティ

.NET ユーティリティ DLL である RevitAddInUtility.dll には、Revit アドイン マニフェスト ファイルの読み込み、書き込み、修正が可能な専用の API が備わっています。これは、製品インストーラやスクリプトでの使用を目的としています。SDK インストール フォルダ内の RevitAddInUtility.chm ヘルプ ファイルの API ドキュメントを参照してください。

コード領域 3-11: マニフェスト ファイルを作成、編集

//create a new addin manifest
RevitAddInManifest Manifest = new RevitAddInManifest();

//create an external command
RevitAddInCommand command1 = new RevitAddInCommand("full path\\assemblyName.dll", 
     Guid.NewGuid(), "namespace.className");
command1.Description = "description";
command1.Text = "display text";

// this command only visible in Revit MEP, Structure, and only visible 
// in Project document or when no document at all
command1.Discipline = Discipline.Mechanical | Discipline.Electrical |
                        Discipline.Piping | Discipline.Structure;
command1.VisibilityMode = VisibilityMode.NotVisibleInFamily;

//create an external application
RevitAddInApplication application1 = new RevitAddInApplication("appName",
    "full path\\assemblyName.dll", Guid.NewGuid(), "namespace.className");

//add both command(s) and application(s) into manifest
Manifest.AddInCommands.Add(command1);
Manifest.AddInApplications.Add(application1);

//save manifest to a file
RevitProduct revitProduct1 = RevitProductUtility.GetAllInstalledRevitProducts()[0];
Manifest.SaveAs(revitProduct1.AllUsersAddInFolder + "\\RevitAddInUtilitySample.addin");

コード領域 3-12: 既存のマニフェスト ファイルを読み込む

RevitProduct revitProduct1 = RevitProductUtility.GetAllInstalledRevitProducts()[0];

RevitAddInManifest revitAddInManifest = 
     Autodesk.RevitAddIns.AddInManifestUtility.GetRevitAddInManifest(
          revitProduct1.AllUsersAddInFolder + "\\RevitAddInUtilitySample.addin");