如何设置类型在Autodesk Revit Architecture软件2010绑定共享参数的值?

StackOverflow https://stackoverflow.com/questions/1492756

  •  18-09-2019
  •  | 
  •  

我有一个共享参数的 UValue 势必在Autodesk Revit Architecture中与WallTypeBinding类型2010。

我可以很容易地访问参数:

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

有帮助吗?

解决方案

确定,我已发现了问题:

当使用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'");
    }
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top