3.冲突检查

//冲突检查

namespace revit_text

{

    [TransactionAttribute(TransactionMode.Manual)]

    [RegenerationAttribute(RegenerationOption.Manual)]

    class collision : IExternalCommand

    {

        public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)

        {

            UIDocument uiDoc = commandData.Application.ActiveUIDocument;

            Document doc = uiDoc.Document;

            //Transaction 事务

            Transaction trans = new Transaction(doc,"ExComm");

            trans.Start();

 

            //元素选择

            Selection select = uiDoc.Selection;

            //PickObject 提示用户在显示自定义状态提示字符串时选择一个对象。

            Reference r = select.PickObject(ObjectType.Element,"请选择要检查的墙");

            Element column = doc.GetElement(r);

            FilteredElementCollector collect = new FilteredElementCollector(doc);

 

            //ElementIntersectFilter冲突检查 ;寻找与给定元素的立体几何相交的元素的过滤器。

            ElementIntersectsElementFilter iFilter = new ElementIntersectsElementFilter(column, false);

            collect.WherePasses(iFilter);

            List<ElementId> excludes = new List<ElementId>();

            excludes.Add(column.Id);

            collect.Excluding(excludes);

            List<ElementId> ids = new List<ElementId>();

            select.SetElementIds(ids);

 

            foreach (Element elem in collect) {

                ids.Add(elem.Id);

            }

            select.SetElementIds(ids);

            trans.Commit();

 

            return Result.Succeeded;

        }

    }

}

猜你喜欢

转载自blog.csdn.net/qq_25909453/article/details/81517471
3.