3#include "MRBooleanOperation.h"
4#include "MRContoursCut.h"
39 const Mesh& operator*()
const {
return mesh; }
40 Mesh* operator->() {
return &
mesh; }
41 const Mesh* operator->()
const {
return &
mesh; }
42 operator bool()
const {
return valid(); }
62MRMESH_API BooleanResult
boolean( Mesh&& meshA, Mesh&& meshB, BooleanOperation operation,
63 const AffineXf3f* rigidB2A, BooleanResultMapper* mapper =
nullptr, ProgressCallback cb = {} );
66struct BooleanPreCutResult
69 OneMeshContours contours;
76struct BooleanParameters
79 const AffineXf3f*
rigidB2A =
nullptr;
82 BooleanResultMapper*
mapper =
nullptr;
102 ProgressCallback cb = {};
105MRMESH_API BooleanResult
boolean(
const Mesh& meshA,
const Mesh& meshB, BooleanOperation operation,
106 const BooleanParameters& params = {} );
107MRMESH_API BooleanResult
boolean( Mesh&& meshA, Mesh&& meshB, BooleanOperation operation,
108 const BooleanParameters& params = {} );
112MRMESH_API Expected<Mesh>
selfBoolean(
const Mesh& mesh );
115MRMESH_API Contours3f
findIntersectionContours(
const Mesh& meshA,
const Mesh& meshB,
const AffineXf3f* rigidB2A =
nullptr );
118struct BooleanResultPoints
120 VertBitSet meshAVerts;
121 VertBitSet meshBVerts;
122 std::vector<Vector3f> intersectionPoints;
new unsafe MR.? BooleanResultMapper mapper
new unsafe ref bool forceCut
new unsafe MR.Std.? Vector_StdVectorMREdgeId outCutEdges
new unsafe MR.? BooleanPreCutResult outPreCutA
new unsafe MR.? BooleanPreCutResult outPreCutB
new unsafe MR.? ConstBox_AffineXf3f rigidB2A
new unsafe ref bool mergeAllNonIntersectingComponents
Definition MRPrecisePredicates3.h:58
Definition MRMesh/MRMesh.h:23
static unsafe MR.Std.Vector_StdVectorMRVector3f findIntersectionContours(MR.Const_Mesh meshA, MR.Const_Mesh meshB, MR.AffineXf3f? rigidB2A=null)
static unsafe MR.Mesh selfBoolean(MR.Const_Mesh mesh)
MRMESH_API BooleanResult boolean(const Mesh &meshA, const Mesh &meshB, BooleanOperation operation, const AffineXf3f *rigidB2A, BooleanResultMapper *mapper=nullptr, ProgressCallback cb={})
Performs CSG operation on two meshes.
MRMESH_API Expected< BooleanResultPoints, std::string > getBooleanPoints(const Mesh &meshA, const Mesh &meshB, BooleanOperation operation, const AffineXf3f *rigidB2A=nullptr)
Returns the points of mesh boolean's result mesh.
Structure to map old mesh BitSets to new.
Structure contain boolean result.
Mesh mesh
Result mesh of boolean operation, if error occurred it would be empty.
Definition MRMesh/MRMeshBoolean.h:29
bool valid() const
Returns true if boolean succeed, false otherwise.
Definition MRMesh/MRMeshBoolean.h:37
FaceBitSet meshBBadContourFaces
If input contours have intersections, this face bit set presents faces of mesh B on which contours in...
Definition MRMesh/MRMeshBoolean.h:33
std::string errorString
Holds error message, empty if boolean succeed.
Definition MRMesh/MRMeshBoolean.h:35
FaceBitSet meshABadContourFaces
If input contours have intersections, this face bit set presents faces of mesh A on which contours in...
Definition MRMesh/MRMeshBoolean.h:31