はじめに
マクロ作成で、マクロマネージャにはTempleteマクロが搭載されたTestMacroができています。
ここでは新しいマクロを作成する手順を解説します。

新しいマクロの作成
SharpDevelopの起動
マクロマネージャよりShapeDevelopを起動してTestMacroを編集できる状態にします。
マクロ作成でひとつのマクロを作成したとき下記のコードが出来上がっています。
using以降
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 Template()
{
UIApplication uiapp = this.ActiveUIDocument.Application;
UIDocument uidoc = uiapp.ActiveUIDocument;
Autodesk.Revit.ApplicationServices.Application app =
uiapp.Application as Autodesk.Revit.ApplicationServices.Application;
Autodesk.Revit.DB.Document doc = uidoc.Document;
}
}
}
新しいマクロのコーディング
新しいマクロを実装するためTemplate2のソースコードを貼り付けます。
Template2
{
UIApplication uiapp = this.ActiveUIDocument.Application;
UIDocument uidoc = uiapp.ActiveUIDocument;
Autodesk.Revit.ApplicationServices.Application app =
uiapp.Application as Autodesk.Revit.ApplicationServices.Application;
Autodesk.Revit.DB.Document doc = uidoc.Document;
}
マクロをコーディングするのは「#endregion」とその直後「}」の間のスペースでしたがね。
しかし、すでにそのスペースにはすでにTemplateがコーディングされています。
「#endregion」~「}」間であってもTemplateが1セットのマクロなので、この中で新しいマクロをコーディングするのはNGです。
ここではマクロ作成でTemplateを貼り付けたときと同様に、Templateのソースコード次行を改行してスペースを確保します。
そして確保したスペースにTemplate2を貼り付けます。
貼り付け後が下コードです。
貼り付け後(using以降)
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 Template()
{
UIApplication uiapp = this.ActiveUIDocument.Application;
UIDocument uidoc = uiapp.ActiveUIDocument;
Autodesk.Revit.ApplicationServices.Application app =
uiapp.Application as Autodesk.Revit.ApplicationServices.Application;
Autodesk.Revit.DB.Document doc = uidoc.Document;
}
public void Template2()
{
UIApplication uiapp = this.ActiveUIDocument.Application;
UIDocument uidoc = uiapp.ActiveUIDocument;
Autodesk.Revit.ApplicationServices.Application app =
uiapp.Application as Autodesk.Revit.ApplicationServices.Application;
Autodesk.Revit.DB.Document doc = uidoc.Document;
}
}
}
これをビルドするとTemplate2が実装されます。
マクロマネージャの確認
マクロマネージャに戻ってみると、Templete2が追加されています。

備考
マクロ名が重複したら?
追記したマクロをTemplate2からTemplateと名前を変えてビルドすると、追加した方のマクロがエラーになります。
これは既に同じ名前のマクロがモジュール内に存在しているからです。
新しく作成するマクロは既存名と重複しないように命名します。
マクロの表示順は?
Template2以降に検証用追加ソースコードを貼り付けてみます。
検証用追加ソースコード
{
}
public void Template4()
{
}
public void Template3()
{
}
これをビルドするとマクロマネージャは下図のように表示されます。
マクロマネージャでマクロはSharpDevelopにコーディングした順番ではなく、アルファベット順に表示されます。

ShapeDevelopとマクロマネージャで順番が対応しないため、マクロ名の付け方をルール化しておく、マクロの内容が一目でわかるように説明を加えておく、などの対応が重要です。
まとめ
ここで紹介した手順を踏まずとも、マクロを追加するにはマクロマネージャダイアログのマクロからでも可能です。

以上です。
↓↓C#初心者の僕が独学でお世話になった本↓↓
↓↓プログラミング初心者の僕がコーディング学習でお世話になった本↓↓