RevitAPI提供了镜像方法来镜像一个或者多个元素,API如下表。
以下代码显示了如何通过一个平面来镜像一根柱子:
在RevitAPI中,每个Familylnstance有一个Mirrored属性。通过这个属性可以判断一个FamilyInstance(如一根柱子)是否是镜像。
注意:
① 镜像方法需要一个平面作为镜像轴,如果这个平面是null,那么操作会失败并且抛出ArgumentNullException。 因此在使用平面镜像时,需判断该平面是否为null。
方法 | 描述 |
MirrorElement(Document document, ElementId elementToMirror, Plane plane) | 使用给定的平面,创建一个元素的镜像拷贝 |
MirrorElements(Document document, ICollection<ElementId> elementsToMirror,Plane plane) | 使用给定的平面,创建一个元素集合的镜像拷贝 |
CanMirrorElement(Document ADoc, ElementId elemId) | 判断元素是否可以进行镜像操作 |
CanMirrorElements(Document ADoc, ICollection<ElementId> elemIds) | 判断元素集是否可以进行镜像操作 |
|
要镜像一个元素,首先判断这个元素是否支持镜像。
可以使用两个辅助方法CanMirrorElement和CanMirrorElements来判断。
以下代码显示了如何通过一个平面来镜像一根柱子:
void MirrorColumn(Autodesk.Revit.DB.Document projectDoc, FamilyInstance column)
{
using (Transaction tran = new Transaction(projectDoc, "Mirror the column"))
{
tran.Start();
if (null != column)
{
Plane plane = new Plane(XYZ.BasisX, XYZ.Zero);
if (ElementTransformUtils.CanMirrorElement(projectDoc, column.Id))
{
ElementTransformUtils.MirrorElement(projectDoc, column.Id, plane);
}
}
tran.Commit();
}
}
在RevitAPI中,每个Familylnstance有一个Mirrored属性。通过这个属性可以判断一个FamilyInstance(如一根柱子)是否是镜像。
注意:
① 镜像方法需要一个平面作为镜像轴,如果这个平面是null,那么操作会失败并且抛出ArgumentNullException。 因此在使用平面镜像时,需判断该平面是否为null。
② 一般应该选择与Z平面垂直的平面作为镜像平面。
=========【更多高级应用请关注公众号】========
===================================