前言
本文介绍 Revit 中标记相关的内容。这里的标记指的是 IndependentTag,它包按类比标记、全部标记、多类别标记、材质标记和空间标记。
内容
通过 API 可以获得和修改的数据:
- 一个标记的引线,是否能够显示,
HasLeader
; - 一个标记的方向,水平或者垂直,
TagOrientation
; - 引线的类型,附着端点或自由端点,
LeaderEndCondition
; - 是否有弯头,和对弯头位置的控制,
HasElbow
和LeaderElbow
; - 标记的文字,只读,从被标记的构件中获得,
TagText
; - 标记的位置,下图中十字位置,
TagHeadPosition
; - 引线箭头位置,仅在自由端点类型有效,
LeaderEnd
。
下图中,标记指向的构件,TaggedElementId
和 TaggedLocalElementId
在这里是一样。另外,GetTaggedLocalElement
和 GetTaggedReference
也都是标记指向的构件。
完整的 API 接口:
namespace Autodesk.Revit.DB
{
// Represents tag annotations in Revit.
public class IndependentTag : Element
{
// Tag 是否有弯头。
public bool HasElbow { get; }
// Tag 的文字。
public string TagText { get; }
// 是否是材质 Tag。
public bool IsMaterialTag { get; }
// 是否是多类别 Tag。
public bool IsMulticategoryTag { get; }
// 是否是孤立的 Tag,就是它要标记的构件已经被删除了。
public bool IsOrphaned { get; }
// 本地被标记的构件的 Id,如果是子构件,则返回父构件的 Id。
public ElementId TaggedLocalElementId { get; }
// Tag 的方向,水平或者垂直。
public TagOrientation TagOrientation { get; set; }
// Tag 标记头的位置。
public XYZ TagHeadPosition { get; set; }
// 是否有引线。
public bool HasLeader { get; set; }
// 如果有多个索引,返回主构件。
public ElementId MultiReferenceAnnotationId { get; }
// 引线类型
public LeaderEndCondition LeaderEndCondition { get; set; }
// 弯头的位置。
public XYZ LeaderElbow { get; set; }
// 如果是自由端点,则返回箭头的位置。
public XYZ LeaderEnd { get; set; }
// 被标记的构件。
public LinkElementId TaggedElementId { get; }
// 创建一个 Tag。
public static IndependentTag Create(Document document, ElementId ownerDBViewId, Reference referenceToTag, bool addLeader, TagMode tagMode, TagOrientation tagOrientation, XYZ pnt);
public static IndependentTag Create(Document document, ElementId symId, ElementId ownerDBViewId, Reference referenceToTag, bool addLeader, TagOrientation tagOrientation, XYZ pnt);
// 判断引线类型是否可以改变。
public bool CanLeaderEndConditionBeAssigned(LeaderEndCondition leaderEndCondition);
// 得到本地被标记的构件。
public Element GetTaggedLocalElement();
// 得到标记所使用的索引。
public Reference GetTaggedReference();
// 判断是否标记在子构件上。
public bool IsTaggedOnSubelement();
}
}