概要
Revitのアドイン開発に関連するAPIのひとつに、「AdWindows.dll」というdllがありました。
このdllについて、少しまとめました。
Revitの公式にはサポートされていないdllだった
Revit APIの公式ドキュメントにはAdWindows.dllの記載がありませんでした。
また、Revitにおいては公式にサポートがされていないdllでした。
どうやらAutoCAD.NETのAPIらしい
AdWindows.dllはRevitのAPIではなく、AutoCAD.NET APIのひとつらしいです。なので、特定のケースではRevitの環境でも利用できる可能性はありますが、上記に記載したようにAutodeskからの公式サポートやドキュメントがないため、自己責任で利用する必要があります。
このAPIで何ができるの?
自分がRevitでこのAPIを利用した場面は、下記の2つでした。
① コードから特定のRevitのタブをアクティブにする
/// <summary>
/// 特定のリボンタブをアクティブにする
/// </summary>
/// <param name="tabName">アクティブにするリボンタブの名前</param>
public void ActivateRibbonTabByName(string tabName)
{
if (tabName == null) return;
// AdWindows.dllを使用して、特定のリボンタブを見つける
var ribbon = Autodesk.Windows.ComponentManager.Ribbon;
var tab = ribbon.FindTab(tabName);
if (tab == null) return;
// 見つかったリボンタブをアクティブにする
ribbon.ActiveTab = tab;
}
② ユーザーが特定のリボンタブを押下したときにイベント処理を走らせる
/// <summary>
/// イベントを購読する
/// </summary>
private void SubscribeEvent()
{
// AdWindows.dllを使用して、特定のリボンタブを見つけてイベントを接続する
// ※①のFindTab()とは異なる見つけ方。Tabsでリボンタブの一覧を取得できる
foreach (var Tab in Autodesk.Windows.ComponentManager.Ribbon.Tabs)
{
if (Tab.Name == "サンプル")
{
// イベント接続
Tab.Activated += new EventHandler(TabActivated_SampleTab);
break;
}
}
}
/// <summary>
/// 「サンプル」タブが選択状態になった際のイベント
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void TabActivated_SampleTab(object sender, EventArgs e)
{
// 何かしらの処理
}
② についてはTab.Deactivatedというものもあり、こちらは特定のタブが選択状態から未選択状態になったときに走る。
上記のように、Revitのタブに関して特定の操作を行いたいときには使用する (使用したい) 場面がありそうです。