0025113: Mesh - Progress indication and user break functionality for BRepMesh component
[occt.git] / src / IMeshTools / IMeshTools_MeshBuilder.hxx
1 // Created on: 2016-04-07
2 // Copyright (c) 2016 OPEN CASCADE SAS
3 // Created by: Oleg AGASHIN
4 //
5 // This file is part of Open CASCADE Technology software library.
6 //
7 // This library is free software; you can redistribute it and/or modify it under
8 // the terms of the GNU Lesser General Public License version 2.1 as published
9 // by the Free Software Foundation, with special exception defined in the file
10 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
11 // distribution for complete text of the license and disclaimer of any warranty.
12 //
13 // Alternatively, this file may be used under the terms of Open CASCADE
14 // commercial license or contractual agreement.
15
16 #ifndef _IMeshTools_MeshBuilder_HeaderFile
17 #define _IMeshTools_MeshBuilder_HeaderFile
18
19 #include <Message_Algorithm.hxx>
20 #include <IMeshTools_Context.hxx>
21 #include <Standard_Type.hxx>
22 #include <Message_ProgressRange.hxx>
23
24 //! Builds mesh for each face of shape without triangulation.
25 //! In case if some faces of shape have already been triangulated
26 //! checks deflection of existing polygonal model and re-uses it
27 //! if deflection satisfies the specified parameter. Otherwise
28 //! nullifies existing triangulation and build triangulation anew.
29 //!
30 //! The following statuses are used:
31 //! Message_Done1 - algorithm has finished without errors.
32 //! Message_Fail1 - invalid context.
33 //! Message_Fail2 - algorithm has faced unexpected error.
34 //! Message_Fail3 - fail to discretize edges.
35 //! Message_Fail4 - can't heal discrete model.
36 //! Message_Fail5 - fail to pre-process model.
37 //! Message_Fail6 - fail to discretize faces.
38 //! Message_Fail7 - fail to post-process model.
39 //! Message_Warn1 - shape contains no objects to mesh.
40 class IMeshTools_MeshBuilder : public Message_Algorithm
41 {
42 public:
43
44   //! Constructor.
45   Standard_EXPORT IMeshTools_MeshBuilder();
46
47   //! Constructor.
48   Standard_EXPORT IMeshTools_MeshBuilder (const Handle (IMeshTools_Context)& theContext);
49   
50   //! Destructor.
51   Standard_EXPORT virtual ~IMeshTools_MeshBuilder();
52
53   //! Sets context for algorithm.
54   inline void SetContext (const Handle (IMeshTools_Context)& theContext)
55   {
56     myContext = theContext;
57   }
58
59   //! Gets context of algorithm.
60   inline const Handle (IMeshTools_Context)& GetContext () const
61   {
62     return myContext;
63   }
64
65   //! Performs meshing ot the shape using current context.
66   Standard_EXPORT virtual void Perform (const Message_ProgressRange& theRange);
67
68   DEFINE_STANDARD_RTTI_INLINE(IMeshTools_MeshBuilder, Message_Algorithm)
69
70 private:
71
72   Handle (IMeshTools_Context) myContext;
73 };
74
75 #endif