RevitAPI

【RevitAPI】SharpDevelopでマクロ作成

はじめに

モジュール作成ではマクロを作成する準備をしただけなので、完成したものはマクロ未搭載のからっぽの箱です。
これにコードを記述してマクロを実装します。

マクロ作成はモジュール作成の手順と同様で、
対象のモジュール(ここではTestMacro)>マクロを選択で作成できます。
この手法が一番お手軽です

当ブログではマクロのソースコードを紹介することになるので、
ここでは完成したマクロのソースコードをモジュールに貼り付けて実装する手順を紹介します。

マクロをコーディングする

コーディングとは?

プログラムを実装するためのコードを記述していくことです。
ご参考までにコーディング規則は下記をご覧ください。

→C#のコーディング規則を確認する

SharpDevelop起動

まずはShapeDevelopを起動します。
管理マクロマクロマネージャを選択してマクロマネージャダイアログを開き、
TestMacro編集を選択します。

SharpDevelop確認

起動したShapeDevelopを見てみます。
コーディングは赤枠箇所(コードウィンドウ)で行います。

デフォルトのソースコード確認

デフォルトで記述されているソースコードは下記のようになっています。(9行目のusing以降、+マークは展開)

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

コーディングのスペース確保

#endregion」とその直後「}」の間を適当に改行してスペースを確保します。

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
                                     
   
ここにスペースを確保
   
                                     
  }
}

マクロのソースコード貼付け

サンプルのソースコードを用意しました。これがひとつのマクロになっています。確保したスペースに下記のTemplateを貼り付けます。

Template

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

下のようになっていればOKです。

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

テキスト前のスペースや行間はまったく気にしません。ここで一番大事なのは「#endregion」とその直後の「}」間に確実に貼り付けることです。コーディングは原則的にこのスペースで行います。

ビルドする

コーディングしたものをビルドします。

ビルドとは?

プログラムを実装可能なものにすることです。
コーディングしたものを上書き保存する、くらいのイメージで考えておいてください。

ビルドの実行

BuildBuild Solutionを選択、もしくはキーボードのF8キーを押します。
どちらも同じ効果ですが、F8キーを習慣づけておいたほうが楽だと思います。

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

以上で実装は完了です。

【余談】ビルドエラー

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

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

Errorsの状態ではマクロは実行できないので修正が必要です。Warningsのみであれば、警告は無視してマクロの実行可能です。

マクロマネージャ

マクロの確認

マクロマネージャに戻るとTestMacroがツリー表示に変わっています。+を展開してみます。

ツリーで1つ下の階層にTemplateマクロが作成されています。

Templateというの名称は貼付けたソースコードから下記が反映されています。

Template

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

説明の追加

マクロひとつひとつにも説明を付与できます。Templateを選んで説明を選択します。

説明のダイアログが起動するので、ここにマクロの説明を書いてOKを押します。

説明が追加されました。

まとめ

以上でひとつのマクロが完成しました。

さらにマクロを作成したい時の手順はこちらの記事にまとめています。

【RevitAPI】SharpDevelopでマクロ追加はじめに マクロ作成で、マクロマネージャにはTempleteマクロが搭載されたTestMacroができています。 ここでは新しいマク...

マクロの実行手順はこちらの記事にまとめています。

【RevitAPI】SharpDevelopでマクロ実行はじめに マクロの実行について解説します。 マクロの実行 Templeteを実行してみる マクロ作成で作ったマクロを実行してみま...

それぞれご覧いただければと思います。

 

以上です。

 

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



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



COMMENT

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

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