Revit API通过相交过滤器找到与风管相交的对象。_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > Revit API通过相交过滤器找到与风管相交的对象。

Revit API通过相交过滤器找到与风管相交的对象。

 2013/11/6 11:38:58  大气象  博客园  我要评论(0)
  • 摘要:相交过滤器的应用,比几何相交法简便。Excluding剔除//找到与风管相交的对象,通过相交过滤器。[TransactionAttribute(Autodesk.Revit.Attributes.TransactionMode.Manual)]publicclassFindIntersectWallsByElement:IExternalCommand{publicResultExecute(ExternalCommandDatacommandData,refstringmessages
  • 标签:API
相交过滤器的应用,比几何相交法简便。Excluding剔除//找到与风管相交的对象,通过相交过滤器。
[TransactionAttribute(Autodesk.Revit.Attributes.TransactionMode.Manual)]
public class FindIntersectWallsByElement : IExternalCommand
{
    public Result Execute(ExternalCommandData commandData, ref string messages, ElementSet elements)
    {
        UIApplication app = commandData.Application;
        Document doc = app.ActiveUIDocument.Document;
        Transaction trans = new Transaction(doc, "ExComm");
        trans.Start();

        //pick the duct
        Selection sel = app.ActiveUIDocument.Selection;
        Reference ref1 = sel.PickObject(ObjectType.Element, "Please pick a duct");
        Element duct = doc.GetElement(ref1);

        FilteredElementCollector collector = new FilteredElementCollector(doc);
        //相交过滤器
        ElementIntersectsElementFilter elementFilter = new ElementIntersectsElementFilter(duct, false);
        collector.WherePasses(elementFilter);

        List<ElementId> excludes = new List<ElementId>();
        excludes.Add(duct.Id);
        collector.Excluding(excludes);//剔除自身

        sel.Elements.Clear();

        //Add these interseting element to the selection
        foreach (Element elem in collector)
        {
            sel.Elements.Add(elem);
        }

        trans.Commit();
        return Result.Succeeded;
    }
}url:http://greatverve.cnblogs.com/p/ElementIntersectsElementFilter.html
发表评论
用户名: 匿名