Autodesk.Revit.DB.Definition
是 Revit API 中的一个类,用于定义 Revit 中的各种对象,例如族类型、参数、类别、材质等。该类是所有 Autodesk.Revit.DB
命名空间中定义类的基类,它包含了常用的属性和方法,以便让开发人员可以创建自定义的 Revit 对象。
下面是 Autodesk.Revit.DB.Definition
常用的属性:
Category
:获取或设置一个对象所属的类别。该属性返回一个 Category
对象。Name
:获取或设置一个对象的名称。OwnerFamily
:获取包含定义对象的族。该属性返回一个 Family
对象。下面是 Autodesk.Revit.DB.Definition
常用的方法:
Get
: 获取一个对象的值。该方法需要传入一个 Document
对象。Set
:设置一个对象的值。该方法需要传入一个新值和一个 Transaction
对象。下面是使用 Autodesk.Revit.DB.Definition
创建一个新的族类型的示例:
// 获取当前文档
Document doc = uidoc.Document;
// 如果FamilySymbol已存在,则直接使用
FamilySymbol symbol = null;
List<FamilySymbol> symbols = new FilteredElementCollector(doc).OfClass(typeof(FamilySymbol)).Cast<FamilySymbol>().ToList();
foreach (FamilySymbol s in symbols)
{
if (s.Family.Name == "MyFamily" && s.Name == "MyFamilyType")
{
symbol = s;
break;
}
}
if (symbol == null)
{
// 获取族
var loadResult = doc.LoadFamily(@"path\to\my\family.rfa", out Family family);
// 获取类型
FamilySymbol fs = null;
foreach (ElementId fsId in family.GetFamilySymbolIds())
{
fs = doc.GetElement(fsId) as FamilySymbol;
if (fs.Name == "MyFamilyType")
{
symbol = fs;
break;
}
}
if (fs == null)
{
// 创建类型
using (Transaction transaction = new Transaction(doc))
{
transaction.Start("Create New FamilySymbol");
fs = doc.FamilyCreate.NewType("MyFamilyType");
fs.Family.Name = "MyFamily";
fs.Document.OwnerFamily = family;
transaction.Commit();
}
symbol = fs;
}
}
// 设置族类型参数值
Parameter p = symbol.LookupParameter("MyParameter");
if (p != null)
{
using (Transaction transaction = new Transaction(doc))
{
transaction.Start("Set Parameter Value");
p.Set(10.0);
transaction.Commit();
}
}
上述示例中,首先获取当前文档,然后判断 "MyFamilyType" 类型是否已经存在。如果已存在,则使用这个类型;如果不存在,则获取 "MyFamily" 家族,再从家族中获取 "MyFamilyType" 类型,如果还是不存在,则创建这个类型。接着,使用 LookupParameter()
方法获取 "MyParameter" 参数对象,再使用 Set()
方法设置这个参数的值为 10.0。
Autodesk.Revit.DB.Definition
是 Revit API 中用于定义 Revit 对象的基类,开发人员可以使用其中的常用属性和方法来创建、获取或更改对象的值,从而实现自定义的 Revit 对象。