RevitAPIを始めたい!!
でも、
こんな方はまずは本記事をご覧ください^^
この記事では、
- RevitAPIを使うためのエディタを起動
- プログラムを書くまでの段取り
- プログラムを書いてから実行するまで
など、初めての方でもわかるように、RevitAPIを使ったプログラミングができるまでの手順を解説します。
RevitAPIの始め方①|使用するエディタ
RevitがインストールされたPCには、「SharpDevelop(シャープデベロップ)」というエディタもインストールされています。
SharpDevelopはRevit内のボタンから起動できるので、Revitアドイン開発に使うエディタとして断然便利。
なので、ここではSharpDevelopを使うための手順を解説していきますね。
RevitAPIを使ったプログラミングは、SharpDevelop以外のエディタでももちろん可能です。
有名なエディタとして「Visual Studio」といったものもありますね。
RevitAPIの始め方②|エディタを起動する
では早速、SharpDevelopを起動していきましょう。
マクロマネージャを起動する
Revitのリボンタブより「管理 > マクロ > マクロマネージャ」を選択しましょう。
マクロマネージャのダイアログが起動します。
ここで下図のように、左上タブで
- アプリケーション
- TestModel(マクロマネージャ起動時のモデル名)
が選択できるかと思います。
この2つのタブは、
- アプリケーションマクロ
- ドキュメントマクロ
と呼ばれます。
両者は何が違うのかというと、
アプリケーションマクロ | 開発したPCで利用できるプログラム |
---|---|
ドキュメントマクロ | 開発したrvtファイルで利用できるプログラム |
という具合、下図のようなイメージです。
アプリケーションマクロは一度そのPCで開発してしまえば、すべてのrvtモデルに使えて便利。
なのでここではアプリケーションマクロの作成手順を説明します。
モジュールを作成する
アプリケーションマクロでモジュールを作成します。
「モジュールを作成する」が分からない方もひとまず、「プログラミングする環境を構築する」とでも思っておいてください^^
ここではマクロマネージャのダイアログから「アプリケーション > モジュール」を選択します。
次に「新しいモジュールを作成」のダイアログが起動します。
モジュール名・言語・説明は下の表を参考にして設定しましょう。
モジュール名 | 半角英数字で設定します。ただし数字から始まる文字列はNGです。 |
---|---|
言語 | C#、VB.Net、Ruby、Pythonから選択できます。当サイトはC#で解説するので、C#を選択してください。 |
説明 | このモジュールについての説明ができます。省略することも可能です。 |
すべて設定できたら「OK」ボタンをクリックです。
何も問題なければ、SharpDevelopが起動するはずです。
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の画面に戻ります。
「マクロマネージャ」を見てみると、先ほど設定した名前でモジュールが作成されていますね。
以上でプログラムを書いていくための環境は整いました。
【参考】モジュールの保存場所
アプリケーションマクロでモジュールを作成したとき、PC内にそのファイルが作成されます。
下記フォルダがファイルの場所です。
C:\ProgramData\Autodesk\Revit\Macros\●●●●\Revit\AppHookup
今後SharpDevelopでプログラムを作成・編集するとき、その都度ここにあるフォルダは自動更新されます。
逆に言うと、以前までに開発していたプログラムも容赦なく最新のものに書き換わります。
定期的にバックアップを取っておくことをお勧めします。
RevitAPIの始め方④|プログラムを書く
前章までで、プログラムの開発環境は整いました。
あとはせっせとプログラミングしていくだけです!
マクロの作成
- 要素を配置する
- 要素を移動する
- 要素を削除する
といった、ひとつひとつのプログラムは先ほど作成したモジュール内にで開発することになります。
手順としては、マクロマネージャで作成したモジュール(ここではTestMacro)を選択して、「マクロ」ボタンをクリックします。
「新しいマクロを作成」のダイアログが起ちあがるので、モジュール名の時と同様に、
マクロ名 | 半角英数字で設定します。ただし数字から始まる文字列はNGです。 |
---|---|
マクロ言語 | C#しか選べません。 |
説明 | このマクロについての説明ができます。省略することも可能です。 |
を設定して「OK」ボタンをクリックします。
ここでマクロマネージャに戻ると、TestMacroモジュールがツリー表示に変わっています。
+を展開すると、ツリーで1つ下の階層に作成したマクロがありますね。
マクロの確認
ここで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」を選択して「実行」ボタンをクリックします。
するとRevit上にダイアログが表示されます。
これは先ほど書いた下記のコードが、ダイアログを表示させるためのプログラムだからです。
TaskDialog.Show("Message", "test");
しょぼいかも知れませんが、立派なRevitAPIですよ^^
TaskDialogについてはこちらの記事でまとめています。
RevitAPIの始め方|まとめ
以上、初めてのRevitAPIからプログラムを実行するまでの手順を解説しました。
ここまで理解できて他の操作も知りたいな、という方は「部材を選択する」あたりから始めてみるのがいいかと思います^^
SharpDevelopの設定関連は下記の記事をご覧ください!
SharpDevelopでのプログラム作成にも慣れてきたら、そのプログラムでオリジナルのタブ・リボン・ボタンを作れるようになりたいですね。
以上です。
RevitAPI独学用教材
最後に教材等を紹介します。
RevitAPIを理解してプログラムを作れるようになるには、C#の知識が必要です。
下記、オススメの参考書です。
プログラムが初心者にオススメのC#教材
プログラムの基礎知識がある人にオススメのC#教材
美しいコードを書きたい人はこちら
Revitアドイン作ります
のんびり学習してる余裕などない!という方にご案内です。
スキル、資格等の詳細はプロフィールをご覧ください。
ご質問などもお気軽にメッセージしていただければと思います。
詳しくは下の記事にまとめています。
最後まで読んでいただき、ありがとうございました^^
以上です。