RevitAPI

【RevitAPI】SharpDevelopでマクロ追加

はじめに

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

新しいマクロの作成

SharpDevelopの起動

マクロマネージャよりShapeDevelopを起動してTestMacroを編集できる状態にします。
マクロ作成でひとつのマクロを作成したとき下記のコードが出来上がっています。

using以降

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 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

    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;
    }

マクロをコーディングするのは「#endregion」とその直後「}」の間のスペースでしたがね。
しかし、すでにそのスペースにはすでにTemplateがコーディングされています。
#endregion」~「}」間であってもTemplateが1セットのマクロなので、この中で新しいマクロをコーディングするのはNGです。

ここではマクロ作成Templateを貼り付けたときと同様に、Templateのソースコード次行を改行してスペースを確保します。
そして確保したスペースにTemplate2を貼り付けます。

貼り付け後が下コードです。

貼り付け後(using以降)

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 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 Template5()
    {
      
    }
    
    public void Template4()
    {
      
    }
    
    public void Template3()

    {
      
    }

これをビルドするとマクロマネージャは下図のように表示されます。
マクロマネージャでマクロはSharpDevelopにコーディングした順番ではなく、アルファベット順に表示されます。

ShapeDevelopマクロマネージャで順番が対応しないため、マクロ名の付け方をルール化しておく、マクロの内容が一目でわかるように説明を加えておく、などの対応が重要です。

まとめ

ここで紹介した手順を踏まずとも、マクロを追加するにはマクロマネージャダイアログのマクロからでも可能です。

 

以上です。

 

↓↓C#初心者の僕が独学でお世話になった本↓↓



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



COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください