オートデスクのRevit建築2010年にバインディングタイプと共有パラメータの値を設定するには?
質問
私は共有パラメータはUValue のオートデスクのRevit建築2010年のWall
とTypeBinding
型にバインドされています。
私は簡単で、パラメータにアクセスすることができます:
Definition d = DefinitionFile.Groups.get_Item("groupname").Definitions.get_Item("UValue");
Parameter parameter = self.get_Parameter("UValue");
このパラメータの値がとで調べることができる。
var u = parameter.AsDouble();
しかし、私はやるとき
parameter.Set(0.8);
私はエラーを取得します:
InvalidOperationExceptionが:操作が原因オブジェクトの現在の状態に有効ではありません。
検査で、パラメータReadOnly
プロパティはfalse
するように設定されている。
解決
[OK]を、私は問題を発見した。
TypeBinding
を使用する場合、パラメータはWall
オブジェクト自体ではないが、そのWallType
性です。あなたは多型の方法(壁だけでなく、だけでなく、床、屋根など)にこれをやっている場合は、Element.ObjectType
プロパティを使用することができます。
OPのコードは、このようにされている必要があります:
Definition d = DefinitionFile.Groups.get_Item("groupname").Definitions.get_Item("UValue");
Parameter parameter = self.ObjectType.get_Parameter("UValue");
これは、Revitのオブジェクトにパラメータを追加するためではなくニート技術、拡張メソッドから呼び出されている。
パラメータの設定は、このように次のように行うことができます:
public static void SetUValue(this Wall self, double uvalue)
{
Parameter parameter = self.ObjectType.get_Parameter("UValue");
if (parameter != null)
{
parameter.Set(uvalue);
}
else
{
throw new InvalidOperationException(
"Wall does not contain the parameter 'UValue'");
}
}
所属していません StackOverflow