Revit 二次开发隐藏所有图元

 //获取当前文档的所有元素
 UIDocument uiDoc = app.ActiveUIDocument;
 Document doc = uiDoc.Document;
//过滤所有视图
 IList<Element> views = new FilteredElementCollector(doc).OfClass(typeof(Autodesk.Revit.DB.View)).ToElements();
 //获取楼层平面视图
  var aView = views.ToList().Find(s => (s as Autodesk.Revit.DB.View).ViewType == ViewType.FloorPlan) as Autodesk.Revit.DB.View;
//获取所有图元
  List<Element> allGroupList = new FilteredElementCollector(doc, aView.Id).OfClass(typeof(Group)).ToList();
                Transaction trans = new Transaction(doc, "CreateShapeElement");
                trans.Start();
                YJMindDesign.RevitExternalCommands.FunctionYF.Origin.ApiExtend.GroupExtend.GroupHide.HideOutGroup(doc, allGroupList, aView);
                trans.Commit();
public static class GroupHide
    {

        public static void HideOutGroup(Document doc, List<Element> eleList,View activeView)
        {

            foreach (Element item in eleList)
            {
                HideGroup(doc, item,activeView);
            }
        }
        private static void HideGroup(Document doc, Element ele,View activeView)
        {
            if (activeView==null)
            {
                activeView = doc.ActiveView;
            }
            if (ele is Group)
            {
                Group group = ele as Group;
                IList<ElementId> listMemIds = group.GetMemberIds();

                List<ElementId> listHideEle = new List<ElementId>();
                foreach (var item in listMemIds)
                {
                    Element eleItem = doc.GetElement(item);
                    if (eleItem.CanBeHidden(activeView))
                    {
                        listHideEle.Add(eleItem.Id);
                    }
                    else
                    {
                        if (eleItem is Group)
                        {
                            HideGroup(doc, eleItem, activeView);
                        }
                    }

                    try
                    {
                        //获取关联零件的id
                        IList<ElementId> floorPartIds = PartUtils.GetAssociatedParts(doc, eleItem.Id, true, true).ToList();
                        if (floorPartIds != null && floorPartIds.Count > 0)
                        {
                            listHideEle.AddRange(floorPartIds);
                        }
                    }
                    catch (Exception)
                    {

                        throw;
                    }

                }
                try
                {
                    activeView.HideElements(listHideEle);
                }
                catch (Exception e)
                {

                }
            }
            else
            {

                activeView.HideElements(new List<ElementId>() { ele.Id });
            }
        }

    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值