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);
}
{
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);
}
{
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#初心者の僕が独学でお世話になった本
プログラミング初心者の僕がコーディング学習でお世話になった本
スポンサーリンク