Autodesk.Revit.DB.FamilyUtils是Revit API中的一个类,用于管理和操作Revit家族文件的元素和参数。
public static Family CreateExtrusionFamily(Document document, string familyName, List<Curve> curves, BuiltInCategory category,
List<ElementId> symbolicLineIds, List<ElementId> referenceLineIds)
该方法用于创建一个外挤家族(extrusion family),将一组曲线拉伸成为一个实体。参数curves表示要拉伸实体的曲线集合,category表示家族类型,symbolicLineIds和referenceLineIds表示该家族所需要的其他线的ElementId集合。
public static bool SetElementParameterByName(Element element, string parameterName, object value)
该方法用于设置元素的参数值。参数element表示要设置参数的元素,parameterName表示要设置的参数名,value表示要设置的参数值。如果参数设置成功,则返回true,否则返回false。
public static ElementId GetAssociatedFamilyTypeId(Element element)
该方法用于查询元素所属的家族类型的ElementId。参数element表示要查询的元素,返回值为该元素所属的家族类型的ElementId。
using Autodesk.Revit.ApplicationServices;
using Autodesk.Revit.DB;
using Autodesk.Revit.DB.Architecture;
using Autodesk.Revit.DB.IFC;
using Autodesk.Revit.DB.Structure;
// ...
Document doc = ...; // 获取当前文档对象
// 定义曲线集合
List<Curve> curves = new List<Curve>()
{
Line.CreateBound(new XYZ(0, 0, 0), new XYZ(10, 0, 0)),
Line.CreateBound(new XYZ(10, 0, 0), new XYZ(10, 10, 0)),
Line.CreateBound(new XYZ(10, 10, 0), new XYZ(0, 10, 0)),
Line.CreateBound(new XYZ(0, 10, 0), new XYZ(0, 0, 0)),
};
// 定义家族类型
BuiltInCategory category = BuiltInCategory.OST_GenericModel;
// 创建家族
Family family = FamilyUtils.CreateExtrusionFamily(doc, "ExtrusionFamily", curves, category, null, null);
if (family != null)
{
// 创建家族族类型并设为默认值
FamilySymbol symbol = doc.Create.NewFamilySymbol(family, new ElementId(BuiltInCategory.INVALID));
if (symbol != null)
{
symbol.Name = "ExtrusionType";
symbol.Activate();
}
}
using Autodesk.Revit.ApplicationServices;
using Autodesk.Revit.DB;
using Autodesk.Revit.DB.Architecture;
using Autodesk.Revit.DB.IFC;
using Autodesk.Revit.DB.Structure;
// ...
Document doc = ...; // 获取当前文档对象
ElementId elementId = ...; // 获取要设置参数的元素的ElementId
Element element = doc.GetElement(elementId);
if (element != null)
{
// 设置参数值
bool success = FamilyUtils.SetElementParameterByName(element, "ParameterName", "ParameterValue");
}
using Autodesk.Revit.ApplicationServices;
using Autodesk.Revit.DB;
using Autodesk.Revit.DB.Architecture;
using Autodesk.Revit.DB.IFC;
using Autodesk.Revit.DB.Structure;
// ...
Document doc = ...; // 获取当前文档对象
ElementId elementId = ...; // 获取要查询的元素的ElementId
Element element = doc.GetElement(elementId);
if (element != null)
{
// 查询所属家族类型的ElementId
ElementId familyTypeId = FamilyUtils.GetAssociatedFamilyTypeId(element);
}