Files
OCCT/src/IMeshTools/IMeshTools_Context.hxx
mkrylova 4945e8be99 0031789: Coding Rules - remove redundant Standard_EXPORT from TKMesh
- Standard_EXPORT which were specified for inline methods were deleted.
- ALL occurrences of DEFINE_STANDARD_RTTI_INLINE were replaced by DEFINE_STANDARD_RTTIEXT in header files and IMPLEMENT_STANDARD_RTTIEXT in source files
- ALL occurrences of "inline" keyword were deleted where it didn't not cause a linkage errors
- Added source files for classes that were without them for IMPLEMENT_STANDARD_RTTIEXT
2020-10-02 16:12:49 +03:00

241 lines
6.6 KiB
C++

// Created on: 2016-04-07
// Copyright (c) 2016 OPEN CASCADE SAS
// Created by: Oleg AGASHIN
//
// This file is part of Open CASCADE Technology software library.
//
// This library is free software; you can redistribute it and/or modify it under
// the terms of the GNU Lesser General Public License version 2.1 as published
// by the Free Software Foundation, with special exception defined in the file
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
// distribution for complete text of the license and disclaimer of any warranty.
//
// Alternatively, this file may be used under the terms of Open CASCADE
// commercial license or contractual agreement.
#ifndef _IMeshTools_Context_HeaderFile
#define _IMeshTools_Context_HeaderFile
#include <IMeshData_Shape.hxx>
#include <Standard_Type.hxx>
#include <IMeshTools_ModelBuilder.hxx>
#include <IMeshData_Model.hxx>
#include <IMeshTools_Parameters.hxx>
#include <IMeshTools_ModelAlgo.hxx>
#include <Message_ProgressRange.hxx>
//! Interface class representing context of BRepMesh algorithm.
//! Intended to cache discrete model and instances of tools for
//! its processing.
class IMeshTools_Context : public IMeshData_Shape
{
public:
//! Constructor.
IMeshTools_Context()
{
}
//! Destructor.
virtual ~IMeshTools_Context()
{
}
//! Builds model using assined model builder.
//! @return True on success, False elsewhere.
virtual Standard_Boolean BuildModel ()
{
if (myModelBuilder.IsNull())
{
return Standard_False;
}
myModel = myModelBuilder->Perform(GetShape(), myParameters);
return !myModel.IsNull();
}
//! Performs discretization of model edges using assigned edge discret algorithm.
//! @return True on success, False elsewhere.
virtual Standard_Boolean DiscretizeEdges()
{
if (myModel.IsNull() || myEdgeDiscret.IsNull())
{
return Standard_False;
}
// Discretize edges of a model.
return myEdgeDiscret->Perform(myModel, myParameters, Message_ProgressRange());
}
//! Performs healing of discrete model built by DiscretizeEdges() method
//! using assigned healing algorithm.
//! @return True on success, False elsewhere.
virtual Standard_Boolean HealModel()
{
if (myModel.IsNull())
{
return Standard_False;
}
return myModelHealer.IsNull() ?
Standard_True :
myModelHealer->Perform (myModel, myParameters, Message_ProgressRange());
}
//! Performs pre-processing of discrete model using assigned algorithm.
//! Performs auxiliary actions such as cleaning shape from old triangulation.
//! @return True on success, False elsewhere.
virtual Standard_Boolean PreProcessModel()
{
if (myModel.IsNull())
{
return Standard_False;
}
return myPreProcessor.IsNull() ?
Standard_True :
myPreProcessor->Perform (myModel, myParameters, Message_ProgressRange());
}
//! Performs meshing of faces of discrete model using assigned meshing algorithm.
//! @return True on success, False elsewhere.
virtual Standard_Boolean DiscretizeFaces (const Message_ProgressRange& theRange)
{
if (myModel.IsNull() || myFaceDiscret.IsNull())
{
return Standard_False;
}
// Discretize faces of a model.
return myFaceDiscret->Perform (myModel, myParameters, theRange);
}
//! Performs post-processing of discrete model using assigned algorithm.
//! @return True on success, False elsewhere.
virtual Standard_Boolean PostProcessModel()
{
if (myModel.IsNull())
{
return Standard_False;
}
return myPostProcessor.IsNull() ?
Standard_True :
myPostProcessor->Perform(myModel, myParameters, Message_ProgressRange());
}
//! Cleans temporary context data.
virtual void Clean()
{
if (myParameters.CleanModel)
{
myModel.Nullify();
}
}
//! Gets instance of a tool to be used to build discrete model.
const Handle (IMeshTools_ModelBuilder)& GetModelBuilder () const
{
return myModelBuilder;
}
//! Sets instance of a tool to be used to build discrete model.
void SetModelBuilder (const Handle (IMeshTools_ModelBuilder)& theBuilder)
{
myModelBuilder = theBuilder;
}
//! Gets instance of a tool to be used to discretize edges of a model.
const Handle (IMeshTools_ModelAlgo)& GetEdgeDiscret () const
{
return myEdgeDiscret;
}
//! Sets instance of a tool to be used to discretize edges of a model.
void SetEdgeDiscret (const Handle (IMeshTools_ModelAlgo)& theEdgeDiscret)
{
myEdgeDiscret = theEdgeDiscret;
}
//! Gets instance of a tool to be used to heal discrete model.
const Handle(IMeshTools_ModelAlgo)& GetModelHealer() const
{
return myModelHealer;
}
//! Sets instance of a tool to be used to heal discrete model.
void SetModelHealer(const Handle(IMeshTools_ModelAlgo)& theModelHealer)
{
myModelHealer = theModelHealer;
}
//! Gets instance of pre-processing algorithm.
const Handle(IMeshTools_ModelAlgo)& GetPreProcessor() const
{
return myPreProcessor;
}
//! Sets instance of pre-processing algorithm.
void SetPreProcessor(const Handle(IMeshTools_ModelAlgo)& thePreProcessor)
{
myPreProcessor = thePreProcessor;
}
//! Gets instance of meshing algorithm.
const Handle(IMeshTools_ModelAlgo)& GetFaceDiscret() const
{
return myFaceDiscret;
}
//! Sets instance of meshing algorithm.
void SetFaceDiscret(const Handle(IMeshTools_ModelAlgo)& theFaceDiscret)
{
myFaceDiscret = theFaceDiscret;
}
//! Gets instance of post-processing algorithm.
const Handle(IMeshTools_ModelAlgo)& GetPostProcessor() const
{
return myPostProcessor;
}
//! Sets instance of post-processing algorithm.
void SetPostProcessor(const Handle(IMeshTools_ModelAlgo)& thePostProcessor)
{
myPostProcessor = thePostProcessor;
}
//! Gets parameters to be used for meshing.
const IMeshTools_Parameters& GetParameters () const
{
return myParameters;
}
//! Gets reference to parameters to be used for meshing.
IMeshTools_Parameters& ChangeParameters ()
{
return myParameters;
}
//! Returns discrete model of a shape.
const Handle (IMeshData_Model)& GetModel () const
{
return myModel;
}
DEFINE_STANDARD_RTTIEXT(IMeshTools_Context, IMeshData_Shape)
private:
Handle (IMeshTools_ModelBuilder) myModelBuilder;
Handle (IMeshData_Model) myModel;
Handle (IMeshTools_ModelAlgo) myEdgeDiscret;
Handle (IMeshTools_ModelAlgo) myModelHealer;
Handle (IMeshTools_ModelAlgo) myPreProcessor;
Handle (IMeshTools_ModelAlgo) myFaceDiscret;
Handle (IMeshTools_ModelAlgo) myPostProcessor;
IMeshTools_Parameters myParameters;
};
#endif