Parameterが持っている値は、Double、Integer、String、ElementIdの型うちどれかになります。
そして、どの型を持っているかによって値を取得するメソッドが異なります。
どの型を持っているのかはParameterクラスのStorageTypeプロパティを使って確認できますよ。
もくじ
Parameter.StorageTypeのサンプル
サンプルのソースコードはParameterSetの紹介で使ったSample1を使います。
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;
}
Definition definition = parameter.Definition;
InternalDefinition internalDefinition = definition as InternalDefinition;
result += internalDefinition.BuiltInParameter + “■” + parameter.Definition.Name + “■” + parameter.StorageType + “■” + parameterValue + “\n”;
}
TaskDialog.Show(“Message”, result);
}
Parameter.StorageTypeの解説
パラメータの取得
Sample1のうちパラメータを取得しているのは下記のコードです。
【パラメータの取得】
Element element = doc.GetElement(reference);
ParameterSet parameterSet = element.Parameters;
Selectionクラスで選択した要素にParametersメソッドを適用し、この戻り値をParameterSetクラスの変数parameterSetに代入しています。
StorageTypeによる仕分け
parameterSetをforeach文でループさせる中で、それぞれのParameterが持つ値の型を探っています。
手法としてはswitch文でparameter.StorageTypeによってソートしています。
【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;
}
Parameter.StorageTypeの戻り値はStorageType列挙型になります。この列挙子には下表のものがあります
StorageTypeの列挙子
列挙子 | 解説 |
None | 無効なStorageType |
Integer | StorageTypeが整数型 |
Double | StorageTypeが浮動小数点数型 |
String | StorageTypeが文字列 |
ElementId | StorageTypeがElementId |
上記コーディングのように、StorageType.Stringの時はAsStringメソッドで値を取得でき、それ以外はAsValueStringメソッドを使います。
*正しくはAsDouble、AsInteger、AsElementIdそれぞれメソッドがあります。一番簡単な手法を示しました。
Parameter.StorageTypeまとめ
以上、Parameter.StorageTypeでパラメータの型を仕分けた上で、正しく値を取得する手法を示しました。
最後まで読んでいただき、ありがとうございました!