Revit中有些族是不基于面创建,有些族是基于面创建(如环形吸顶灯等),这时候需要查看该Family的属性【基于工作平面】这个参数进行判断,可以使用lookup查询到FamilyInstance的主体Family,然后在Parameters里查看。
【判断一个FamilyInstance基于面创建的参数,可以使用以下代码查看】 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Autodesk.Revit.DB.Structure; using Autodesk.Revit.DB.Events; using Autodesk.Revit.DB; using Autodesk.Revit.ApplicationServices; using Autodesk.Revit.Attributes; using Autodesk.Revit.UI; using Autodesk.Revit.DB.Plumbing; using Autodesk.Revit.UI.Selection;
namespace Test_isFamilyInFace { [TransactionAttribute(TransactionMode.Manual)] public class Class1 : IExternalCommand { Reference pickedRef = null; public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { Document doc = commandData.Application.ActiveUIDocument.Document; UIApplication uiApp = commandData.Application;
Selection sel = uiApp.ActiveUIDocument.Selection; pickedRef = sel.PickObject(ObjectType.Element, 'Please select 1'); Element elem1 = doc.GetElement(pickedRef); FamilyInstance fi = elem1 as FamilyInstance; FamilySymbol fs = fi.Symbol; Family f1 = fs.Family; int a = f1.get_Parameter(BuiltInParameter.FAMILY_HOSTING_BEHAVIOR).AsInteger(); string s = HostName(a); TaskDialog.Show('结果:', '主体编号:' + a.ToString() + '\r' + s); return Result.Succeeded; }
public string HostName(int a) { string s = '找不到属性'; switch (a) { case 0: return s = '族不基于面'; case 1: return s = '基于墙的'; case 2: return s = '基于Floor(楼板的)'; case 3: return s = '基于吊顶'; case 5: return s = '基于Face的'; default: return s = '找不到属性'; } }
} }
|