Revitの要素情報を操作するにはElementクラスが基本になります。
Elementが持つ属性情報の多くはParameterという形で格納されています。
この記事では、ElementのParametersプロパティとParameterSetについて解説します。
Revitアドイン開発をLancersにて承っております。
詳しくは下の記事にまとめています。
Parametersプロパティとは
ParametersプロパティはElementが持つすべてのパラメータを参照するための入り口です。
このプロパティを使うことでElementに紐づくパラメータの一覧を取得できます。
例えば、以下のように使用します。
public ParameterSet GetParameters(Element element)
{
return element.Parameters;
}
このように、ParametersプロパティはParameterSet型を返します。
ParameterSetの概要を理解する
ParameterSetは、Parameterのコレクションです。
つまり、複数のParameterオブジェクトを格納した集合です。
ParameterSetはコレクションですが、通常のListとは異なりインデックスアクセスには対応していません。
反復処理で中身を確認する必要があります。
public void ShowAllParameterNames(Element element)
{
foreach (Parameter param in element.Parameters)
{
TaskDialog.Show("Parameter", param.Definition.Name);
}
}
このようにforeachでループして確認します。
ParameterSetを取得する方法
インスタンスとタイプ、それぞれのParameterSetを取得する方法を紹介します。
インスタンスのParameterSet
public void Sample1()
{
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);
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("パラメータ名と値", result);
}
タイプのParameterSet
public void Sample2()
{
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) 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("パラメータ名と値", result);
}
インスタンス、タイプ共に取得したParameterから値を取得するには型に応じたメソッドを使います。
たとえば、文字列の場合はAsString()を使います。
また、AsValueString()は型を問わず表示用の文字列を返してくれるので便利です。
BuiltInParameterや名前でParameterを探す方法
特定の名前のパラメータを取得したい場合は、get_Parameter()やLookupParameter()を使います。
以下は名前でパラメータを取得する方法を示します。
public Parameter FindParameterByName(Element element, string paramName)
{
return element.LookupParameter(paramName);
}
この方法は簡単ですが、大文字小文字の一致やパラメータの重複に注意が必要です。
また、存在しない場合はnullが返るため、nullチェックを忘れないようにします。
特定パラメータ取得の詳しくは下記をご覧ください。
まとめ:ParametersとParameterSet
以上がElementクラスのParametersとParameterSetの基本に関する解説です。
この知識を活用すれば、Revitモデルの自動処理やチェックツールの開発がよりスムーズになります。
ぜひコードを試しながら理解を深めてみてください!
RevitAPI独学用教材
最後に教材等を紹介します。
RevitAPIを理解してプログラムを作れるようになるには、C#の知識が必要です。
下記、オススメの参考書です。
プログラムが初心者にオススメのC#教材
プログラムの基礎知識がある人にオススメのC#教材
美しいコードを書きたい人はこちら
Revitアドイン作ります
のんびり学習してる余裕などない!という方にご案内です。
スキル、資格等の詳細はプロフィールをご覧ください。
ご質問などもお気軽にメッセージしていただければと思います。
詳しくは下の記事にまとめています。
最後まで読んでいただき、ありがとうございました^^
以上です。






