ElementTransformUtils.CopyElement Revit 2012 中的翻译向量

本文关键字:翻译 向量 2012 CopyElement Revit ElementTransformUtils | 更新日期: 2023-09-27 18:30:56

我正在尝试使用户在Revit Api 2012 c#中输入的选定对象的实例,我发现ElementTransformUtils.CopyElement的第三个输入是平移向量而不是新位置,所以我试图从所选元素中选取固定点,然后从中减去新的位置位置并将结果作为平移向量。问题是:我使用 pickobject.globalPoint 从所选对象中获取点,每次我运行代码时都会更改,因此问题:每次选择用户输入的元素时如何获得相同的点?提前致谢

ElementTransformUtils.CopyElement Revit 2012 中的翻译向量

选择原始图元,如下所述:创建选定对象的实例 Revit API

检索元素的位置,如下所示:

Location location = originalElement.Location;
LocationPoint locationPoint = location as LocationPoint;
if (locationPoint != null)
{
  XYZ originalPoint = location.Point;
}

选择新元素的位置,如下所示:

UIDocument uidoc = this.ActiveUIDocument;
XYZ newPoint = uidoc.Selection.PickPoint("Select a location for the element");

创建翻译向量:

XYZ translationVector = newPoint - originalPoint;

复制元素:

Document doc = uidoc.Document;
ICollection<ElementId> copiedElementIds = ElementTransformUtils.CopyElement(doc, originalElement.Id, translationVector);

根据 API 文档,返回 ICollection 而不是单个 ElementId 的原因是:"由于依赖关系,可能会创建多个元素。