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

取得する

ElementからParameterを取得する方法

Revitの開発では、Elementから情報を取得する場面が多くあります。

その中でも「Parameter」を扱う機会は特に多いです。

設計情報や属性を操作するために、Parameterの扱い方を理解することは重要です。

この記事ではParameter取得の基本から応用までを解説します。

Elementとは何かを簡単に解説

Revitにおいて、Elementとはすべてのモデル要素を指します。

たとえば壁、床、ドア、窓などがElementです。

Elementは一意のIDを持ち、さまざまな情報を保持しています。

その情報の中に「Parameter」という項目があります。

このParameterを通じて、要素の属性値を取得したり変更したりできます。

Parameterの基本的な仕組み

Parameterは、Elementに紐づけられた情報のかたまりです。

「長さ」「材料」「コメント」などがParameterにあたります。

Parameterには「タイプ」と「インスタンス」の2種類があります。

また、Parameterは「BuiltInParameter」や「共有パラメータ」として定義されることがあります。

これらは取得方法が異なるため、使い分けが必要です。

BuiltInParameterを取得する手順

ElementからParameterを取得するには、まず対象のElementを取得します。

DocumentからGetElementで要素のクリック選択DocumentクラスのGetElementメソッドを使い、要素の取得方法を基礎から応用まで解説。ReferenceやPickObjectを使った操作も紹介します。...

その後、get_Parameter(BuiltInParameter)メソッドを使ってParameterを参照します。

BuiltInParameterは、Revitにあらかじめ定義されたパラメータです。

このときは、Enum値を使ってParameterを取得します。

以下はBuiltInParameterを使ったコード例です。

public Parameter GetBuiltInParameter(Element element, BuiltInParameter bip)
{
    return element.get_Parameter(bip);
}

 

get_Parameter()は、Enumで指定するため、間違いが少なくなります。

また、パフォーマンス面でも有利です。

共有パラメータを取得する手順

ElementからParameterを取得するには、まず対象のElementを取得します。

DocumentからGetElementで要素のクリック選択DocumentクラスのGetElementメソッドを使い、要素の取得方法を基礎から応用まで解説。ReferenceやPickObjectを使った操作も紹介します。...

その後、LookupParameter("共有パラメータ名")メソッドを使ってParameterを参照します。

共有パラメータは、複数のプロジェクト間で再利用できるパラメータです。

プロジェクトやファミリに明示的に追加されている必要があります。

以下は基本的な取得方法のコード例です。

public Parameter GetParameterByName(Element element, string paramName)
{
    return element.LookupParameter(paramName);
}

 

LookupParameter()は、名前でParameterを取得する簡単な方法です。

ただし、名前の一致に注意が必要です。

型別に値を取得する方法

Parameterの値はさまざまな型を持ちます。
たとえば文字列、整数、小数などです。

型に応じて値を取得する方法も異なります。

以下は型別の取得方法をまとめた例です。

public string GetStringParameter(Parameter param)
{
    return param.AsString();
}

public int GetIntegerParameter(Parameter param)
{
    return param.AsInteger();
}

public double GetDoubleParameter(Parameter param)
{
    return param.AsDouble();
}

Parameterの型に応じて正しいメソッドを使うことが大切です。

取得時の注意点とエラー対策

Parameterが存在しない場合nullが返ることがあります。

そのためnullチェックは必ず行うようにしましょう。

また、型が不一致の場合、例外が発生することもあります。

以下にエラー対策を行った例を紹介します。

public string SafeGetParameterValue(Element element, string paramName)
{
    var param = element.LookupParameter(paramName);
    if (param == null)
    {
        return "Parameter not found";
    }

    try
    {
        return param.AsValueString();
    }
    catch
    {
        return "Invalid parameter type";
    }
}

予期しないクラッシュを防ぐために、例外処理は重要です。

よく使うコード例まとめ

以下は、よく使われるParameter取得処理をまとめたコードです。

public void Sample()
{
  Autodesk.Revit.UI.UIDocument uidoc = this.ActiveUIDocument;
  Autodesk.Revit.DB.Document doc = uidoc.Document;
  
  Reference reference = uidoc.Selection.PickObject(ObjectType.Element, "要素をクリック選択してください");
  Element element = doc.GetElement(reference);

  string name = element.Name;

  var parameter1 = element.get_Parameter(BuiltInParameter.ALL_MODEL_INSTANCE_COMMENTS);
  string getParameter = parameter1.AsString();
  TaskDialog.Show("get_Parameterでパラメータ取得", getParameter);

  var parameter2 = element.LookupParameter("コメント");
  string lookupParameter = parameter2.AsString();
  TaskDialog.Show("LookupParameterでパラメータ取得", lookupParameter);
}
※上記コードをThisApplication.csにコピペでそのまま使えます。

 

ここでは、インスタンスパラメータの「コメント」をget_Parameter()およびLookupParameter()より取得しています。

ElementからParameterを取得する方法まとめ

以上、ElementからParameterを取得する方法を解説しました。

基本的な考え方から具体的なコード例まで紹介しましたが、次のステップとしてはParameterの編集や作成にも挑戦してみてください!

RevitのAPI操作は最初こそ複雑ですが、慣れれば強力なツールになります。

ぜひこの記事を参考に実務で活かしてみてください^^

RevitAPI独学用教材

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

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

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

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

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

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

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

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

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



Revitアドイン作ります

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

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

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

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

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

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

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

以上です。