RevitAPI

【RevitAPI】Elementクラスのプロパティ取得

RevitAPI-ElementProperties
FilteredElementCollectorクラスやDocument.GetElementなどを使ってElementクラスを取得できました。
ここからElementクラスのプロパティにアクセスするにはどうすればいい?

Elementを取得出来たら、今度はそのElementが持っている値を取得したいですね。

ここではElementクラスのプロパティについて解説します。

Elementの取得方法については下記の記事をご覧ください!
【RevitAPI】FilteredElementCollectorで部材を取得する ここではFilteredElementCollectorクラスを使った部材取得のサンプルコードを紹介します。 なおSe...
【RevitAPI】Document.GetElementで要素選択 確かにFilteredElementCollectorクラスで一旦はドキュメント内のElementを全取得して、そこからひとつの...

Elementクラスのプロパティについて

Elementクラスが持っているプロパティとメソッドは「Revit API Docs」をご確認ください。

→Revit API Docsへ

ElementクラスはRvtドキュメントで描画されているほとんど全てのクラスの基底クラスとなっています。

なので持っているプロパティも、IdNameなど基本的なものばかりです。

Elementクラスのプロパティ:サンプル

Elementクラスのプロパティ取得のサンプルソースコードを示します。

Sample1

Sample1

    public void Sample1()
    {
      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;
      
      
      Reference reference = uidoc.Selection.PickObject(ObjectType.Element);
      Element element = doc.GetElement(reference);
      
      string name = element.Name;
      string uniqueId = element.UniqueId;
      bool pinned = element.Pinned;
      
      string result =
        "Name:" + name + "\n" +
        "UniqueId:" + uniqueId + "\n" +
        "Pinned:" + pinned;
      
      TaskDialog.Show("Message", result);
    }

Sample2

Sample2

    public void Sample2()
    {
      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;
      
      
      Reference reference = uidoc.Selection.PickObject(ObjectType.Element);
      Element element = doc.GetElement(reference);
      
      ElementId elementId = element.Id;
      Category category = element.Category;
      Location location = element.Location;
      
      string result =
        "Id:" + element.Id + "\n" +
        "Name:" + element.Name + "\n" +
        "CategoryName:" + category.Name + "\n" +
        "LocationType:" + location.GetType().Name;
      
      TaskDialog.Show("Message", result);
    }

Elementクラスのプロパティ:解説

Sample1Sample2ともにビュー上から要素を選択してElementを取得しています。

Elementを取得】

      Reference reference = uidoc.Selection.PickObject(ObjectType.Element);
      Element element = doc.GetElement(reference);

Sample1

Sample1Elementクラスのプロパティにアクセスしているのは下記コードです。

Elementクラスのプロパティ取得】

      string name = element.Name;
      string uniqueId = element.UniqueId;
      bool pinned = element.Pinned;

上記のプロパティは戻り値がstringboolなので、それに対応する型で変数を宣言すればOKです。

簡単ですね。

Sample2

Sample2Elementクラスのプロパティにアクセスしているのは下記コードです。

Elementクラスのプロパティ取得】

      ElementId elementId = element.Id;
      Category category = element.Category;
      Location location = element.Location;

こちらはちょっと複雑ですね。

IdプロパティはElementIdCategoryプロパティはCategoryLocationプロパティはLocation、それぞれのクラスが戻り値となっています。

そのため対応するクラスでオブジェクトを生成して、Elementクラスのプロパティを代入しています。

そしてcategory.Namelocation.GetType().Nameなど、各クラスのメソッドやプロパティにアクセスしてプロパティ情報や位置情報を取得しています。

Elementクラスのプロパティ:まとめ

以上、Elementのプロパティ取得についてでした。

Sample1のように戻り値がstringboolであれば苦労はしませんね。
Sample2は最初はややこしいかも知れませんが、すぐに慣れますよ。
Elementに限らずプロパティ取得はこのパターンが共通なので、覚えてしまえばどこにでも応用できます!

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

 

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

COMMENT

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

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