宋 强
(青岛酒店管理职业技术学院, 山东 青岛 266100)
Revit族是一个包含通用属性(称作参数)集和相关图形表示的图元组。在API中,提供了一系列的类和方法来管理族文档,包括族类型和族参数的管理、几何图元的管理、几何图元的可见性管理、族文档和工程文档交互(编辑族和载入族)等。
FamilyManager类代表了编辑族类型的最重要的工具,它与族类型类(FamilyType)和族参数类(FamilyParameter)一起实现了“族类型”对话框中的添加、修改和删除的一整套功能,包括:族类型的创建和修改、族参数的创建和修改、族参数的关联约束等。该类只存在于族文档中,在项目文档中,该类的实例是不能得到,而在族文档中,必然有一个该类的实例。以下示例了如何从文档中得到该类的实例:
·代码片段:
获取族管理器
·内容:
Documentdoc;//得到族文档
If(doc.IsfamilyDocument)
{
//只有当IsFamilyDocument等于true,FamilyManager才能得到FamilyManagerfamilyMgr=doc.FamilyManager;
}
当前族类型可以从族管理类上面直接得到,而当前族类型可能为空,此时用户可以创建并设置一个族类型为当前类型。函数原型为:FamilyType CurrentType{get;set;}。以下示例了如何获取当前族类型:
·代码片段:
获取当前族类型
·内容:
//得到FamilyManager
FamilyManager familyMgr=doc.FamilyManager;
FamilyType currentType=familyMgr.CurrentType;
If(currentType!=null)
{
//当前族类型可以能为空,建议在其他操作前加上空检查
}
使用FamilyManager中的NewType来实现族类型的添加,在创建完成后,Revit会把新创建的族类型设置为当前族类型。函数原型为:FamilyManager.NewType(stringtypeName)。以下示例了如何创建新的族类型:
代码片段:
创建新的类型
内容:
//得到FamilyManager
FamilyManager familyMgr=doc.FamilyManager;
//族类型的名字,保证在所有族类型中唯一
String newTypeName= “UniqueName”;
//创建,得到FamilyType的实例
FamilyType famType=familyMgr.NewType(newTypeName);
使用DeleteCurrentType来实现族类型的删除。一般而言,当函数把当前族类型删除后, 第一个族类型会成为当前族类型,最后一个版类型是不能删除的。函数原型为:FamilyManager.DeleteCurrentType()。以下示例了如何删除族类型:
代码片段:
删除族类型
内容:
//得到FamilyManager
FamilyManager familyMgr=doc.FamilyManager;
If(familyMgr.CurrentType!=null)
{
//只有当前族类型存在,我们才能调用下面的删除方法
familyMgr.DeleteCurrentType();
//一般来说,当删除结束后,第一个族类型会成为当前类型,
//但是为了确保安全,建议你显示设置成你需要的类型
if(familyMgr.Types.Size!=0)
{
FamilyType type=familyMgr.Types.Cast
familyMgr.CurrentType=type;
}
}
使用FamilyManager类中的AddParameter(ExternalDefinitionfamilyDefinition,BuiltInParameterGroupparameterGroup,bool islnstance)来创建,使用用法和一般族参数类似。
使 用 FamilyManager类 中 的 AddParameter(stringparameterName,BuiltlnParameterGroup parameterGroup,ParameterType parameterType,bool islnstance)来创建。此类族参数都有一个Revit预定义的参数类型(如长度、体积等),当这个参数类型确定以后, 参数可以实现的操作也就确定了。例如,参数的单位(长度参数的单位可以是cm,而体积的单位可以是cm³),哪些参数可以关联(显然长度和体积的参数是不能关联到一起的)。
使 用 Familymanager类 中 的 AddParameter(stringparameterName,BuiltInParameterGroup parameterGroup,Category familyCategory,bool islnstance)来创建。此类族参数使用一个Revit预定义的类别(Category),只有该类型下的族类型可以设置为此参数的值。此类族参数是用来支持一个族文档嵌套到另一千个族文档的情况的。
使用FamilyManager以及族类型类(FamilyType)和族参数类(FamilyParameter)可以实现“族类型”对话框中的添加、修改和删除的一整套功能;使用FamilyType CurrentType可以获取当前族类型;使用FamilyManager中的NewType、DeleteCurrentType、RenameCurrentType可以实现族类型的创建、删除、重命名;使用FamilyManager类中的AddParameter或RenameParameter可以实现族参数的创建和重命名等。
[1]杨春蕾.Revit软件二次开发研究[J].工程建设与设计,2017(19).
[2]张艺晶.Revit软件基于项目的二次开发应用研究[D].河北:河北科技大学,2015.
[3]葛晶,周世光.基于Revit平台BIM工作系统二次开发应用实例[J].建筑技术,2017(12).