您的位置:首页 > 其它

Revit中如何通过柱子找到他连接的所有墙?

2014-11-13 22:42 323 查看
问题:如何通过柱子找到他连接的所有墙?

柱子和墙之间的关系无法直接通过API来获得,只能通过相交过滤间接来获得。
你可以直接用 ElementIntersectsElementFilter 或ElementIntersectsSolidFilter 这两个过滤条件类来实现。

这两个类的用法请参考RevitAPI.chm文档。

ElementIntersectsSolidFilter需要你给定一个Solid,然后就会找到与指定Solid相交的其他构件。
示例代码如下:

// Find intersections between family instances and a selected element
Reference reference = uidoc.Selection.PickObject(ObjectType.Element, "Select element that will be checked for intersection with all family instances");
Element element = doc.GetElement(reference);
GeometryElement geomElement = element.get_Geometry(new Options());
Solid solid = null;
foreach (GeometryObject geomObj in geomElement)
{
    solid = geomObj as Solid;
    if (solid != null) break;
}

FilteredElementCollector collector = new FilteredElementCollector(doc);
collector.OfClass(typeof(FamilyInstance));
collector.WherePasses(new ElementIntersectsSolidFilter(solid)); // Apply intersection filter to find matches

TaskDialog.Show("Revit", collector.Count() + " family instances intersect with the selected element (" + element.Category.Name + " id:" + element.Id + ")");


如此类推,你可以获取柱子的Solid,传给ElementIntersectsSolidFilter的实例来获取与柱子相交的构件,过滤出墙即可。

作者:叶雄进, Autodesk特聘二次开发咨询专家, 橄榄山软件首席研发
转载请注明原文出处:http://blog.csdn.net/joexiongjin/article/details/41090861
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: