Revit二開--判斷元素是否被標記過

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

更多Revit二開知識盡在唐僧課堂!

唐僧課堂BIM開發

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章