1から分かるRevitAPIのやさしい始め方【初心者大歓迎】

RevitAPI始め方

RevitAPIを始めたい!!

でも、

  • 何をどうやって始めればいいの?
  • プログラミングの知識がまったくない。。

こんな方はまずは本記事をご覧ください^^

この記事では、

  • RevitAPIを使うためのエディタを起動
  • プログラムを書くまでの段取り
  • プログラムを書いてから実行するまで

など、初めての方でもわかるように、RevitAPIを使ったプログラミングができるまでの手順を解説します。

RevitAPIの始め方①|使用するエディタ

RevitがインストールされたPCには、「SharpDevelop(シャープデベロップ)」というエディタもインストールされています。

「エディタ」とはざっくり「プログラミングを書くためのソフト」って感じです。

SharpDevelopはRevit内のボタンから起動できるので、Revitアドイン開発に使うエディタとして断然便利

なので、ここではSharpDevelopを使うための手順を解説していきますね。

RevitAPIを使ったプログラミングは、SharpDevelop以外のエディタでももちろん可能です。

有名なエディタとして「Visual Studio」といったものもありますね。

RevitAPIの始め方②|エディタを起動する

では早速、SharpDevelopを起動していきましょう。

マクロマネージャを起動する

Revitのリボンタブより「管理 > マクロ > マクロマネージャ」を選択しましょう。

C#でRevitAPI学習・SharpDevelopでモジュール作成

マクロマネージャのダイアログが起動します。

ここで下図のように、左上タブで

  1. アプリケーション
  2. TestModel(マクロマネージャ起動時のモデル名)

が選択できるかと思います。

C#でRevitAPI学習・SharpDevelopでモジュール作成

この2つのタブは、

  1. アプリケーションマクロ
  2. ドキュメントマクロ

と呼ばれます。

マクロ ≒ プログラム、くらいに思っておいてください^^

両者は何が違うのかというと、

アプリケーションマクロ 開発したPCで利用できるプログラム
ドキュメントマクロ 開発したrvtファイルで利用できるプログラム

という具合、下図のようなイメージです。

アプリケーションマクロ
ドキュメントマクロ

アプリケーションマクロは一度そのPCで開発してしまえば、すべてのrvtモデルに使えて便利。

なのでここではアプリケーションマクロの作成手順を説明します。

モジュールを作成する

アプリケーションマクロでモジュールを作成します。

モジュールを作成する」が分からない方もひとまず、「プログラミングする環境を構築する」とでも思っておいてください^^

ここではマクロマネージャのダイアログから「アプリケーション > モジュール」を選択します。

C#でRevitAPI学習・SharpDevelopでモジュール作成

次に「新しいモジュールを作成」のダイアログが起動します。

モジュール名・言語・説明は下の表を参考にして設定しましょう。

C#でRevitAPI学習・SharpDevelopでモジュール作成
モジュール名 半角英数字で設定します。ただし数字から始まる文字列はNGです。
言語 C#、VB.Net、Ruby、Pythonから選択できます。当サイトはC#で解説するので、C#を選択してください。
説明 このモジュールについての説明ができます。省略することも可能です。

すべて設定できたら「OK」ボタンをクリックです。

何も問題なければ、SharpDevelopが起動するはずです。

RevitAPIの始め方③|エディタの確認

起動したSharpDevelopを見てみましょう。

下図のような画面で起動しているかと思います。

C#でRevitAPI学習・SharpDevelopでモジュール作成

真ん中の画面に書かれているコードはこんな感じ。

/*
 * Created by SharpDevelop.
 * User: ********
 * Date: 2021/02/03
 * Time: 14:57
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */
using System;
using Autodesk.Revit.UI;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI.Selection;
using System.Collections.Generic;
using System.Linq;

namespace TestMacro
{
    [Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
    [Autodesk.Revit.DB.Macros.AddInId("***********************************")]
  public partial class ThisApplication
  {
    private void Module_Startup(object sender, EventArgs e)
    {

    }

    private void Module_Shutdown(object sender, EventArgs e)
    {

    }

    #region Revit Macros generated code
    private void InternalStartup()
    {
      this.Startup += new System.EventHandler(Module_Startup);
      this.Shutdown += new System.EventHandler(Module_Shutdown);
    }
    #endregion
  }
}

 

ここでいったん、Revitの画面に戻ります。

マクロマネージャ」を見てみると、先ほど設定した名前でモジュールが作成されていますね。

C#でRevitAPI学習・SharpDevelopでモジュール作成

以上でプログラムを書いていくための環境は整いました。

【参考】モジュールの保存場所

アプリケーションマクロでモジュールを作成したとき、PC内にそのファイルが作成されます。

下記フォルダがファイルの場所です。

C:\ProgramData\Autodesk\Revit\Macros\●●●●\Revit\AppHookup

●●●●は作成したRevitのバージョン名です。
C#でRevitAPI学習・SharpDevelopでモジュール作成

今後SharpDevelopでプログラムを作成・編集するとき、その都度ここにあるフォルダは自動更新されます。

逆に言うと、以前までに開発していたプログラムも容赦なく最新のものに書き換わります。

定期的にバックアップを取っておくことをお勧めします。

RevitAPIの始め方④|プログラムを書く

前章までで、プログラムの開発環境は整いました。

あとはせっせとプログラミングしていくだけです!

マクロの作成

  • 要素を配置する
  • 要素を移動する
  • 要素を削除する

といった、ひとつひとつのプログラムは先ほど作成したモジュール内にで開発することになります。

手順としては、マクロマネージャで作成したモジュール(ここではTestMacro)を選択して、「マクロ」ボタンをクリックします。

RevitAPI始め方

新しいマクロを作成」のダイアログが起ちあがるので、モジュール名の時と同様に、

マクロ名 半角英数字で設定します。ただし数字から始まる文字列はNGです。
マクロ言語 C#しか選べません。
説明 このマクロについての説明ができます。省略することも可能です。

を設定して「OK」ボタンをクリックします。

RevitAPI始め方

ここでマクロマネージャに戻ると、TestMacroモジュールがツリー表示に変わっています。

+を展開すると、ツリーで1つ下の階層に作成したマクロがありますね。

RevitAPI始め方

マクロの確認

ここでSharpDevelopを見てみます。

/*
 * Created by SharpDevelop.
 * User: ********
 * Date: 2021/02/03
 * Time: 14:57
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */
using System;
using Autodesk.Revit.UI;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI.Selection;
using System.Collections.Generic;
using System.Linq;

namespace TestMacro
{
    [Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
    [Autodesk.Revit.DB.Macros.AddInId("***********************************")]
  public partial class ThisApplication
  {
    private void Module_Startup(object sender, EventArgs e)
    {

    }

    private void Module_Shutdown(object sender, EventArgs e)
    {

    }

    #region Revit Macros generated code
    private void InternalStartup()
    {
      this.Startup += new System.EventHandler(Module_Startup);
      this.Shutdown += new System.EventHandler(Module_Shutdown);
    }
    #endregion
    public void TestMacro02()
    {
    }
  }
}

 

先ほど作成したSharpDevelopの39~41行目に、

public void TestMacro02()
{
}

というコードが加わりました。

これが今回作成したマクロです。

プログラムを書いてみる

作成したTestMacro02で実行するプログラムは{}の間に書くことになります。

サンプルとして、

TaskDialog.Show("Message", "test");

上記のコードをコピペして、

public void TestMacro02()
{
  TaskDialog.Show("Message", "test");
}

という形を作ってみてください。

これで超簡単プログラムの完成です。

【参考】プログラムを書く別の方法

当サイトで紹介するプログラムは、下記のようにそのままコピペで使えるようにしています。

public void TestMacro02()
{
  TaskDialog.Show("Message", "test");
}

この場合は、

/*
 * Created by SharpDevelop.
 * User: ********
 * Date: 2021/02/03
 * Time: 14:57
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */
using System;
using Autodesk.Revit.UI;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI.Selection;
using System.Collections.Generic;
using System.Linq;

namespace TestMacro
{
    [Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
    [Autodesk.Revit.DB.Macros.AddInId("***********************************")]
  public partial class ThisApplication
  {
    private void Module_Startup(object sender, EventArgs e)
    {

    }

    private void Module_Shutdown(object sender, EventArgs e)
    {

    }

    #region Revit Macros generated code
    private void InternalStartup()
    {
      this.Startup += new System.EventHandler(Module_Startup);
      this.Shutdown += new System.EventHandler(Module_Shutdown);
    }
    #endregion
  }
}

上記の

  • 38行目の:#endregion(+マークを展開すると出てきます。
  • 39行目の:}

の間にスペースを作って、

/*
 * Created by SharpDevelop.
 * User: ********
 * Date: 2021/02/03
 * Time: 14:57
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */
using System;
using Autodesk.Revit.UI;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI.Selection;
using System.Collections.Generic;
using System.Linq;

namespace TestMacro
{
    [Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
    [Autodesk.Revit.DB.Macros.AddInId("***********************************")]
  public partial class ThisApplication
  {
    private void Module_Startup(object sender, EventArgs e)
    {

    }

    private void Module_Shutdown(object sender, EventArgs e)
    {

    }

    #region Revit Macros generated code
    private void InternalStartup()
    {
      this.Startup += new System.EventHandler(Module_Startup);
      this.Shutdown += new System.EventHandler(Module_Shutdown);
    }
    #endregion


    public void TestMacro02()
    {
      TaskDialog.Show("Message", "test");
    }



  }
}

 

こんな感じに貼りつけてもらえればOKです^^

RevitAPIの始め方⑤|プログラムをビルドする

プログラムは書いたり張りつけたりしただけでは、まだ実行はできません。

実行するためには「ビルド」という操作が必要です。

ビルドとはプログラムを実行可能なものにすることで、「上書き保存する」くらいのイメージで考えてもらえればOKです。

ビルドする手順

ビルドするには「Build > Build Solution」を選択、もしくはキーボードのF8キーを押します。

どちらも同じ効果ですが、個人的にはF8キーを習慣づけておいたほうが楽だと思います^^

無事にビルドできていれば画面左下に「Build finishied successfully.」と表示されます。

以上でビルドは完了です。

【参考】ビルドエラー

ビルドがエラーになるときは、該当箇所に赤の波線アンダーライン、画面下部の「Errors」にErrorsメッセージが表示されます。

警告の場合は、黄色の波線アンダーライン、「Errors」にWarningsメッセージが表示されます。

両者の違いは、

Errors プログラムの実行ができず、コードの修正が必須
Warnings 警告を無視してプログラムの実行が可能

といったところです。

RevitAPIの始め方⑥|プログラムを実行する

それではプログラムを実行してみます。

マクロマネージャで「TestMacro02」を選択して「実行」ボタンをクリックします。

RevitAPI始め方

するとRevit上にダイアログが表示されます。

RevitAPI始め方

これは先ほど書いた下記のコードが、ダイアログを表示させるためのプログラムだからです。

TaskDialog.Show("Message", "test");

 

しょぼいかも知れませんが、立派なRevitAPIですよ^^

RevitAPIの始め方|まとめ

以上、初めてのRevitAPIからプログラムを実行するまでの手順を解説しました。

ここまで理解できて他の操作も知りたいな、という方は「部材を選択する」あたりから始めてみるのがいいかと思います^^

「選択する」カテゴリの記事一覧

SharpDevelopの設定関連は下記の記事をご覧ください!

SharpDevelop日本語化&基本設定
SharpDevelop(シャープデベロップ)の日本語化と基本設定|RevitAPIRevitAPIの開発環境、SharpDevelop(シャープデベロップ)日本語化や基本設定の手順を紹介します。設定が変わるだけでプログラミング効率が格段に上がりますよ^^...
SharpDevelopでcs作成
SharpDevelop(シャープデベロップ)のcsファイル追加手順|RevitAPISharpDevelop(シャープデベロップ)にcsファイルを追加する手順を紹介します。メインのソースコードがぐちゃぐちゃになる前に、適切なcsファイルを作って管理しましょう!...

SharpDevelopでのプログラム作成にも慣れてきたら、そのプログラムでオリジナルのタブ・リボン・ボタンを作れるようになりたいですね。

RevitAPIのプログラムをタブ・リボン・ボタンでアドイン化RevitAPIで作ったプログラムを、タブ・リボン・ボタン化してRevitのインターフェースで表示する手順を紹介します。プログラムをアドイン化してカッコよく仕上げましょう^^...

以上です。

RevitAPI独学用教材

最後に教材等を紹介します。

RevitAPIを理解してプログラムを作れるようになるには、C#の知識が必要です。

下記、オススメの参考書です。

プログラムが初心者にオススメのC#教材

イラストでの解説が分かりやすく、初めてのプログラミング学習にピッタリです。

プログラムの基礎知識がある人にオススメのC#教材

少し踏み込んだ内容まで学習でき、C#の知識が深まります。

美しいコードを書きたい人はこちら

個人的には、プログラマーひとり一冊は持っておくべきと思っている名作です^^
スポンサーリンク



Revitアドイン作ります

のんびり学習してる余裕などない!という方にご案内です。

ランサーズにてRevitのアドイン作成を承っております!

スキル、資格等の詳細はプロフィールをご覧ください。

ご質問などもお気軽にメッセージしていただければと思います。

詳しくは下の記事にまとめています。

【開発依頼】あなただけのRevitアドインを真心込めて作ります!RevitAPIを使ったアドイン開発を承ります。1から学習してアドイン作る余裕がない、外注でアドイン作成を依頼したい、という方はご利用をご検討いただければと思います^^...

最後まで読んでいただき、ありがとうございました^^

以上です。