欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Revit二开--判断元素是否被标记过

程序员文章站 2022-07-12 14:59:00
...

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二开知识尽在唐僧课堂!

Revit二开--判断元素是否被标记过

Revit二开--判断元素是否被标记过

相关标签: Revit二次开发

上一篇: Week2 实验

下一篇: Week2 A - 化学