Revitで開発を始めるときに必ず触れるのがElementクラスです。
Elementには様々なパラメータが含まれています。
パラメータの情報を取得するときにはGetOrderedParametersが役立ちます。
この記事では初心者でも簡単に理解できるように解説します。
具体的なコード例を見ながら学んでいきましょう。
Revitアドイン開発をLancersにて承っております。
詳しくは下の記事にまとめています。
GetOrderedParametersとは
GetOrderedParametersはElementクラスのメソッドの一つです。
このメソッドを使うとElementのパラメータを順番に取得でき、パラメータを整理した状態で取得できるため便利です。
実際のコード例を示します。
// Elementからパラメータ取得 IList<Parameter> parameters = element.GetOrderedParameters();
これだけでパラメータを順序よく取得できます。
後ほど詳しく解説していきます。
Elementクラスの基本知識
ElementクラスはRevitAPIで最も基本的なクラスです。
Revit内のあらゆるオブジェクトがElementとして扱われます。
例えば壁や床もすべてElementです。
Elementを理解するための簡単なコード例を示します。
public void Sample()
{
Autodesk.Revit.UI.UIDocument uidoc = this.ActiveUIDocument;
Autodesk.Revit.DB.Document doc = uidoc.Document;
// ドキュメントから壁のElementを取得
FilteredElementCollector collector = new FilteredElementCollector(doc);
collector.OfClass(typeof(Wall));
foreach(Element wall in collector)
{
// ElementIdを表示する
TaskDialog.Show("Wall ID", wall.Id.ToString());
}
}
このようにRevitの要素はElementとして扱われます。
パラメータはElementに紐づいています。
パラメータの取得方法
Elementのパラメータは主に二つの方法で取得できます。
GetOrderedParametersとParametersプロパティです。
ここではGetOrderedParametersの利用法を紹介します。
次のコードを見てください。
// パラメータを順序よく取得
IList<Parameter> parameters = element.GetOrderedParameters();
foreach(Parameter param in parameters)
{
TaskDialog.Show("Param Name", param.Definition.Name);
}
これでパラメータの名前を簡単に取得できます。
順序も整理されています。
並び順の意味と活用法
GetOrderedParametersはパラメータを一定の順序で取得します。
これはRevitが定めた順序に従い、パラメータの表示順に沿って取得されます。
順序を意識したコード例を紹介します。
// パラメータ名と値を順に取得する
IList<Parameter> parameters = element.GetOrderedParameters();
foreach(Parameter param in parameters)
{
string paramName = param.Definition.Name;
string paramValue = param.AsValueString();
TaskDialog.Show(paramName, paramValue);
}
ユーザーに見やすい順序で表示されるため便利です。
コード例で実践解説
これまでのコードを使用してより具体的なコードを使って説明します。
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);
IList<Parameter> parameters = element.GetOrderedParameters();
string message = "";
foreach(Parameter param in parameters)
{
string paramName = param.Definition.Name;
string paramValue = param.AsValueString();
message += paramName + " : " + paramValue + "\n";
}
TaskDialog.Show("Parameters", message);
}
このメソッドを呼び出すだけでパラメータを一覧表示できます。
Parametersメソッドとの違い
GetOrderedParametersとよく比較されるのがParametersプロパティです
Parametersプロパティは順番が整理されておらず、必要なパラメータが探しにくい場合があります。
比較するコード例を示します。
// Parametersプロパティでパラメータ取得
ParameterSet parameters = element.Parameters;
foreach(Parameter param in parameters)
{
TaskDialog.Show("Param Name", param.Definition.Name);
}
Parametersプロパティの場合は順序が不明確です。
順序を気にしない場合にはParametersを使います。
見やすく整理する場合はGetOrderedParametersが最適です。
取得結果の効率的な利用法
取得したパラメータを有効に活用する方法を紹介します。
よくある例がパラメータのフィルタリングです。
特定のパラメータだけを選択できます。
// 特定パラメータのみ取得するメソッド
public Parameter GetParameterByName(Element element, string name)
{
IList<Parameter> parameters = element.GetOrderedParameters();
foreach(Parameter param in parameters)
{
if(param.Definition.Name == name)
{
return param;
}
}
return null;
}
まとめとポイント整理
以上、GetOrderedParametersによるParameter取得の紹介でした。
以下のポイントを意識して活用してみてください^^
- GetOrderedParametersで順序よく取得可能です。
- Parametersプロパティより整理されています。
- 特定のパラメータ抽出にも便利です。
最後まで読んでいただきありがとうございました。
RevitAPI独学用教材
最後に教材等を紹介します。
RevitAPIを理解してプログラムを作れるようになるには、C#の知識が必要です。
下記、オススメの参考書です。
プログラムが初心者にオススメのC#教材
プログラムの基礎知識がある人にオススメのC#教材
美しいコードを書きたい人はこちら
Revitアドイン作ります
のんびり学習してる余裕などない!という方にご案内です。
スキル、資格等の詳細はプロフィールをご覧ください。
ご質問などもお気軽にメッセージしていただければと思います。
詳しくは下の記事にまとめています。
最後まで読んでいただき、ありがとうございました^^
以上です。






