Perform a boolean geometric operation between two solids, and return a new solid to represent the result.
Namespace:
Autodesk.Revit.DB
Assembly:
RevitAPI
(in RevitAPI.dll) Version: 16.0.0.0 (16.0.0.0)
Since:
2012
Syntax
C# |
---|
|
Visual Basic |
---|
|
Visual C++ |
---|
|
Parameters
- solid0
-
Type:
Autodesk.Revit.DB
Solid
The first solid object. A copy will be taken of the input object, so any solid whether obtained from a Revit element or not would be accepted.
- solid1
-
Type:
Autodesk.Revit.DB
Solid
The second solid object. A copy will be taken of the input object, so any solid whether obtained from a Revit element or not would be accepted.
- booleanType
-
Type:
Autodesk.Revit.DB
BooleanOperationsType
boolean operation type.
Return Value
The result geometry.Examples
Copy
C#
private void ComputeIntersectionVolume(Solid solidA, Solid solidB)
{
Solid intersection = BooleanOperationsUtils.ExecuteBooleanOperation(solidA, solidB, BooleanOperationsType.Intersect);
double volumeOfIntersection = intersection.Volume;
}
Copy
VB.NET
Private Sub ComputeIntersectionVolume(solidA As Solid, solidB As Solid)
Dim intersection As Solid = BooleanOperationsUtils.ExecuteBooleanOperation(solidA, solidB, BooleanOperationsType.Intersect)
Dim volumeOfIntersection As Double = intersection.Volume
End Sub
Exceptions
Exception | Condition |
---|---|
Autodesk.Revit.Exceptions ArgumentNullException | A non-optional argument was NULL |
Autodesk.Revit.Exceptions ArgumentOutOfRangeException | A value passed for an enumeration argument is not a member of that enumeration |
Autodesk.Revit.Exceptions InvalidOperationException | Failed to perform the Boolean operation for the two solids. This may be due to geometric inaccuracies in the solids, such as slightly misaligned faces or edges. If so, eliminating the inaccuracies by making sure the solids are accurately aligned may solve the problem. This also may be due to one or both solids having complexities such as more than two faces geometrically meeting along a single edge, or two coincident edges, etc. Eliminating such conditions, or performing a sequence of Boolean operations in an order that avoids such conditions, may solve the problem. |