MeshLib C++ Docs
Loading...
Searching...
No Matches
MRMeshBoolean.h
Go to the documentation of this file.
1#pragma once
2
4#include "MRContoursCut.h"
5#include "MRMesh.h"
6#include "MRBitSet.h"
7#include "MRExpected.h"
8#include <string>
9
10namespace MR
11{
12
18
21
29{
37 std::string errorString;
39 bool valid() const { return errorString.empty(); }
40 Mesh& operator*() { return mesh; }
41 const Mesh& operator*() const { return mesh; }
42 Mesh* operator->() { return &mesh; }
43 const Mesh* operator->() const { return &mesh; }
44 operator bool()const { return valid(); }
45};
46
62MRMESH_API BooleanResult boolean( const Mesh& meshA, const Mesh& meshB, BooleanOperation operation,
63 const AffineXf3f* rigidB2A, BooleanResultMapper* mapper = nullptr, ProgressCallback cb = {} );
65 const AffineXf3f* rigidB2A, BooleanResultMapper* mapper = nullptr, ProgressCallback cb = {} );
66
67
73
79{
81 const AffineXf3f* rigidB2A = nullptr;
82
85
88
91
93 std::vector<EdgeLoop>* outCutEdges = nullptr;
94
98
102 bool forceCut = false;
103
105};
106
107MRMESH_API BooleanResult boolean( const Mesh& meshA, const Mesh& meshB, BooleanOperation operation,
108 const BooleanParameters& params = {} );
110 const BooleanParameters& params = {} );
111
115
117MRMESH_API Contours3f findIntersectionContours( const Mesh& meshA, const Mesh& meshB, const AffineXf3f* rigidB2A = nullptr );
118
121{
122 VertBitSet meshAVerts;
123 VertBitSet meshBVerts;
124 std::vector<Vector3f> intersectionPoints;
125};
126
138 const AffineXf3f* rigidB2A = nullptr );
139
140
146
148
149}
#define MRMESH_API
Definition MRMeshFwd.h:80
std::function< bool(float)> ProgressCallback
Definition MRMeshFwd.h:753
Contours3f findIntersectionContours(const Mesh &meshA, const Mesh &meshB, const AffineXf3f *rigidB2A=nullptr)
returns intersection contours of given meshes
BooleanResult boolean(const Mesh &meshA, const Mesh &meshB, BooleanOperation operation, const AffineXf3f *rigidB2A, BooleanResultMapper *mapper=nullptr, ProgressCallback cb={})
Performs CSG operation on two meshes.
Expected< Mesh > selfBoolean(const Mesh &mesh)
BooleanOperation
Definition MRBooleanOperation.h:20
std::vector< OneMeshContour > OneMeshContours
Special data type for MR::cutMesh.
Definition MRIntersectionContour.h:13
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.
void convertIntFloatAllVerts(Mesh &mesh, const CoordinateConverters &conv)
Contours3< float > Contours3f
Definition MRMeshFwd.h:390
tl::expected< T, E > Expected
Definition MRExpected.h:31
only for bindings generation
Definition MRCameraOrientationPlugin.h:8
Definition MRMeshBoolean.h:79
BooleanPreCutResult * outPreCutB
Optional precut output of meshB, if present - does not perform boolean and just return them.
Definition MRMeshBoolean.h:90
ProgressCallback cb
Definition MRMeshBoolean.h:104
bool forceCut
Definition MRMeshBoolean.h:102
bool mergeAllNonIntersectingComponents
Definition MRMeshBoolean.h:97
std::vector< EdgeLoop > * outCutEdges
Optional output cut edges of booleaned meshes.
Definition MRMeshBoolean.h:93
const AffineXf3f * rigidB2A
Transform from mesh B space to mesh A space.
Definition MRMeshBoolean.h:81
BooleanResultMapper * mapper
Optional output structure to map mesh A and mesh B topology to result mesh topology.
Definition MRMeshBoolean.h:84
BooleanPreCutResult * outPreCutA
Optional precut output of meshA, if present - does not perform boolean and just return them.
Definition MRMeshBoolean.h:87
Definition MRMeshBoolean.h:69
Mesh mesh
Definition MRMeshBoolean.h:70
OneMeshContours contours
Definition MRMeshBoolean.h:71
Structure to map old mesh BitSets to new.
Definition MRBooleanOperation.h:57
vertices and points representing mesh intersection result
Definition MRMeshBoolean.h:121
VertBitSet meshBVerts
Definition MRMeshBoolean.h:123
VertBitSet meshAVerts
Definition MRMeshBoolean.h:122
std::vector< Vector3f > intersectionPoints
Definition MRMeshBoolean.h:124
Structure contain boolean result.
Definition MRMeshBoolean.h:29
Mesh mesh
Result mesh of boolean operation, if error occurred it would be empty.
Definition MRMeshBoolean.h:31
bool valid() const
Returns true if boolean succeed, false otherwise.
Definition MRMeshBoolean.h:39
FaceBitSet meshBBadContourFaces
If input contours have intersections, this face bit set presents faces of mesh B on which contours in...
Definition MRMeshBoolean.h:35
std::string errorString
Holds error message, empty if boolean succeed.
Definition MRMeshBoolean.h:37
FaceBitSet meshABadContourFaces
If input contours have intersections, this face bit set presents faces of mesh A on which contours in...
Definition MRMeshBoolean.h:33
Mesh * operator->()
Definition MRMeshBoolean.h:42
Mesh & operator*()
Definition MRMeshBoolean.h:40
const Mesh & operator*() const
Definition MRMeshBoolean.h:41
const Mesh * operator->() const
Definition MRMeshBoolean.h:43
this struct contains coordinate converters float-int-float
Definition MRPrecisePredicates3.h:61
Definition MRMesh.h:23