Revitアドインで任意のボタンを表示する

Revitのアドインアプリケーションで任意のボタンをリボンに表示する方法について

はじめに

こんにちは。本記事では、Autodesk Revitのアドインアプリケーションを作成し、Revitのリボンに任意のボタンを表示する方法について、プログラミング初心者の方でもわかりやすいように丁寧に解説いたします。Revitのリボンに独自のボタンを追加することで、特定の機能やコマンドを簡単に呼び出すことができるようになります。

アドインアプリケーションの作成

まずは、アドインアプリケーションのコードを作成します。以下のコードでは、Revitのリボンに新しいタブとパネルを追加し、ボタンを配置します。このボタンをクリックすると、複数の処理が実行されます。

  1. プロジェクトに新しいクラスを追加します。ソリューションエクスプローラーでプロジェクト名を右クリックし、**「追加」 -> 「クラス」**を選択します。クラス名を「App.cs」とします。

  2. 以下のコードを「App.cs」に追加します。

using System;
using System.IO;
using Autodesk.Revit.UI;
using Autodesk.Revit.Attributes;
using Autodesk.Revit.DB;
using System.Reflection;

namespace RevitRibbonAddin
{
    public class App : IExternalApplication
    {
        public Result OnStartup(UIControlledApplication application)
        {
            // リボンに新しいタブを追加
            string tabName = "CustomTab";
            application.CreateRibbonTab(tabName);

            // リボンに新しいパネルを追加
            RibbonPanel ribbonPanel = application.CreateRibbonPanel(tabName, "CustomPanel");

            // ボタンの作成
            PushButtonData buttonData = new PushButtonData(
                "MyButton",
                "My Button",
                Assembly.GetExecutingAssembly().Location,
                "RevitRibbonAddin.Command");

            PushButton pushButton = ribbonPanel.AddItem(buttonData) as PushButton;

            // ボタンのプロパティを設定
            pushButton.ToolTip = "これはカスタムボタンです。";
            pushButton.LongDescription = "このボタンを押すと、カスタムコマンドが実行されます。";
            pushButton.LargeImage = new Uri("pack://application:,,,/RevitRibbonAddin;component/Resources/MyIcon.png");

            return Result.Succeeded;
        }

        public Result OnShutdown(UIControlledApplication application)
        {
            return Result.Succeeded;
        }
    }

    [Transaction(TransactionMode.Manual)]
    public class Command : IExternalCommand
    {
        public Result Execute(
            ExternalCommandData commandData, 
            ref string message, 
            ElementSet elements)
        {
            // ダイアログの表示
            TaskDialog.Show("Revit Add-in", "カスタムボタンがクリックされました!");

            // 選択された要素を取得
            UIDocument uiDoc = commandData.Application.ActiveUIDocument;
            Document doc = uiDoc.Document;
            Selection sel = uiDoc.Selection;
            ICollection<ElementId> selectedIds = sel.GetElementIds();

            // 選択された要素の情報を表示
            if (selectedIds.Count > 0)
            {
                foreach (ElementId id in selectedIds)
                {
                    Element element = doc.GetElement(id);
                    string info = $"要素ID: {element.Id}\nカテゴリ: {element.Category.Name}\n名前: {element.Name}";
                    TaskDialog.Show("要素情報", info);
                }
            }
            else
            {
                TaskDialog.Show("要素情報", "要素が選択されていません。");
            }

            // 追加の処理(例:ログファイルへの書き込み)
            string logFilePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "RevitAddinLog.txt");
            using (StreamWriter writer = new StreamWriter(logFilePath, true))
            {
                writer.WriteLine($"コマンド実行: {DateTime.Now}");
                writer.WriteLine($"選択された要素の数: {selectedIds.Count}");
            }

            return Result.Succeeded;
        }
    }
}

このコードでは、以下のような複雑な処理を追加しています:

  • リボンに新しいタブとパネルを追加し、ボタンを配置します。

  • ボタンがクリックされると、ダイアログが表示されます。

  • 現在選択されている要素の情報を取得し、その情報をダイアログに表示します。

  • 選択された要素の情報をログファイルに書き込みます。

アドインマニフェストファイルの作成

次に、Revitにアドインを認識させるために、アドインマニフェストファイル(.addinファイル)を作成します。

  1. プロジェクトのルートフォルダに「MyRevitRibbonAddin.addin」という名前のXMLファイルを作成します。

  2. 以下の内容をファイルに追加します。

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<RevitAddIns>
    <AddIn Type="Application">
        <Name>MyRevitRibbonAddin</Name>
        <Assembly>$(targetpath)</Assembly>
        <AddInId>12345678-1234-1234-1234-123456789012</AddInId>
        <VendorId>Company</VendorId>
        <VendorDescription>Your Company</VendorDescription>
    </AddIn>
</RevitAddIns>

ここで、`$(targetpath)`はビルド後のDLLのパスに置き換わります。通常、Visual Studioが自動的に正しいパスに置き換えます。

ビルドとデプロイ

  1. プロジェクトをビルドします。メニューの「ビルド」から「ソリューションのビルド」を選択します。

  2. ビルドが成功したら、ビルドされたDLLファイルと「MyRevitRibbonAddin.addin」ファイルをRevitのアドインフォルダにコピーします。

    • 例:`C:\Users<ユーザー名>\AppData\Roaming\Autodesk\Revit\Addins\202X`

アドインのテスト

  1. Revitを起動します。

  2. Revitのリボンに「CustomTab」というタブが追加されていることを確認します。

  3. 「CustomTab」を選択し、「My Button」をクリックすると、「カスタムボタンがクリックされました!」というメッセージが表示されます。

  4. さらに、選択された要素の情報がダイアログに表示され、ログファイルに書き込まれます。

まとめ

この記事では、Revitのアドインアプリケーションを作成し、リボンに任意のボタンを表示する方法を紹介しました。初めての方でも、この手順に従って進めれば、Revitのリボンに独自のボタンを追加し、特定のコマンドを実行することができるようになります。さらに詳細なカスタマイズや複雑な機能の実装にも挑戦してみてください。何か不明な点があれば、お気軽にご相談ください。

この記事が気に入ったらサポートをしてみませんか?