ウォークスルー: 選択された要素のパラメータを取得する

要素パラメータは、Element ParameterSet から反復して取得されます。次のコード サンプルでは、選択した要素からパラメータを取得する方法を示しています。

注: この例では、AsValueString や StorageType などのいくつかの Parameter メンバーを使用しています。これらについては後続のトピックで説明します。

コード領域 8-1: 選択された要素のパラメータを取得

void GetElementParameterInformation(Document document, Element element)
{
    // Format the prompt information string
    String prompt = "Show parameters in selected Element: \n\r";

    StringBuilder st = new StringBuilder();
    // iterate element's parameters
    foreach (Parameter para in element.Parameters)
    {
        st.AppendLine(GetParameterInformation(para, document));
    }

    // Give the user some information
    TaskDialog.Show("Revit", prompt + st.ToString());
}

String GetParameterInformation(Parameter para, Document document)
{
    string defName = para.Definition.Name + "\t : ";
    string defValue = string.Empty;
    // Use different method to get parameter data according to the storage type
    switch (para.StorageType)
    {
        case StorageType.Double:
            //covert the number into Metric
            defValue = para.AsValueString();
            break;
        case StorageType.ElementId:
            //find out the name of the element
            Autodesk.Revit.DB.ElementId id = para.AsElementId();
            if (id.IntegerValue >= 0)
            {
                defValue = document.GetElement(id).Name;
            }
            else
            {
                defValue = id.IntegerValue.ToString();
            }
            break;
        case StorageType.Integer:
            if (ParameterType.YesNo == para.Definition.ParameterType)
            {
                if (para.AsInteger() == 0)
                {
                    defValue = "False";
                }
                else
                {
                    defValue = "True";
                }
            }
            else
            {
                defValue = para.AsInteger().ToString();
            }
            break;
        case StorageType.String:
            defValue = para.AsString();
            break;
        default:
            defValue = "Unexposed parameter.";
            break;
    }

    return defName + defValue;
}

図 26: 壁のパラメータの取得結果

注: Revit では、いくつかのパラメータには、[要素プロパティ]ダイアログ ボックスのドロップダウン リストの値があります。Revit プラットフォーム API を使用して、パラメータの列挙型に対応する数値を取得できますが、Parameter.AsValueString()メソッドを使用して値の文字列表現を取得することはできません。