Revit二次开发知识分享(九)判断墙与墙是否相连

在运用的时候,会遇到想找收集相链接的墙,用API提供的方法的话,总是会出错。会漏掉一些自己需要的墙,因此,下面封装了一个可以计算墙的是否连接的方法,先上代码后讲解Just Do It!!!
Revit二次开发知识分享(九)判断墙与墙是否相连

        public bool IsConnected(Wall judgeWall, Wall proWall)
{
bool result = false;
Line judgeLocationLine = ((judgeWall.Location as LocationCurve).Curve as Line).SetZ();
Line proLocationLine = ((proWall.Location as LocationCurve).Curve as Line).SetZ();
//只对平行的处理
if (!judgeLocationLine.Direction.IsParallel(proLocationLine.Direction)) return result;
var judgeGeo = judgeWall.get_Geometry(new Options());
Face jugeDownFace = GeoEx.GetGeoEleDownFace(judgeGeo);
var proGeo = proWall.get_Geometry(new Options());
Face proDownFace = GeoEx.GetGeoEleDownFace(proGeo);
List<Solid> solidList = new List<Solid>();
//收集几何体
double judgeSolidSurfaceArea = 0;
double prosolidSurfaceArea = 0;
List<Solid> judgeSolids = GeoEx.GetSolids(judgeGeo);
List<Solid> proSolids = GeoEx.GetSolids(proGeo);
foreach (var judgeSolid in judgeSolids)
{
judgeSolidSurfaceArea += judgeSolid.SurfaceArea;
solidList.Add(judgeSolid);
}
foreach (var proSolid in proSolids)
{
prosolidSurfaceArea += proSolid.SurfaceArea;
solidList.Add(proSolid);
}
Solid fuseSolid = SolidBatchBoolean(solidList,BooleanOperationsType.Union);
if (judgeSolidSurfaceArea + prosolidSurfaceArea - fuseSolid.SurfaceArea > 0)
{
result = true;
}
return result;
}

 public Solid SolidBatchBoolean(List<Solid> solids, BooleanOperationsType booleanOperationsType)
{
Solid firstSolid = solids[0];
solids.RemoveAt(0);
//对所有的几何体进行融合
foreach (var oneSoild in solids)
{
try
{
firstSolid = GeoEx.SolidBooleanOperation(firstSolid, oneSoild, booleanOperationsType);
}
catch
{

}

}
return firstSolid;
}

案例中是只对当前状况下
思路:
取两个墙的Solid,进行布尔运算的并集运算,然后计算新的solid的表面积,最后对表面积进行数值上的比较。如果表面积大于两个solid的话说明是相连接的。
这次分享就这些了,关注我,日常更新小技巧

原创:https://www.panoramacn.com
源码网提供WordPress源码,帝国CMS源码discuz源码,微信小程序,小说源码,杰奇源码,thinkphp源码,ecshop模板源码,微擎模板源码,dede源码,织梦源码等。

专业搭建小说网站,小说程序,杰奇系列,微信小说系列,app系列小说

Revit二次开发知识分享(九)判断墙与墙是否相连

免责声明,若由于商用引起版权纠纷,一切责任均由使用者承担。

您必须遵守我们的协议,如果您下载了该资源行为将被视为对《免责声明》全部内容的认可-> 联系客服 投诉资源
www.panoramacn.com资源全部来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。 敬请谅解! 侵权删帖/违法举报/投稿等事物联系邮箱:2640602276@qq.com
未经允许不得转载:书荒源码源码网每日更新网站源码模板! » Revit二次开发知识分享(九)判断墙与墙是否相连
关注我们小说电影免费看
关注我们,获取更多的全网素材资源,有趣有料!
120000+人已关注
分享到:
赞(0) 打赏

评论抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

您的打赏就是我分享的动力!

支付宝扫一扫打赏

微信扫一扫打赏