美文网首页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