Revit二开之报错A BuiltnParameter cannot be changed from instance to type or type to instance

版权声明:此文由黑夜の骑士创作,转载请注明出处,交流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);
               //完整代码参看博主上面的文章链接,然后将此处代码加入即可
                }

猜你喜欢

转载自blog.csdn.net/birdfly2015/article/details/90521723