RevitAPI

【RevitAPI】Element.ParametersでParameterSetを取得

RevitAPI-Element-Parameters-ParameterSet

ElementクラスのParametersメソッドで要素に結びついているパラメータすべてを取得できます。

Element.Parametersの戻り値はParameterSetクラスが戻り値になります。

ここではこれらを使ったサンプルコードを紹介します。

モデル要素のインスタンスパラメータを取得

サンプル

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);
      ParameterSet parameterSet = element.Parameters;
      
      string result = "";
      foreach(Parameter parameter in parameterSet)
      {
        string parameterValue = "";
        switch(parameter.StorageType)
        {
          case StorageType.Integer:
          case StorageType.Double:
          case StorageType.ElementId:
            parameterValue = parameter.AsValueString();
            break;
          case StorageType.String:
            parameterValue = parameter.AsString();
            break;
          case StorageType.None:
          default:
            break;
        }
        
        result += parameter.Definition.Name + "■" + parameterValue + "\n";
      }
      
      TaskDialog.Show("Message", result);
    }

解説

            インスタンスパラメータを全取得しています。

Selectionクラスで選択した要素に直接Parametersメソッドを適用します。この戻り値をParameterSetクラスの変数parameterSetに代入しています。

parameterSetは複数Parameterの塊なので、foreach文を使うとひとつひとつのParameterにアクセスできますよ。

foreach文中では、各Parameterによって値に定義されている型が異なるためswitch文を使ってあれやこれや仕分けしています。

switch文を使ってあれやこれや、、は後日解説します!

プログラムを実行しモデル要素を選択すると、選択要素のインスタンスパラメータについて、パラメータ名とその値が表示されます。

モデル要素のタイプパラメータを取得

サンプル

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) as FamilyInstance).Symbol;
      ParameterSet parameterSet = element.Parameters;
      
      string result = "";
      foreach(Parameter parameter in parameterSet)
      {
        string parameterValue = "";
        switch(parameter.StorageType)
        {
          case StorageType.Integer:
          case StorageType.Double:
          case StorageType.ElementId:
            parameterValue = parameter.AsValueString();
            break;
          case StorageType.String:
            parameterValue = parameter.AsString();
            break;
          case StorageType.None:
          default:
            break;
        }
        
        result += parameter.Definition.Name + "■" + parameterValue + "\n";
      }
      
      TaskDialog.Show("Message", result);
    }

解説

            Selectionクラスで選択した要素から、ファミリタイプにアクセスしています。

ここを変更するだけで以降のコードはSample1と同じもので、タイプパラメータを全取得できます。

コンポーネントファミリにのみ有効です。

Parametersメソッドまとめ

以上、Elementに結びついたパラメータ一式取得の解説でした。

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

 

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

COMMENT

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

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