TransformWithBoundary类是Revit API中用于描述包含变换和边界的类型。该类用于创建一个既包括旋转、平移等空间变换操作,也包含边界约束限制的对象。
该类具有以下属性:
Boundary: CurveLoop - 只读属性,获取该对象所包含的边界。
Transform: Transform - 读写属性,获取或设置该对象的空间变换操作。
该类具有以下方法:
TransformWithBoundary(CurveLoop, Transform) - 构造函数,用于创建包含边界和变换的对象。
Equals(Object) - 判断当前对象是否等于另一个对象。
GetHashCode() - 获取当前对象的哈希值。
ToString() - 返回该对象的字符串表示形式。
以下示例展示了如何使用TransformWithBoundary类。该示例首先创建了一个Box的边界对象,然后再构造一个包含旋转变换和边界的TransformWithBoundary对象。
Document doc = commandData.Application.ActiveUIDocument.Document;
XYZ p1 = new XYZ(0, 0, 0);
XYZ p2 = new XYZ(10, 0, 0);
XYZ p3 = new XYZ(10, 10, 0);
XYZ p4 = new XYZ(0, 10, 0);
List<Curve> curves = new List<Curve>();
curves.Add(Line.CreateBound(p1, p2));
curves.Add(Line.CreateBound(p2, p3));
curves.Add(Line.CreateBound(p3, p4));
curves.Add(Line.CreateBound(p4, p1));
CurveLoop loop = CurveLoop.Create(curves);
Transform transform = Transform.CreateRotationAtPoint(
XYZ.BasisX, Math.PI / 4, new XYZ(5, 5, 0));
TransformWithBoundary tb = new TransformWithBoundary(loop, transform);
由于该类使用了CurveLoop类型来描述边界,因此需要使用Autodesk.Revit.DB.GeometryCreationUtilities类或自定义代码来构造结果。
在调用构造函数时,应保证传入的CurveLoop对象与Transform操作的中心点或轴线相交或重叠,否则可能会导致意外的结果。
该类可以用于描述建筑物的楼板、墙面、屋顶等的边界形状,并配合使用FamilyInstance进行建模操作。