如何设置类型在Autodesk Revit Architecture软件2010绑定共享参数的值?
题
我有一个共享参数的 UValue 势必在Autodesk Revit Architecture中与Wall
的TypeBinding
类型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'");
}
}
不隶属于 StackOverflow