解决思路:
Revit API没有直接提供接口读取墙的轮廓线。读取这个数据可以通过读取墙的几何信息(Geometry属性)获得代表这个墙的Solid,然后从这个solid中遍历solid中的所以后面找到墙的侧面(应该有两个),(判断依据是根据侧面的法向量与Wall.Orientation 向量平行) 这个方法从Revit2012(不含2012)之前的版本可以用。
在Revit2012中提供了一个更直接的方法来获取墙,板,屋顶的侧面和上,下表面。传入目标对象即可返回其指定的面。
返回侧面后,如果墙上有门窗洞口等,那么在这个侧面中会有多个EdgeArray, 找到外包的这个EdgeArray。它可以代表墙的轮廓线。如果需要获得基于墙中心的轮廓线,平移下这个EdgeArray即可。
难点分析:
这个思路的难点在于如何从多个EdgeArray中找到最大的那个外包EdgeArray,这是一个纯几何问题,网上这类代码和算法应该不少。
这里推荐一个简单方法。分别找出这些EdgeArray对象中的最长的Edge,然后比较那个具有最长Edge的EdgeArray,它就是最外面的那个EdgeArray
叶雄进
转载本文请说明出处:http://blog.csdn.net/joexiongjin/article/details/7275096
欢迎光临 EaBIM (https://eabim.net/) | Powered by Discuz! X3.2 |