在不在族编辑器中的两个元素之间添加维度?

Add dimension between two elements that are not inside the family editor?

我已经看到使用 NewDimension 方法在两点和两条线之间标注尺寸的示例,我假设是在族编辑器中,但我想向模型中的两个族实例添加尺寸,例如水龙头的中心线和管端。然后,如果用户对其进行编辑,则尺寸将 'drive' 距离,沿着管道移动出口,就像用户使用 Revit UI.

创建尺寸一样

我只是不知道 Revit 希望我尝试以何种方式执行此操作:

  1. 找到family实例ID,进入每个family ID,在family中找到一个line/plane/point作为你使用NewDimension时的维度点。希望这能在族编辑器之外工作,尝试在两个不同的族实例(管端和水龙头)之间建立尺寸。

  2. 找到要捕捉到的点的 x、y、z 位置,并在这两个 x、y、z 位置之间创建维度(例如使用 NewDimension 方法),如果x、y、z 位置落在适当的点上,例如管端和水龙头的中心线,然后 Revit 可能会自动将其设为 'smart' 尺寸,'drives' 水龙头的位置。

这是我在 API 中找到的一些有前途的方法,但不确定我应该使用其中的哪一个。

新维度
对齐维度
AddListeningDimensionBendToBend
AddListeningDimensionSegmentToBend
添加 ListeningDimensionSegmentToSegment
SetElementsToDimension

查看显示如何 Dimension Walls by Iterating Faces and Dimension Walls using FindReferencesByDirection 的两个 Building Coder 示例。

用于墙的方法也适用于标准族实例。

请注意,FindReferencesByDirection 方法现在已被 `ReferenceIntersector class 取代。