思路:利用几何过滤器(Solid Filter)
注意事项:如何建立一个有效的几何实体 Solid;
方法:平移墙的中心线,获得墙的底面边界线,这个过程可以适当扩大一下底面边界区域,用于求共面相交的墙;获得墙的底面轮廓后,再根据墙的高度拉伸一个几何实体;
难点:确定弧线的拉伸方向;即:如何准确的延长中心线而不是缩短;
缺陷:不能处理连接但是不穿过墙的相交情况,如下图的红框所示:
弥补缺陷的方法:JoinGeometryUtils.GetJoinedElements(doc, wall).ToList();
该方法可以弥补上述缺陷,但是会重复识别连接穿过的相交(绿框的情况);需要自己查重排除两者的识别结果。
总体识别效果如下图: