0

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

4

1 回答 1

0

按照此处的说明选择原始元素:create Instances of Selected object 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 的原因是:“由于依赖关系,可能会创建多个元素。”

于 2013-09-12T17:39:29.283 回答