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

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

要素パラメータは、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:";
        
        StringBuilder st = new StringBuilder();
        // iterate element's parameters
        foreach (Parameter para in element.Parameters)
        {
                st.AppendLine(GetParameterInformation(para, document));
        }
        
        // Give the user some information
        MessageBox.Show(prompt, "Revit", MessageBoxButtons.OK);
}

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

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

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