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