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

来源:互联网 发布:恶搞拍照软件 编辑:程序博客网 时间:2024/04/29 12:45


问题:如何通过柱子找到他连接的所有墙?


柱子和墙之间的关系无法直接通过API来获得,只能通过相交过滤间接来获得。

你可以直接用 ElementIntersectsElementFilter 或ElementIntersectsSolidFilter 这两个过滤条件类来实现。


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


ElementIntersectsSolidFilter需要你给定一个Solid,然后就会找到与指定Solid相交的其他构件。

示例代码如下:

// Find intersections between family instances and a selected elementReference 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 matchesTaskDialog.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

0 0
原创粉丝点击