美文网首页BIMnotes
Revit二次开发:族参数绑定

Revit二次开发:族参数绑定

作者: BIMnotes | 来源:发表于2020-08-14 09:42 被阅读0次

在写异形柱转化功能的时候,想在族里面加一个材质的参数,并且将这个参数绑定在模型上。

效果如下:


参数绑定

代码如下:

        /// <summary>
        /// 绑定材质参数
        /// </summary>
        /// <param name="faDoc"></param>
        /// <param name="extrusion"></param>
        private static void BindParam(Document faDoc, Extrusion extrusion)
        {
            var faManager = faDoc.FamilyManager;
            // 添加材质参数
            // var materialFamilyPara = faManager.AddParameter("结构材质", BuiltInParameterGroup.PG_MATERIALS, ParameterType.Material, false);

            // 获取族材质参数
            var materialFamilyPara = faManager.get_Parameter(BuiltInParameter.STRUCTURAL_MATERIAL_PARAM);
            
            // 获取元素材质参数
            var materialElementPara = extrusion.get_Parameter(BuiltInParameter.MATERIAL_ID_PARAM);

            // 关联参数
            using (Transaction ts=new Transaction(faDoc, "BindingParameter"))
            {
                ts.Start();
                var materialID = new FilteredElementCollector(faDoc).OfCategory(BuiltInCategory.OST_Materials).Select(e=>e.Id).FirstOrDefault();
                if (materialID == null)
                    return;
                faManager.Set(materialFamilyPara, materialID);

                if (faManager.CanElementParameterBeAssociated(materialElementPara))
                {
                    TaskDialog.Show("test", "element:" + materialElementPara.Definition.Name + "\nfamily:" + materialFamilyPara.Definition.Name);
                    faManager.AssociateElementParameterToFamilyParameter(materialElementPara, materialFamilyPara);
                }
                ts.Commit();
            }
           
        }

三个小问题需要注意下:

  • 添加参数前可以先看看族样板里面有没有内置相关的参数。没有就新建,有的话通过get_Parameter方法直接拿来用。
  • 如果使用的是系统内置参数,无法进行实例类型之间的相互转换。
  • 绑定参数时,要提前给族参数赋值,否则会抛异常。Autodesk.Revit.Exceptions.InvalidOperationException: Document regeneration failed.

相关文章

网友评论

    本文标题:Revit二次开发:族参数绑定

    本文链接:https://www.haomeiwen.com/subject/jlfzcktx.html