🆕

Revit2026アドインの始め方【🔰初心者向け】

に公開

目的と概要

自分の備忘録を兼ねて、初心者向けに煩雑なRevitアドイン開発環境構築フローを記載する。
執筆時点での最新バージョン(Revit2026、.NET8.0)かつ、ウィンドウ付きのアドイン構築用にWPFを盛り込んだ、Visual Studio用テンプレートの作成を最終目的とする。

環境

  • Revit2026.2
  • VisualStudio2022(Community版)
  • .NET8.0

インストール手順

VisualStudio2022(Community版)

下記から最新版をダウンロードし、実行する
https://visualstudio.microsoft.com/ja/

.NETデスクトップ開発にチェックを入れてインストールする。

Revit.NET SDK

下記から最新版(執筆時点で2026.2用)をダウンロードし、インストール
https://aps.autodesk.com/ja/developer/overview/revit

インストール後、「C:\Revit 2026.2 SDK\Add-In Manager」フォルダ内の下記ファイルを、Revitのアドインフォルダ「C:\ProgramData\Autodesk\Revit\Addins\2026」へコピーする。

これでRevitを起動し、追加したアドインを常にロードすると使用できるようになります。
(「アドイン」タブの「外部ツール」に追加されます。)

これで開発環境が整いました。

はじめてのアドイン

新規プロジェクトの作成

VisualStudioを開き、「新しいプロジェクトの作成」を選択。
「クラス」などで検索し「WPFクラスライブラリ」を選択して進む。
※ここではC#で進める

プロジェクト名や保存場所は適当に指定し次へ。
フレームワークは、「.NET8.0(長期的なサポート)」を選択し作成する。

RevitAPの参照設定

ソリューションエクスプローラーで「依存関係」を選択し、右クリック。
「プロジェクト参照を追加」を選択する。

参照マネージャーが開くので、「参照」をクリックし、Revitのインストールフォルダ「C:\Program Files\Autodesk\Revit 2026」から「RevitAPI.dll」と「RevitAPIUI.dll」の2ファイルを選択する。

先ほど参照した2ファイルにチェックを入れて、OKを選択。

ソリューションエクスプローラーで「依存関係」、「アセンブリ」から先ほど追加したファイルを選択し、プロパティの「ローカルにコピー」を「いいえ」に変更する。
※2ファイルとも行う

プロジェクト設定変更

ソリューションエクスプローラー上のプロジェクト名で右クリック。
「プロパティ」を選択。

「ビルド」、「全般」から、「プラットフォームターゲット」を「x64」に変更。

「ビルド」、「エラーおよび警告」から、「警告の抑制」に「;MSB3277」を追記。

ユーザーコントロール(WPF)の追加

WPFとは、「Windows Presentation Foundation」の略で、RevitアドインUI画面を自由に構築できるフレームワーク。

ソリューションエクスプローラー上のプロジェクト名で右クリック。
「追加」、「新しい項目」を選択。

左側メニュー内の「WPF」から、「ユーザーコントロール(WPF)」を選択する。
項目名は「MainView.xaml」とした。

次からいよいよコードを書いていきます!

コードを書く

全てのElementを数えて、画面に個数を表示するアドインを作成する。
tekitou01の部分は、プロジェクト作成時の名称で変わるので注意。

Class1.cs
using System.ComponentModel;
using System.Reflection;
using System.Runtime.CompilerServices;
using Autodesk.Revit.Attributes;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;

namespace tekitou01
{
    [Transaction(TransactionMode.Manual)]
    public class Class1 : IExternalCommand
    {
        public Result Execute(
            ExternalCommandData commandData,
            ref string message,
            ElementSet elements
            )
        {

            var uidoc = commandData.Application.ActiveUIDocument;
            var doc = uidoc.Document;
            var elementsCount = new FilteredElementCollector(doc).GetElementCount();

            var viewModel = new MainViewModel
            {
                ElementsCount = elementsCount
            };

            var view = new MainView(viewModel);
            view.ShowDialog();

            return Result.Succeeded;
        }
    }
    public partial class App : IExternalApplication
    {
        public string EXECUTION_PATH = Assembly.GetExecutingAssembly().Location;

        public Result OnStartup(UIControlledApplication ap)
        {
            RibbonPanel panel = ap.CreateRibbonPanel("RevitAddinTemplate");
            PushButtonData quickButton = new PushButtonData("RevitAddinTemplate", "RevitAddinTemplate", EXECUTION_PATH, "RevitAddinTemplate.Model");
            panel.AddItem(quickButton);

            return Result.Succeeded;
        }

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

    public class MainViewModel : INotifyPropertyChanged
    {
        private int elementsCount;
        public int ElementsCount
        {
            get { return elementsCount; }
            set
            {
                elementsCount = value;
                OnPropertyChanged();
            }
        }

        public event PropertyChangedEventHandler? PropertyChanged;

        protected void OnPropertyChanged([CallerMemberName] string? name = null)
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
        }
    }

}

xamlファイルは、デザイン画面とコード画面が連動しており、変更が相互に反映されるため視覚的に分かりやすく編集が可能。
左側のツールボックス内のパーツをダブルクリックすることで、追加される。

MainView.xaml
<Window x:Class="tekitou01.MainView"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:tekitou01"
             mc:Ignorable="d" Title="たいとる" SizeToContent="WidthAndHeight">
    <StackPanel>
        <TextBlock Text="全てのElement数は" FontSize="22" FontWeight="Bold" Margin="10"/>
        <TextBlock Text="{Binding ElementsCount}" FontSize="22" FontWeight="Bold" Margin="10"/>
        <TextBlock Text="個あります。" FontSize="22" FontWeight="Bold" Margin="10"/>
    </StackPanel>
</Window>
MainView.xaml.cs
using System.Windows;

namespace tekitou01
{
    /// <summary>
    /// MainView.xaml の相互作用ロジック
    /// </summary>
    public partial class MainView : Window
    {
        public MainView(MainViewModel viewModel)
        {
            DataContext = viewModel;
            InitializeComponent();
        }
    }
}

アドインを実行する

ここまでコードを記載すれば、一度全てのファイルを保存する。(ctrl + shift + V)

「ビルド」、「ソリューションのビルド」または(ctrl + shift + B)でビルドを実行する。

「ビルド: 成功 1、失敗 0、最新の状態 0、スキップ 0」と表示されれば問題ない。

デフォルトでは、自分が新規プロジェクト作成時に指定したフォルダ配下に、「\bin\Debug\net8.0-windows」フォルダが作成され、ビルド後ここにdllファイルが作成される。
これがそのままRevitのアドインとして実行可能なdllファイルになる。

ちなみに本開発環境では、このまま実行可能だが、配布時にはaddinファイルを作成する等準備が必要になる。が今回は割愛する。

Revitを開き、アドインタブの外部ツールから、「Add-in Manager(Manual Mode)」を選択する。

「Load」を選択し、先ほど作成したdllファイル(\bin\Debug\net8.0-windows)をロードする。
ロードしたアドインを選択し、「Run」で実行する。

RUGのサンプル設備.rvtには、Elementが27,146個あるようです。

作成したプロジェクトをテンプレート化する

今後次々と色々なアドインを作成するにあたり、ここまでの設定をテンプレート化して使えるようにしたい。
プロジェクトから「テンプレートのエクスポート」を選択。

「プロジェクトテンプレート」を選択し、次へ。

適当に項目を埋め、完了を選択する。
「テンプレートを自動的にインポート」にチェックを入れておくと、次回新規作成時にテンプレート選択画面に現れる。

Discussion