关于土木工程Revit软件族的二次开发研究

2018-03-29 19:27
四川水泥 2018年4期
关键词:二次开发示例实例

宋 强

(青岛酒店管理职业技术学院, 山东 青岛 266100)

Revit族是一个包含通用属性(称作参数)集和相关图形表示的图元组。在API中,提供了一系列的类和方法来管理族文档,包括族类型和族参数的管理、几何图元的管理、几何图元的可见性管理、族文档和工程文档交互(编辑族和载入族)等。

1 获取族管理类

FamilyManager类代表了编辑族类型的最重要的工具,它与族类型类(FamilyType)和族参数类(FamilyParameter)一起实现了“族类型”对话框中的添加、修改和删除的一整套功能,包括:族类型的创建和修改、族参数的创建和修改、族参数的关联约束等。该类只存在于族文档中,在项目文档中,该类的实例是不能得到,而在族文档中,必然有一个该类的实例。以下示例了如何从文档中得到该类的实例:

·代码片段:

获取族管理器

·内容:

Documentdoc;//得到族文档

If(doc.IsfamilyDocument)

{

//只有当IsFamilyDocument等于true,FamilyManager才能得到FamilyManagerfamilyMgr=doc.FamilyManager;

}

2 获取族类型

当前族类型可以从族管理类上面直接得到,而当前族类型可能为空,此时用户可以创建并设置一个族类型为当前类型。函数原型为:FamilyType CurrentType{get;set;}。以下示例了如何获取当前族类型:

·代码片段:

获取当前族类型

·内容:

//得到FamilyManager

FamilyManager familyMgr=doc.FamilyManager;

FamilyType currentType=familyMgr.CurrentType;

If(currentType!=null)

{

//当前族类型可以能为空,建议在其他操作前加上空检查

}

3 族类型的编辑

3.1 族类型的创建

使用FamilyManager中的NewType来实现族类型的添加,在创建完成后,Revit会把新创建的族类型设置为当前族类型。函数原型为:FamilyManager.NewType(stringtypeName)。以下示例了如何创建新的族类型:

代码片段:

创建新的类型

内容:

//得到FamilyManager

FamilyManager familyMgr=doc.FamilyManager;

//族类型的名字,保证在所有族类型中唯一

String newTypeName= “UniqueName”;

//创建,得到FamilyType的实例

FamilyType famType=familyMgr.NewType(newTypeName);

3.2 族类型的删除

使用DeleteCurrentType来实现族类型的删除。一般而言,当函数把当前族类型删除后, 第一个族类型会成为当前族类型,最后一个版类型是不能删除的。函数原型为:FamilyManager.DeleteCurrentType()。以下示例了如何删除族类型:

代码片段:

删除族类型

内容:

//得到FamilyManager

FamilyManager familyMgr=doc.FamilyManager;

If(familyMgr.CurrentType!=null)

{

//只有当前族类型存在,我们才能调用下面的删除方法

familyMgr.DeleteCurrentType();

//一般来说,当删除结束后,第一个族类型会成为当前类型,

//但是为了确保安全,建议你显示设置成你需要的类型

if(familyMgr.Types.Size!=0)

{

FamilyType type=familyMgr.Types.Cast().ElementAt(0);

familyMgr.CurrentType=type;

}

}

4 创建和编辑族参数

4.1 共享族参数

使用FamilyManager类中的AddParameter(ExternalDefinitionfamilyDefinition,BuiltInParameterGroupparameterGroup,bool islnstance)来创建,使用用法和一般族参数类似。

4.2 一般族参数

使 用 FamilyManager类 中 的 AddParameter(stringparameterName,BuiltlnParameterGroup parameterGroup,ParameterType parameterType,bool islnstance)来创建。此类族参数都有一个Revit预定义的参数类型(如长度、体积等),当这个参数类型确定以后, 参数可以实现的操作也就确定了。例如,参数的单位(长度参数的单位可以是cm,而体积的单位可以是cm³),哪些参数可以关联(显然长度和体积的参数是不能关联到一起的)。

4.3 族类型参数

使 用 Familymanager类 中 的 AddParameter(stringparameterName,BuiltInParameterGroup parameterGroup,Category familyCategory,bool islnstance)来创建。此类族参数使用一个Revit预定义的类别(Category),只有该类型下的族类型可以设置为此参数的值。此类族参数是用来支持一个族文档嵌套到另一千个族文档的情况的。

5 总结

使用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).

猜你喜欢
二次开发示例实例
浅谈基于Revit平台的二次开发
2019年高考上海卷作文示例
常见单位符号大小写混淆示例
浅谈Mastercam后处理器的二次开发
常见单位符号大小写混淆示例
“全等三角形”错解示例
西门子Easy Screen对倒棱机床界面二次开发
ANSYS Workbench二次开发在汽车稳定杆CAE分析中的应用
完形填空Ⅱ
完形填空Ⅰ