Revit二开之创建TextNote
TextNode在Revit注释模块中,具体位置如图所示
图中是Revit2018版本
【Revit中的使用】
Revit 中的操作是点击上图中的按钮在平面视图中点击任意放置放置就行,
在属性中可以修改文字
代码实现
创建TextNode
ExternalCommandData externalCommandData = CommandData as ExternalCommandData;
UIDocument uiDoc = externalCommandData.Application.ActiveUIDocument;
Document rvtDoc = uiDoc.Document;
// 获取当前活动的文档
View activeView = uiDoc.ActiveView;
XYZ textOrigion = new XYZ(10, 10, 0);
ElementId textdefaultTypeId = rvtDoc.GetDefaultElementTypeId(ElementTypeGroup.TextNoteType);
TextNote note = TextNote.Create(rvtDoc, activeView.Id, textOrigion, "这是文本内容", textdefaultTypeId);
获取指定的TextNodeType及创建TextNodeType
下例子中获取的是文字大小是2.5mm的TextNodeType
FilteredElementCollector textTypeFilter = new FilteredElementCollector(rvtDoc);
List<TextNoteType> textNoteTypes = textTypeFilter.OfClass(typeof(TextNoteType)).WhereElementIsElementType().Cast<TextNoteType>().ToList();
TextNoteType textNoteType = textNoteTypes.Find(f =>
{
Parameter parameter = f.get_Parameter(BuiltInParameter.TEXT_SIZE);
if (parameter != null)
{
double textSize = parameter.AsDouble();
return Math.Abs(2.5 - textSize) < 0.0001;
}
return false;
});
//如果不存在则创建文字大小为2.5mm的字体
if (textNoteType==null)
{
TextNoteType tmpType = textNoteTypes.First();
textNoteType = tmpType.Duplicate("2.5mm") as TextNoteType;
Parameter parameter = textNoteType.get_Parameter(BuiltInParameter.TEXT_SIZE);
double size = UnitUtils.ConvertToInternalUnits(2.5,DisplayUnitType.DUT_MILLIMETERS);
parameter.Set(size);
rvtDoc.Regenerate();
}