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开发

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值