这期起,将为大家带来二次开发的小案例讲解,通过借助Revit建模与二次开发,帮助大家快速提高开发水平,快快参加吧!!!
族实例是通过族类型创建的,而创建族实例是Revit二次开发尤其重要的,因此小伙伴们要熟练掌握族实例的创建方法。
族实例重要的方法
1 FamilyInstance.Host
此方法获取族实例的宿主;
2 FamilyInstance.rotate()
此方法来旋转族实例;
3 FamilyInstance.FilpFacing()
此方法可以翻转门窗的朝向;
4 FamilyInstance.Hand()
此方法翻转开门方向。
5 FamilyInstance.GetSubComponentIds()
Component.SuperComponent()
分别获取构件的子构件与父构件。
族实例的创建方法
创建族实例的方法名为CreateFamilyInstance,存在于Autodesk.Revit.Creation.Document以及他们的父类中,他们的对象可以从Autodesk.Revit.DB.Document.Create获得。
案例讲解
本文结合之前所学的知识,首先利用公制常规模型做一个名称为底座板的族,并添加实例参数角度(这里需要注意添加实例参数还是类型参数需要视实际情况而定);族模型如下:
底座板族
添加的族参数
然后利用二次开发,创建族实例,并获取族参数,修改其角度参数。(这里需要注意程序运行前需要将底座板族载入到项目)
程序关键代码及注释如下:
UIDocument uidoc = commandData.Application.ActiveUIDocument;
Document doc = uidoc.Document;
FilteredElementCollector collector = new FilteredElementCollector(doc);//建立过滤器
collector.OfClass(typeof(FamilySymbol));//过滤族类型
FamilySymbol familySymbol = null;
foreach (var ele in collector)
{
if (ele.Name == "底座板")//得到名称为底座板的族类型
{
familySymbol = ele as FamilySymbol;
break;
}
}
FamilySymbol fs1 = familySymbol;
XYZ xYZ1 = new XYZ(0, 0, 0);//设置创建的族的位置
FamilyInstance familyInstance = null;
using (Transaction tran1 = new Transaction(doc))//创建事务(创建底座板族)
{
tran1.Start("kaishi");
familyInstance = doc.Create.NewFamilyInstance(xYZ1, fs1, StructuralType.NonStructural);
tran1.Commit();
}
IList<Parameter> list = familyInstance.GetParameters("角度");
//找到角度参数 使用名称来找到参数,因为revit2016为了避免得到重复的名字,
//只能用GetParameters得到一个集合,如果你只用唯一的名字,那只用取list[0]就可以了
Parameter parameter = list[0];
using (Transaction tran2 = new Transaction(doc))
{
tran2.Start("kaishi");
parameter.Set(20 * Math.PI / 180);//设置参数值为20度(这里需要注意设置的值为弧度,需要换算)
tran2.Commit(); //1度=Math.PI/180弧度
}
运行结果如下:
左为改变参数前的底座板 右为改变参数后的底座板
整个步骤为:
- 利用公制常规模型创建名称为底座板的族,并添加主要参数,如角度参数设为40度。
- 通过RevitAPI二次开发,找到类型为底座板的族,调用创建族实例的方法,创建族实例。
- 获取族实例的角度参数,修改其角度参数。
- 运行Revit,首先载入底座板族,运行程序。
注意事项:
- 在创建族模型时,添加的角度参数为实例参数,而不是类型参数,这样可以创建族实例后在修改实例的角度参数。如果是类型参数需要先获取类型参数进行修改,再创建族实例。
- 在二次开发中,长度单位为英尺,角度用弧度代替,需要进行换算。
- 运行程序前,需要先将族模型载入到项目中。
下期更精彩:
下一期将对程序进行升级,利用Revit二次开发自动载入族模型,并激活,还会介绍其他创建族实例的方法。
欢迎关注微信公众号,学到更多BIM知识