Revit二开–判断元素是否被标记过
在revit二次开发中,在做出图程序的时候,有些时候需要判断元素是否被标记过,如果被标记过我们就不在进行标记以免重复,revit本身并没有提供判断标注的方法,我们可以封装一个方法来判断一个元素是否被标记过。
- 封装方法如下:
public static class IndependentTagHelper
{
/// <summary>
/// 判断当前视图上的元素是否被标记过
/// </summary>
/// <param name="ele"></param>
/// <param name="doc"></param>
/// <returns></returns>
public static bool IsTaged(this Element ele,Document doc)
{
var result = false;
var collector = new FilteredElementCollector(doc, doc.ActiveView.Id);
var independenttags = collector.OfClass(typeof(IndependentTag)).WhereElementIsNotElementType();
var tagids = independenttags.Cast<IndependentTag>().Select(m => m.TaggedLocalElementId);
if (tagids.Contains(ele.Id))
result = true;
return result;
}
}
- 封装好以上方法之后,直接调用就可以了。
调用案例:
[Transaction(TransactionMode.Manual)]
[Journaling(JournalingMode.UsingCommandData)]
class Cmd_JudgeElementTaged:IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
var uiapp = commandData.Application;
var uidoc = uiapp.ActiveUIDocument;
var doc = uidoc.Document;
var sel = uidoc.Selection;
var ele = sel.PickObject(ObjectType.Element).GetElement(doc);
if(ele.IsTaged(doc))
MessageBox.Show("this element is Taged!");
else
{
MessageBox.Show("this element is not Taged!");
}
return Result.Succeeded;
}
}
以上就是判断元素有没有被标记过的全部代码。
如果有不明白的,加群QQ:166072827