※当ブログでは商品・サービスのリンク先にプロモーションを含みます。ご了承ください。

表示する

RevitAPIのTaskDialog【実はもりもりカスタマイズできる】

TaskDialogのカスタマイズ
  • TaskDialogってダイアログ表示するだけ?
  • その他の使い道ってあるの?
  • TaskDialogのカスタマイズ方法を教えて!

こんな疑問にお答えします。

Revit上にダイアログでメッセージ表示できるTaskDialogクラス。

何かと使用する機会が多くありますよね。

今回はTaskDialogクラスについて、どんなことができるのかあれこれ検証してみました♪

TaskDialogとは

名前の通り、Revit上でダイアログを表示させるクラスです。

C#で言うMessageBoxみたいな感じですね。

基本的には下のようにコードを書くのが王道(であるはず)です。

Sample01 コード
public void Sample01()
{
  TaskDialog.Show("ダイアログボックスのタイトル", "表示させたい内容");
}
※上記コードをThisApplication.csにコピペでそのまま使えます。

 

これを実行すると、こんな具合にダイアログ表示されますね。

Sample01 実行

TaskDialogのボタン変更

表示されるボタンを変更するためのコードを解説します。

コピペでそのまま使えるサンプルコード

下のようにようにコーディングするとボタンが変更できます。

この場合は「OK」ボタンが出てきますよ。

Sample02 コード
public void Sample02()
{
  TaskDialog.Show("ダイアログボックスのタイトル", "表示させたい内容", TaskDialogCommonButtons.Ok, TaskDialogResult.Ok);
}
※上記コードをThisApplication.csにコピペでそのまま使えます。

 

Sample02 実行

サンプルコードの解説

コピペだけじゃなくて、詳しく知りたい!!

という方に解説していきます。

TaskDialogクラスのShowメソッドにはオーバーロードがいくつかあります。

よく使うのは静的メソッドの「Show(String, String)」ですかね。

Sample02では「Show(String, String, TaskDialogCommonButtons, TaskDialogResult)」を使ってボタンをいじっています。

ちなみに、Showメソッドにはこれだけのオーバーロードがあります。

Showメソッドのオーバーロード
  • Show()
  • Show(String, String)
  • Show(String, String, TaskDialogCommonButtons)
  • Show(String, String, TaskDialogCommonButtons, TaskDialogResult)

TaskDialogCommonButtons

Showメソッド内の引数になっている「TaskDialogCommonButtons」はボタンの種類を示すで列挙型です。

これを使って表示されるボタンを決定します。

「TaskDialogCommonButtons」のメンバーと表示されるボタンの対応は下表のとおりです。

TaskDialogCommonButtons:メンバー|表示されるボタン
None 閉じる(C)
Ok OK
Yes はい(Y)
No いいえ(N)
Cancel キャンセル
Retry 再試行(R)
Close 閉じる(C)

TaskDialogResult

TaskDialogResultは、ボタンを選択した時の挙動を決める列挙型です。

メンバーは下表とおり。

TaskDialogResultのメンバー
  • None
  • Ok
  • Cancel
  • Retry
  • Yes
  • No
  • Close
  • CommandLink1
  • CommandLink2
  • CommandLink3
  • CommandLink4

これにより、TaskDialogCommonButtonsでボタンの変更、TaskDialogResultで変更したボタンに効果をできるっぽいのですが、、

  • TaskDialogCommonButtonsに対応したTaskDialogResultを選択しないとマクロが失敗する
  • 対応させたところで、ダイアログは閉じるだけ

と、イマイチどんな使い方になるのかが僕のPC環境では謎な感じですw

TaskDialogをもりもりカスタマイズ

最初にTaskDialogのインスタンスを生成しておいて、プロパティを設定することもできます。

そして、最後にShow()メソッドでダイアログ表示すると色々とカスタマイズされていますよ。

コピペでそのまま使えるサンプルコード

コーディングとしてはこんな感じです。

Sample03 コード
public void Sample03()
{
  TaskDialog taskDialog = new TaskDialog("カスタマイズしてみた");
  
  taskDialog.TitleAutoPrefix = false;
  taskDialog.MainIcon = TaskDialogIcon.TaskDialogIconShield;
  taskDialog.MainInstruction = "メインメッセージ";
  taskDialog.MainContent = "メインメッセージの下にちっちゃいテキストで表示されます";
  taskDialog.ExtraCheckBoxText = "チェックボックスつけてみた";
  taskDialog.ExpandedContent = "閉じているテキスト";
  taskDialog.FooterText = "フッターを表示させてみた";
  
  taskDialog.Show();
}
※上記コードをThisApplication.csにコピペでそのまま使えます。

 

これを実行すると、下のようなダイアログが出てきます。

Sample03 実行

いつも見慣れているTaskDialogとは全然違いますね。

ただ、チェックボックスにどのような効果があるのか良く分かりません^^

ちなみに、TaskDialogクラスのコンストラクターはTaskDialog(String tilte)のみです。

引数でタイトルを指定する感じですね。

サンプルコードの解説|TaskDialogクラスのプロパティ

Sample3で使った、TaskDialogクラスのプロパティをまとめます。

これだけあれば色んなカスタマイズができそうですね。

TaskDialogクラスのプロパティ
プロパティ 内容
TitleAutoPrefix bool タイトル横にモジュール名を表示する/しないを選択
MainIcon enum TaskDialogIcon Enumerationよりアイコンを指定
MainInstruction string メインメッセージのテキスト設定
MainContent string MainInstruction下に補足メッセージを追記
ExtraCheckBoxText string チェックボックスとそのテキストを設定
ExpandedContent string 詳細テキストを設定(通常は閉じている)
FooterText string フッターのテキスト設定

TaskDialogIconは列挙型でメンバーは下の通りです。

TaskDialogIcon:メンバー|表示されるアイコン
TaskDialogIconNone なし
TaskDialogIconShield
TaskDialogIconInformation
TaskDialogIconError
TaskDialogIconWarning
  • TaskDialogIconShield
  • TaskDialogIconInformation
  • TaskDialogIconError

※以上の3つはRevit2018以降に追加されたメンバーです。

RevitAPIのTaskDialogクラスについて|まとめ

以上、RevitAPIのTaskDialogクラスについての紹介でした。

たかがTaskDialogだと思っていましたが、調べてみたら割とカスタマイズできたので感動です。

ただよっぽどのことがない限り、こんなカスタマイズ仕様は使わないでしょうね^^

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

以上です。

RevitAPI独学用教材

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

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

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

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

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

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

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

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

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



Revitアドイン作ります

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

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

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

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

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

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

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

以上です。