Revit二次开发-合并多个实体
很久没发博客了,这篇博客记录一下一个比较实用的方法,传入多个实体进行合并,返回合并过后的实体
下面是代码:
/// <summary>
/// 将多个solid合并成一个solid
/// </summary>
/// <param name="solids"></param>
/// <returns></returns>
private static Solid SolidByUnion(List<Solid> solids)
{
Solid result;
if (solids.Count > 2)
{
Solid solid1 = solids[0];
solids.RemoveAt(0);
Solid solid2 = SolidByUnion(solids);
var intersect = BooleanOperationsUtils.ExecuteBooleanOperation(solid1, solid2, BooleanOperationsType.Intersect);
if (intersect.Volume > 0)
{
var difference = BooleanOperationsUtils.ExecuteBooleanOperation(solid1, intersect, BooleanOperationsType.Difference);
result = BooleanOperationsUtils.ExecuteBooleanOperation(difference, solid2, BooleanOperationsType.Union);
}
else
{
result = BooleanOperationsUtils.ExecuteBooleanOperation(solid1, solid2, BooleanOperationsType.Union);
}
return result;
}
else
{
Solid solid1 = solids[0];
Solid solid2 = solids[1];
var intersect = BooleanOperationsUtils.ExecuteBooleanOperation(solid1, solid2, BooleanOperationsType.Intersect);
if (intersect.Volume > 0)
{
var difference = BooleanOperationsUtils.ExecuteBooleanOperation(solid1, intersect, BooleanOperationsType.Difference);
result = BooleanOperationsUtils.ExecuteBooleanOperation(difference, solid2, BooleanOperationsType.Union);
}
else
{
result = BooleanOperationsUtils.ExecuteBooleanOperation(solid1, solid2, BooleanOperationsType.Union);
}
return result;
}
}