File: BOPAlgo_pre.cpp

package info (click to toggle)
python-ocp 7.8.1.2-2
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 64,724 kB
  • sloc: cpp: 362,337; pascal: 33; python: 23; makefile: 4
file content (371 lines) | stat: -rw-r--r-- 27,972 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371

// pybind 11 related includes
#include <pybind11/pybind11.h>
#include <pybind11/stl.h>

namespace py = pybind11;


// Standard Handle
#include <Standard_Handle.hxx>

// user-defined inclusion per module before includes

// includes to resolve forward declarations
#include <Adaptor2d_Curve2d.hxx>
#include <Adaptor3d_Curve.hxx>
#include <Adaptor3d_Surface.hxx>
#include <Adaptor2d_Curve2d.hxx>
#include <Adaptor3d_Curve.hxx>
#include <Adaptor3d_Surface.hxx>
#include <Adaptor2d_Curve2d.hxx>
#include <Adaptor3d_Curve.hxx>
#include <Adaptor3d_Surface.hxx>
#include <Adaptor2d_Curve2d.hxx>
#include <Adaptor3d_Curve.hxx>
#include <Adaptor3d_Surface.hxx>
#include <BOPAlgo_PaveFiller.hxx>
#include <Adaptor2d_Curve2d.hxx>
#include <Adaptor3d_Curve.hxx>
#include <Adaptor3d_Surface.hxx>
#include <IntTools_Context.hxx>
#include <Adaptor2d_Curve2d.hxx>
#include <Adaptor3d_Curve.hxx>
#include <Adaptor3d_Surface.hxx>
#include <IntTools_Context.hxx>
#include <Adaptor2d_Curve2d.hxx>
#include <Adaptor3d_Curve.hxx>
#include <Adaptor3d_Surface.hxx>
#include <Adaptor2d_Curve2d.hxx>
#include <Adaptor3d_Curve.hxx>
#include <Adaptor3d_Surface.hxx>
#include <Adaptor2d_Curve2d.hxx>
#include <Adaptor3d_Curve.hxx>
#include <Adaptor3d_Surface.hxx>
#include <Adaptor2d_Curve2d.hxx>
#include <Adaptor3d_Curve.hxx>
#include <Adaptor3d_Surface.hxx>
#include <Adaptor2d_Curve2d.hxx>
#include <Adaptor3d_Curve.hxx>
#include <Adaptor3d_Surface.hxx>
#include <Adaptor2d_Curve2d.hxx>
#include <Adaptor3d_Curve.hxx>
#include <Adaptor3d_Surface.hxx>
#include <Adaptor2d_Curve2d.hxx>
#include <Adaptor3d_Curve.hxx>
#include <Adaptor3d_Surface.hxx>
#include <Adaptor2d_Curve2d.hxx>
#include <Adaptor3d_Curve.hxx>
#include <Adaptor3d_Surface.hxx>
#include <Adaptor2d_Curve2d.hxx>
#include <Adaptor3d_Curve.hxx>
#include <Adaptor3d_Surface.hxx>
#include <Adaptor2d_Curve2d.hxx>
#include <Adaptor3d_Curve.hxx>
#include <Adaptor3d_Surface.hxx>
#include <Adaptor2d_Curve2d.hxx>
#include <Adaptor3d_Curve.hxx>
#include <Adaptor3d_Surface.hxx>
#include <Adaptor2d_Curve2d.hxx>
#include <Adaptor3d_Curve.hxx>
#include <Adaptor3d_Surface.hxx>
#include <BOPAlgo_PaveFiller.hxx>
#include <Adaptor2d_Curve2d.hxx>
#include <Adaptor3d_Curve.hxx>
#include <Adaptor3d_Surface.hxx>
#include <Adaptor2d_Curve2d.hxx>
#include <Adaptor3d_Curve.hxx>
#include <Adaptor3d_Surface.hxx>
#include <Message_ProgressScope.hxx>
#include <Adaptor2d_Curve2d.hxx>
#include <Adaptor3d_Curve.hxx>
#include <Adaptor3d_Surface.hxx>
#include <BOPAlgo_ArgumentAnalyzer.hxx>
#include <Adaptor2d_Curve2d.hxx>
#include <Adaptor3d_Curve.hxx>
#include <Adaptor3d_Surface.hxx>
#include <BOPAlgo_BOP.hxx>
#include <Adaptor2d_Curve2d.hxx>
#include <Adaptor3d_Curve.hxx>
#include <Adaptor3d_Surface.hxx>
#include <BOPAlgo_Builder.hxx>
#include <Adaptor2d_Curve2d.hxx>
#include <Adaptor3d_Curve.hxx>
#include <Adaptor3d_Surface.hxx>
#include <BOPAlgo_PaveFiller.hxx>
#include <Adaptor2d_Curve2d.hxx>
#include <Adaptor3d_Curve.hxx>
#include <Adaptor3d_Surface.hxx>
#include <BOPAlgo_Section.hxx>
#include <Adaptor2d_Curve2d.hxx>
#include <Adaptor3d_Curve.hxx>
#include <Adaptor3d_Surface.hxx>
#include <BOPAlgo_WireEdgeSet.hxx>
#include <Adaptor2d_Curve2d.hxx>
#include <Adaptor3d_Curve.hxx>
#include <Adaptor3d_Surface.hxx>
#include <IntTools_Context.hxx>
#include <TopoDS_Face.hxx>
#include <Adaptor2d_Curve2d.hxx>
#include <Adaptor3d_Curve.hxx>
#include <Adaptor3d_Surface.hxx>
#include <Adaptor2d_Curve2d.hxx>
#include <Adaptor3d_Curve.hxx>
#include <Adaptor3d_Surface.hxx>
#include <BOPAlgo_PaveFiller.hxx>
#include <Adaptor2d_Curve2d.hxx>
#include <Adaptor3d_Curve.hxx>
#include <Adaptor3d_Surface.hxx>
#include <Adaptor2d_Curve2d.hxx>
#include <Adaptor3d_Curve.hxx>
#include <Adaptor3d_Surface.hxx>
#include <Adaptor2d_Curve2d.hxx>
#include <Adaptor3d_Curve.hxx>
#include <Adaptor3d_Surface.hxx>
#include <Adaptor2d_Curve2d.hxx>
#include <Adaptor3d_Curve.hxx>
#include <Adaptor3d_Surface.hxx>
#include <BOPDS_CommonBlock.hxx>
#include <IntTools_Context.hxx>
#include <Adaptor2d_Curve2d.hxx>
#include <Adaptor3d_Curve.hxx>
#include <Adaptor3d_Surface.hxx>
#include <Adaptor2d_Curve2d.hxx>
#include <Adaptor3d_Curve.hxx>
#include <Adaptor3d_Surface.hxx>
#include <Adaptor2d_Curve2d.hxx>

// module includes
#include <BOPAlgo_Alerts.hxx>
#include <BOPAlgo_Algo.hxx>
#include <BOPAlgo_ArgumentAnalyzer.hxx>
#include <BOPAlgo_BOP.hxx>
#include <BOPAlgo_Builder.hxx>
#include <BOPAlgo_BuilderArea.hxx>
#include <BOPAlgo_BuilderFace.hxx>
#include <BOPAlgo_BuilderShape.hxx>
#include <BOPAlgo_BuilderSolid.hxx>
#include <BOPAlgo_CellsBuilder.hxx>
#include <BOPAlgo_CheckerSI.hxx>
#include <BOPAlgo_CheckResult.hxx>
#include <BOPAlgo_CheckStatus.hxx>
#include <BOPAlgo_GlueEnum.hxx>
#include <BOPAlgo_ListOfCheckResult.hxx>
#include <BOPAlgo_MakeConnected.hxx>
#include <BOPAlgo_MakePeriodic.hxx>
#include <BOPAlgo_MakerVolume.hxx>
#include <BOPAlgo_Operation.hxx>
#include <BOPAlgo_Options.hxx>
#include <BOPAlgo_PArgumentAnalyzer.hxx>
#include <BOPAlgo_PaveFiller.hxx>
#include <BOPAlgo_PBOP.hxx>
#include <BOPAlgo_PBuilder.hxx>
#include <BOPAlgo_PPaveFiller.hxx>
#include <BOPAlgo_PSection.hxx>
#include <BOPAlgo_PWireEdgeSet.hxx>
#include <BOPAlgo_RemoveFeatures.hxx>
#include <BOPAlgo_Section.hxx>
#include <BOPAlgo_SectionAttribute.hxx>
#include <BOPAlgo_ShellSplitter.hxx>
#include <BOPAlgo_Splitter.hxx>
#include <BOPAlgo_Tools.hxx>
#include <BOPAlgo_ToolsProvider.hxx>
#include <BOPAlgo_WireEdgeSet.hxx>
#include <BOPAlgo_WireSplitter.hxx>

// template related includes

#include "NCollection_tmpl.hxx"

#include "NCollection_tmpl.hxx"

#include "NCollection_tmpl.hxx"


// user-defined pre
#include "OCP_specific.inc"

// user-defined inclusion per module
#include <BOPDS_Iterator.hxx>
#include <BOPDS_DS.hxx>


// Module definiiton
void register_BOPAlgo_enums(py::module &main_module) {


py::module m = main_module.def_submodule("BOPAlgo", R"#()#");

// user-defined inclusion per module in the body

// enums
    py::enum_<BOPAlgo_Operation>(m, "BOPAlgo_Operation",R"#(None)#")
        .value("BOPAlgo_COMMON",BOPAlgo_Operation::BOPAlgo_COMMON)
        .value("BOPAlgo_FUSE",BOPAlgo_Operation::BOPAlgo_FUSE)
        .value("BOPAlgo_CUT",BOPAlgo_Operation::BOPAlgo_CUT)
        .value("BOPAlgo_CUT21",BOPAlgo_Operation::BOPAlgo_CUT21)
        .value("BOPAlgo_SECTION",BOPAlgo_Operation::BOPAlgo_SECTION)
        .value("BOPAlgo_UNKNOWN",BOPAlgo_Operation::BOPAlgo_UNKNOWN).export_values();
    py::enum_<BOPAlgo_CheckStatus>(m, "BOPAlgo_CheckStatus",R"#(None)#")
        .value("BOPAlgo_CheckUnknown",BOPAlgo_CheckStatus::BOPAlgo_CheckUnknown)
        .value("BOPAlgo_BadType",BOPAlgo_CheckStatus::BOPAlgo_BadType)
        .value("BOPAlgo_SelfIntersect",BOPAlgo_CheckStatus::BOPAlgo_SelfIntersect)
        .value("BOPAlgo_TooSmallEdge",BOPAlgo_CheckStatus::BOPAlgo_TooSmallEdge)
        .value("BOPAlgo_NonRecoverableFace",BOPAlgo_CheckStatus::BOPAlgo_NonRecoverableFace)
        .value("BOPAlgo_IncompatibilityOfVertex",BOPAlgo_CheckStatus::BOPAlgo_IncompatibilityOfVertex)
        .value("BOPAlgo_IncompatibilityOfEdge",BOPAlgo_CheckStatus::BOPAlgo_IncompatibilityOfEdge)
        .value("BOPAlgo_IncompatibilityOfFace",BOPAlgo_CheckStatus::BOPAlgo_IncompatibilityOfFace)
        .value("BOPAlgo_OperationAborted",BOPAlgo_CheckStatus::BOPAlgo_OperationAborted)
        .value("BOPAlgo_GeomAbs_C0",BOPAlgo_CheckStatus::BOPAlgo_GeomAbs_C0)
        .value("BOPAlgo_InvalidCurveOnSurface",BOPAlgo_CheckStatus::BOPAlgo_InvalidCurveOnSurface)
        .value("BOPAlgo_NotValid",BOPAlgo_CheckStatus::BOPAlgo_NotValid).export_values();
    py::enum_<BOPAlgo_GlueEnum>(m, "BOPAlgo_GlueEnum",R"#(The Enumeration describes an additional option for the algorithms in the Boolean Component such as General Fuse, Boolean operations, Section, Maker Volume, Splitter and Cells Builder algorithms.)#")
        .value("BOPAlgo_GlueOff",BOPAlgo_GlueEnum::BOPAlgo_GlueOff)
        .value("BOPAlgo_GlueShift",BOPAlgo_GlueEnum::BOPAlgo_GlueShift)
        .value("BOPAlgo_GlueFull",BOPAlgo_GlueEnum::BOPAlgo_GlueFull).export_values();

//Python trampoline classes
    class Py_BOPAlgo_Algo : public BOPAlgo_Algo{
    public:
        using BOPAlgo_Algo::BOPAlgo_Algo;


        // public pure virtual
        void Perform(const Message_ProgressRange & theRange) override { PYBIND11_OVERLOAD_PURE(void,BOPAlgo_Algo,Perform,theRange) };


        // protected pure virtual


        // private pure virtual

    };
    class Py_BOPAlgo_BuilderArea : public BOPAlgo_BuilderArea{
    public:
        using BOPAlgo_BuilderArea::BOPAlgo_BuilderArea;


        // public pure virtual

        void Perform(const Message_ProgressRange & theRange) override { PYBIND11_OVERLOAD_PURE(void,BOPAlgo_Algo,Perform,theRange) };

        // protected pure virtual
        void PerformShapesToAvoid(const Message_ProgressRange & theRange) override { PYBIND11_OVERLOAD_PURE(void,BOPAlgo_BuilderArea,PerformShapesToAvoid,theRange) };
        void PerformLoops(const Message_ProgressRange & theRange) override { PYBIND11_OVERLOAD_PURE(void,BOPAlgo_BuilderArea,PerformLoops,theRange) };
        void PerformAreas(const Message_ProgressRange & theRange) override { PYBIND11_OVERLOAD_PURE(void,BOPAlgo_BuilderArea,PerformAreas,theRange) };
        void PerformInternalShapes(const Message_ProgressRange & theRange) override { PYBIND11_OVERLOAD_PURE(void,BOPAlgo_BuilderArea,PerformInternalShapes,theRange) };


        // private pure virtual

    };
    class Py_BOPAlgo_BuilderShape : public BOPAlgo_BuilderShape{
    public:
        using BOPAlgo_BuilderShape::BOPAlgo_BuilderShape;


        // public pure virtual

        void Perform(const Message_ProgressRange & theRange) override { PYBIND11_OVERLOAD_PURE(void,BOPAlgo_Algo,Perform,theRange) };

        // protected pure virtual


        // private pure virtual

    };
    class Py_BOPAlgo_ParallelAlgo : public BOPAlgo_ParallelAlgo{
    public:
        using BOPAlgo_ParallelAlgo::BOPAlgo_ParallelAlgo;


        // public pure virtual
        void Perform() override { PYBIND11_OVERLOAD_PURE(void,BOPAlgo_ParallelAlgo,Perform,) };


        // protected pure virtual


        // private pure virtual

    };

// pre-register typdefs+classes (topologically sorted)
    py::class_<BOPAlgo_CheckResult , shared_ptr<BOPAlgo_CheckResult>  >(m,"BOPAlgo_CheckResult",R"#(contains information about faulty shapes and faulty types can't be processed by Boolean Operations)#");
    py::class_<BOPAlgo_EdgeInfo , shared_ptr<BOPAlgo_EdgeInfo>  >(m,"BOPAlgo_EdgeInfo",R"#(None)#");
    py::class_<BOPAlgo_Options , shared_ptr<BOPAlgo_Options>  >(m,"BOPAlgo_Options",R"#(The class provides the following options for the algorithms in Boolean Component: - *Memory allocation tool* - tool for memory allocations; - *Error and warning reporting* - allows recording warnings and errors occurred during the operation. Error means that the algorithm has failed. - *Parallel processing mode* - provides the possibility to perform operation in parallel mode; - *Fuzzy tolerance* - additional tolerance for the operation to detect touching or coinciding cases; - *Using the Oriented Bounding Boxes* - Allows using the Oriented Bounding Boxes of the shapes for filtering the intersections.)#");
    py::class_<BOPAlgo_PISteps , shared_ptr<BOPAlgo_PISteps>  >(m,"BOPAlgo_PISteps",R"#(Class for representing the relative contribution of each step of the operation to the whole progressClass for representing the relative contribution of each step of the operation to the whole progress)#");
    py::class_<BOPAlgo_SectionAttribute , shared_ptr<BOPAlgo_SectionAttribute>  >(m,"BOPAlgo_SectionAttribute",R"#(Class is a container of the flags used by intersection algorithm)#");
    py::class_<BOPAlgo_Tools , shared_ptr<BOPAlgo_Tools>  >(m,"BOPAlgo_Tools",R"#(Provides tools used in the intersection part of Boolean operations)#");
    py::class_<BOPAlgo_WireEdgeSet , shared_ptr<BOPAlgo_WireEdgeSet>  >(m,"BOPAlgo_WireEdgeSet",R"#(None)#");
    py::class_<BOPAlgo_AlertAcquiredSelfIntersection ,opencascade::handle<BOPAlgo_AlertAcquiredSelfIntersection>  , TopoDS_AlertWithShape >(m,"BOPAlgo_AlertAcquiredSelfIntersection",R"#(Some sub-shapes of some of the argument become connected through other shapes and the argument became self-interfered)#");
    py::class_<BOPAlgo_AlertBOPNotAllowed ,opencascade::handle<BOPAlgo_AlertBOPNotAllowed>  , Message_Alert >(m,"BOPAlgo_AlertBOPNotAllowed",R"#(Boolean operation of given type is not allowed on the given inputs)#");
    py::class_<BOPAlgo_AlertBOPNotSet ,opencascade::handle<BOPAlgo_AlertBOPNotSet>  , Message_Alert >(m,"BOPAlgo_AlertBOPNotSet",R"#(The type of Boolean Operation is not set)#");
    py::class_<BOPAlgo_AlertBadPositioning ,opencascade::handle<BOPAlgo_AlertBadPositioning>  , TopoDS_AlertWithShape >(m,"BOPAlgo_AlertBadPositioning",R"#(The positioning of the shapes leads to creation of the small edges without valid range)#");
    py::class_<BOPAlgo_AlertBuilderFailed ,opencascade::handle<BOPAlgo_AlertBuilderFailed>  , Message_Alert >(m,"BOPAlgo_AlertBuilderFailed",R"#(Building of the result shape has failed)#");
    py::class_<BOPAlgo_AlertBuildingPCurveFailed ,opencascade::handle<BOPAlgo_AlertBuildingPCurveFailed>  , TopoDS_AlertWithShape >(m,"BOPAlgo_AlertBuildingPCurveFailed",R"#(Building 2D curve of edge on face has failed)#");
    py::class_<BOPAlgo_AlertEmptyShape ,opencascade::handle<BOPAlgo_AlertEmptyShape>  , TopoDS_AlertWithShape >(m,"BOPAlgo_AlertEmptyShape",R"#(Some of the arguments are empty shapes)#");
    py::class_<BOPAlgo_AlertFaceBuilderUnusedEdges ,opencascade::handle<BOPAlgo_AlertFaceBuilderUnusedEdges>  , TopoDS_AlertWithShape >(m,"BOPAlgo_AlertFaceBuilderUnusedEdges",R"#(Some of the edges passed to the Face Builder algorithm have not been classified and not used for faces creation)#");
    py::class_<BOPAlgo_AlertIntersectionFailed ,opencascade::handle<BOPAlgo_AlertIntersectionFailed>  , Message_Alert >(m,"BOPAlgo_AlertIntersectionFailed",R"#(The intersection of the arguments has failed)#");
    py::class_<BOPAlgo_AlertIntersectionOfPairOfShapesFailed ,opencascade::handle<BOPAlgo_AlertIntersectionOfPairOfShapesFailed>  , TopoDS_AlertWithShape >(m,"BOPAlgo_AlertIntersectionOfPairOfShapesFailed",R"#(Intersection of pair of shapes has failed)#");
    py::class_<BOPAlgo_AlertMultiDimensionalArguments ,opencascade::handle<BOPAlgo_AlertMultiDimensionalArguments>  , Message_Alert >(m,"BOPAlgo_AlertMultiDimensionalArguments",R"#(Multi-dimensional arguments)#");
    py::class_<BOPAlgo_AlertMultipleArguments ,opencascade::handle<BOPAlgo_AlertMultipleArguments>  , Message_Alert >(m,"BOPAlgo_AlertMultipleArguments",R"#(More than one argument is provided)#");
    py::class_<BOPAlgo_AlertNoFacesToRemove ,opencascade::handle<BOPAlgo_AlertNoFacesToRemove>  , Message_Alert >(m,"BOPAlgo_AlertNoFacesToRemove",R"#(No faces have been found for removal)#");
    py::class_<BOPAlgo_AlertNoFiller ,opencascade::handle<BOPAlgo_AlertNoFiller>  , Message_Alert >(m,"BOPAlgo_AlertNoFiller",R"#(The Pave Filler (the intersection tool) has not been created)#");
    py::class_<BOPAlgo_AlertNoPeriodicityRequired ,opencascade::handle<BOPAlgo_AlertNoPeriodicityRequired>  , Message_Alert >(m,"BOPAlgo_AlertNoPeriodicityRequired",R"#(No periodicity has been requested for the shape)#");
    py::class_<BOPAlgo_AlertNotSplittableEdge ,opencascade::handle<BOPAlgo_AlertNotSplittableEdge>  , TopoDS_AlertWithShape >(m,"BOPAlgo_AlertNotSplittableEdge",R"#(Some edges are very small and have such a small valid range, that they cannot be split)#");
    py::class_<BOPAlgo_AlertNullInputShapes ,opencascade::handle<BOPAlgo_AlertNullInputShapes>  , Message_Alert >(m,"BOPAlgo_AlertNullInputShapes",R"#(Null input shapes)#");
    py::class_<BOPAlgo_AlertPostTreatFF ,opencascade::handle<BOPAlgo_AlertPostTreatFF>  , Message_Alert >(m,"BOPAlgo_AlertPostTreatFF",R"#(Cannot connect face intersection curves)#");
    py::class_<BOPAlgo_AlertRemovalOfIBForEdgesFailed ,opencascade::handle<BOPAlgo_AlertRemovalOfIBForEdgesFailed>  , TopoDS_AlertWithShape >(m,"BOPAlgo_AlertRemovalOfIBForEdgesFailed",R"#(Removal of internal boundaries among Edges has failed)#");
    py::class_<BOPAlgo_AlertRemovalOfIBForFacesFailed ,opencascade::handle<BOPAlgo_AlertRemovalOfIBForFacesFailed>  , TopoDS_AlertWithShape >(m,"BOPAlgo_AlertRemovalOfIBForFacesFailed",R"#(Removal of internal boundaries among Faces has failed)#");
    py::class_<BOPAlgo_AlertRemovalOfIBForMDimShapes ,opencascade::handle<BOPAlgo_AlertRemovalOfIBForMDimShapes>  , TopoDS_AlertWithShape >(m,"BOPAlgo_AlertRemovalOfIBForMDimShapes",R"#(Removal of internal boundaries among the multi-dimensional shapes is not supported yet)#");
    py::class_<BOPAlgo_AlertRemovalOfIBForSolidsFailed ,opencascade::handle<BOPAlgo_AlertRemovalOfIBForSolidsFailed>  , TopoDS_AlertWithShape >(m,"BOPAlgo_AlertRemovalOfIBForSolidsFailed",R"#(Removal of internal boundaries among Solids has failed)#");
    py::class_<BOPAlgo_AlertRemoveFeaturesFailed ,opencascade::handle<BOPAlgo_AlertRemoveFeaturesFailed>  , Message_Alert >(m,"BOPAlgo_AlertRemoveFeaturesFailed",R"#(The Feature Removal algorithm has failed)#");
    py::class_<BOPAlgo_AlertSelfInterferingShape ,opencascade::handle<BOPAlgo_AlertSelfInterferingShape>  , TopoDS_AlertWithShape >(m,"BOPAlgo_AlertSelfInterferingShape",R"#(Some of the arguments are self-interfering shapes)#");
    py::class_<BOPAlgo_AlertShapeIsNotPeriodic ,opencascade::handle<BOPAlgo_AlertShapeIsNotPeriodic>  , TopoDS_AlertWithShape >(m,"BOPAlgo_AlertShapeIsNotPeriodic",R"#(The shape is not periodic)#");
    py::class_<BOPAlgo_AlertShellSplitterFailed ,opencascade::handle<BOPAlgo_AlertShellSplitterFailed>  , TopoDS_AlertWithShape >(m,"BOPAlgo_AlertShellSplitterFailed",R"#(The positioning of the shapes leads to creation of the small edges without valid range)#");
    py::class_<BOPAlgo_AlertSolidBuilderFailed ,opencascade::handle<BOPAlgo_AlertSolidBuilderFailed>  , Message_Alert >(m,"BOPAlgo_AlertSolidBuilderFailed",R"#(The BuilderSolid algorithm has failed)#");
    py::class_<BOPAlgo_AlertSolidBuilderUnusedFaces ,opencascade::handle<BOPAlgo_AlertSolidBuilderUnusedFaces>  , TopoDS_AlertWithShape >(m,"BOPAlgo_AlertSolidBuilderUnusedFaces",R"#(Some of the faces passed to the Solid Builder algorithm have not been classified and not used for solids creation)#");
    py::class_<BOPAlgo_AlertTooFewArguments ,opencascade::handle<BOPAlgo_AlertTooFewArguments>  , Message_Alert >(m,"BOPAlgo_AlertTooFewArguments",R"#(There are no enough arguments to perform the operation)#");
    py::class_<BOPAlgo_AlertTooSmallEdge ,opencascade::handle<BOPAlgo_AlertTooSmallEdge>  , TopoDS_AlertWithShape >(m,"BOPAlgo_AlertTooSmallEdge",R"#(Some edges are too small and have no valid range)#");
    py::class_<BOPAlgo_AlertUnableToGlue ,opencascade::handle<BOPAlgo_AlertUnableToGlue>  , TopoDS_AlertWithShape >(m,"BOPAlgo_AlertUnableToGlue",R"#(Unable to glue the shapes)#");
    py::class_<BOPAlgo_AlertUnableToMakeClosedEdgeOnFace ,opencascade::handle<BOPAlgo_AlertUnableToMakeClosedEdgeOnFace>  , TopoDS_AlertWithShape >(m,"BOPAlgo_AlertUnableToMakeClosedEdgeOnFace",R"#(Unable to make closed edge on face (to make a seam))#");
    py::class_<BOPAlgo_AlertUnableToMakeIdentical ,opencascade::handle<BOPAlgo_AlertUnableToMakeIdentical>  , TopoDS_AlertWithShape >(m,"BOPAlgo_AlertUnableToMakeIdentical",R"#(Unable to make the shape to look identical on opposite sides (Splitter fails))#");
    py::class_<BOPAlgo_AlertUnableToMakePeriodic ,opencascade::handle<BOPAlgo_AlertUnableToMakePeriodic>  , TopoDS_AlertWithShape >(m,"BOPAlgo_AlertUnableToMakePeriodic",R"#(Unable to make the shape periodic)#");
    py::class_<BOPAlgo_AlertUnableToOrientTheShape ,opencascade::handle<BOPAlgo_AlertUnableToOrientTheShape>  , TopoDS_AlertWithShape >(m,"BOPAlgo_AlertUnableToOrientTheShape",R"#(Unable to orient the shape correctly)#");
    py::class_<BOPAlgo_AlertUnableToRemoveTheFeature ,opencascade::handle<BOPAlgo_AlertUnableToRemoveTheFeature>  , TopoDS_AlertWithShape >(m,"BOPAlgo_AlertUnableToRemoveTheFeature",R"#(Unable to remove the feature)#");
    py::class_<BOPAlgo_AlertUnableToRepeat ,opencascade::handle<BOPAlgo_AlertUnableToRepeat>  , TopoDS_AlertWithShape >(m,"BOPAlgo_AlertUnableToRepeat",R"#(Unable to repeat the shape (Gluer fails))#");
    py::class_<BOPAlgo_AlertUnableToTrim ,opencascade::handle<BOPAlgo_AlertUnableToTrim>  , TopoDS_AlertWithShape >(m,"BOPAlgo_AlertUnableToTrim",R"#(Unable to trim the shape for making it periodic (BOP Common fails))#");
    py::class_<BOPAlgo_AlertUnknownShape ,opencascade::handle<BOPAlgo_AlertUnknownShape>  , TopoDS_AlertWithShape >(m,"BOPAlgo_AlertUnknownShape",R"#(Shape is unknown for operation)#");
    py::class_<BOPAlgo_AlertUnsupportedType ,opencascade::handle<BOPAlgo_AlertUnsupportedType>  , TopoDS_AlertWithShape >(m,"BOPAlgo_AlertUnsupportedType",R"#(Unsupported type of input shape)#");
    py::class_<BOPAlgo_AlertUserBreak ,opencascade::handle<BOPAlgo_AlertUserBreak>  , Message_Alert >(m,"BOPAlgo_AlertUserBreak",R"#(Boolean operation was stopped by user)#");
    py::class_<BOPAlgo_Algo , shared_ptr_nodelete<BOPAlgo_Algo> ,Py_BOPAlgo_Algo , BOPAlgo_Options >(m,"BOPAlgo_Algo",R"#(The class provides the root interface for the algorithms in Boolean Component.)#");
    preregister_template_NCollection_List<BOPAlgo_CheckResult>(m,"BOPAlgo_ListOfCheckResult");
    preregister_template_NCollection_List<BOPAlgo_EdgeInfo>(m,"BOPAlgo_ListOfEdgeInfo");
    py::class_<BOPAlgo_MakeConnected , shared_ptr<BOPAlgo_MakeConnected>  , BOPAlgo_Options >(m,"BOPAlgo_MakeConnected",R"#(BOPAlgo_MakeConnected is the algorithm for making the touching shapes connected or glued, i.e. for making the coinciding geometries be topologically shared among the shapes.)#");
    py::class_<BOPAlgo_MakePeriodic , shared_ptr<BOPAlgo_MakePeriodic>  , BOPAlgo_Options >(m,"BOPAlgo_MakePeriodic",R"#(BOPAlgo_MakePeriodic is the tool for making an arbitrary shape periodic in 3D space in specified directions.)#");
    py::class_<BOPAlgo_ArgumentAnalyzer , shared_ptr<BOPAlgo_ArgumentAnalyzer>  , BOPAlgo_Algo >(m,"BOPAlgo_ArgumentAnalyzer",R"#(check the validity of argument(s) for Boolean Operations)#");
    py::class_<BOPAlgo_BuilderArea , shared_ptr_nodelete<BOPAlgo_BuilderArea> ,Py_BOPAlgo_BuilderArea , BOPAlgo_Algo >(m,"BOPAlgo_BuilderArea",R"#(The root class for algorithms to build faces/solids from set of edges/faces)#");
    py::class_<BOPAlgo_BuilderShape , shared_ptr<BOPAlgo_BuilderShape> ,Py_BOPAlgo_BuilderShape , BOPAlgo_Algo >(m,"BOPAlgo_BuilderShape",R"#(Root class for algorithms that has shape as result.)#");
    preregister_template_NCollection_IndexedDataMap<TopoDS_Shape, BOPAlgo_ListOfEdgeInfo, TopTools_ShapeMapHasher>(m,"BOPAlgo_IndexedDataMapOfShapeListOfEdgeInfo");
    py::class_<BOPAlgo_ParallelAlgo , shared_ptr<BOPAlgo_ParallelAlgo> ,Py_BOPAlgo_ParallelAlgo , BOPAlgo_Algo >(m,"BOPAlgo_ParallelAlgo",R"#(Additional root class to provide interface to be launched from parallel vector. It already has the range as a field, and has to be used with caution to create scope from the range only once.)#");
    py::class_<BOPAlgo_PaveFiller , shared_ptr<BOPAlgo_PaveFiller>  , BOPAlgo_Algo >(m,"BOPAlgo_PaveFiller",R"#(The class represents the Intersection phase of the Boolean Operations algorithm. It performs the pairwise intersection of the sub-shapes of the arguments in the following order: 1. Vertex/Vertex; 2. Vertex/Edge; 3. Edge/Edge; 4. Vertex/Face; 5. Edge/Face; 6. Face/Face.)#");
    py::class_<BOPAlgo_ShellSplitter , shared_ptr<BOPAlgo_ShellSplitter>  , BOPAlgo_Algo >(m,"BOPAlgo_ShellSplitter",R"#(The class provides the splitting of the set of connected faces on separate loops)#");
    py::class_<BOPAlgo_WireSplitter , shared_ptr<BOPAlgo_WireSplitter>  , BOPAlgo_Algo >(m,"BOPAlgo_WireSplitter",R"#(The class is to build loops from the given set of edges.)#");
    py::class_<BOPAlgo_Builder , shared_ptr<BOPAlgo_Builder>  , BOPAlgo_BuilderShape >(m,"BOPAlgo_Builder",R"#(The class is a General Fuse algorithm - base algorithm for the algorithms in the Boolean Component. Its main purpose is to build the split parts of the argument shapes from which the result of the operations is combined. The result of the General Fuse algorithm itself is a compound containing all split parts of the arguments.)#");
    py::class_<BOPAlgo_BuilderFace , shared_ptr<BOPAlgo_BuilderFace>  , BOPAlgo_BuilderArea >(m,"BOPAlgo_BuilderFace",R"#(The algorithm to build new faces from the given faces and set of edges lying on this face.)#");
    py::class_<BOPAlgo_BuilderSolid , shared_ptr<BOPAlgo_BuilderSolid>  , BOPAlgo_BuilderArea >(m,"BOPAlgo_BuilderSolid",R"#(Solid Builder is the algorithm for building solids from set of faces. The given faces should be non-intersecting, i.e. all coinciding parts of the faces should be shared among them.)#");
    py::class_<BOPAlgo_CheckerSI , shared_ptr<BOPAlgo_CheckerSI>  , BOPAlgo_PaveFiller >(m,"BOPAlgo_CheckerSI",R"#(Checks the shape on self-interference.)#");
    py::class_<BOPAlgo_RemoveFeatures , shared_ptr<BOPAlgo_RemoveFeatures>  , BOPAlgo_BuilderShape >(m,"BOPAlgo_RemoveFeatures",R"#(The RemoveFeatures algorithm is intended for reconstruction of the shape by removal of the unwanted parts from it. These parts can be holes, protrusions, spikes, fillets etc. The shape itself is not modified, the new shape is built in the result.)#");
    py::class_<BOPAlgo_CellsBuilder , shared_ptr<BOPAlgo_CellsBuilder>  , BOPAlgo_Builder >(m,"BOPAlgo_CellsBuilder",R"#(The algorithm is based on the General Fuse algorithm (GFA). The result of GFA is all split parts of the Arguments.)#");
    py::class_<BOPAlgo_MakerVolume , shared_ptr<BOPAlgo_MakerVolume>  , BOPAlgo_Builder >(m,"BOPAlgo_MakerVolume",R"#(The algorithm is to build solids from set of shapes. It uses the BOPAlgo_Builder algorithm to intersect the given shapes and build the images of faces (if needed) and BOPAlgo_BuilderSolid algorithm to build the solids.)#");
    py::class_<BOPAlgo_Section , shared_ptr<BOPAlgo_Section>  , BOPAlgo_Builder >(m,"BOPAlgo_Section",R"#(The algorithm to build a Section between the arguments. The Section consists of vertices and edges. The Section contains: 1. new vertices that are subjects of V/V, E/E, E/F, F/F interferences 2. vertices that are subjects of V/E, V/F interferences 3. new edges that are subjects of F/F interferences 4. edges that are Common Blocks)#");
    py::class_<BOPAlgo_ToolsProvider , shared_ptr<BOPAlgo_ToolsProvider>  , BOPAlgo_Builder >(m,"BOPAlgo_ToolsProvider",R"#(Auxiliary class providing API to operate tool arguments.)#");
    py::class_<BOPAlgo_BOP , shared_ptr<BOPAlgo_BOP>  , BOPAlgo_ToolsProvider >(m,"BOPAlgo_BOP",R"#(The class represents the Building part of the Boolean Operations algorithm. The arguments of the algorithms are divided in two groups - *Objects* and *Tools*. The algorithm builds the splits of the given arguments using the intersection results and combines the result of Boolean Operation of given type: - *FUSE* - union of two groups of objects; - *COMMON* - intersection of two groups of objects; - *CUT* - subtraction of one group from the other.)#");
    py::class_<BOPAlgo_Splitter , shared_ptr<BOPAlgo_Splitter>  , BOPAlgo_ToolsProvider >(m,"BOPAlgo_Splitter",R"#(The **Splitter algorithm** is the algorithm for splitting a group of arbitrary shapes by the other group of arbitrary shapes. The arguments of the operation are divided on two groups: *Objects* - shapes that will be split; *Tools* - shapes by which the *Objects* will be split. The result of the operation contains only the split parts of the shapes from the group of *Objects*. The split parts of the shapes from the group of *Tools* are excluded from the result. The shapes can be split by the other shapes from the same group (in case these shapes are interfering).)#");

};

// user-defined post-inclusion per module

// user-defined post