在寫異形柱轉(zhuǎn)化功能的時(shí)候砸西,想在族里面加一個(gè)材質(zhì)的參數(shù)容贝,并且將這個(gè)參數(shù)綁定在模型上嘀倒。
效果如下:
代碼如下:
/// <summary>
/// 綁定材質(zhì)參數(shù)
/// </summary>
/// <param name="faDoc"></param>
/// <param name="extrusion"></param>
private static void BindParam(Document faDoc, Extrusion extrusion)
{
var faManager = faDoc.FamilyManager;
// 添加材質(zhì)參數(shù)
// var materialFamilyPara = faManager.AddParameter("結(jié)構(gòu)材質(zhì)", BuiltInParameterGroup.PG_MATERIALS, ParameterType.Material, false);
// 獲取族材質(zhì)參數(shù)
var materialFamilyPara = faManager.get_Parameter(BuiltInParameter.STRUCTURAL_MATERIAL_PARAM);
// 獲取元素材質(zhì)參數(shù)
var materialElementPara = extrusion.get_Parameter(BuiltInParameter.MATERIAL_ID_PARAM);
// 關(guān)聯(lián)參數(shù)
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();
}
}
三個(gè)小問題需要注意下:
- 添加參數(shù)前可以先看看族樣板里面有沒有內(nèi)置相關(guān)的參數(shù)页藻。沒有就新建软免,有的話通過
get_Parameter
方法直接拿來用周循。 - 如果使用的是系統(tǒng)內(nèi)置參數(shù)强法,無法進(jìn)行
實(shí)例
和類型
之間的相互轉(zhuǎn)換。 - 綁定參數(shù)時(shí)湾笛,要提前給族參數(shù)賦值饮怯,否則會拋異常。
Autodesk.Revit.Exceptions.InvalidOperationException: Document regeneration failed.