版权声明:此文由黑夜の骑士创作,转载请注明出处,交流qq1056291511 https://blog.csdn.net/birdfly2015/article/details/90521723
背景
A BuiltnParameter cannot be changed from instance to type or type to instance
小伙伴们在revit二次开发,对族参数批量变为实例,或者类型时,可能遇到这个错误,什么原因呢?
因为这个参数是revit族自带的参数,也就是内置参数(BuiltnParameter)。如下图的结构材质就是
解决思路
拿结构材质来说,因为是内置的,所以在创建族的时候,这个参数系统就默认帮我们创建好了。
因此,在族中批量将参数转为实例的时候,需要将这个结构材质过滤出去。
判断思路:使用familyParameter.Definition.Name进行筛选
如何过滤,可以参考下面代码。
关于族的类型参数与实例参数转换可以看博主的另外一篇文章 族的类型参数与实例参数相互装换
代码
foreach (FamilyParameter familyParameter in familyManager.Parameters)
{
//将内置参数在这个地方过滤掉
if(familyParameter.Definition.Name=="结构材质")
{continue;}
//过滤后的参数,就可以自由转换了
familyManager.MakeInstance(familyParameter);
//完整代码参看博主上面的文章链接,然后将此处代码加入即可
}