ProcessShape() function contents were moved to XSAlgo_AlgoProcessShape class.
enum class FixMode : char
{
FixOrNot = -1, //!< Procedure will be executed or not (depending on the situation)
- NotFix = 0, //!< Procedure will be executed
- Fix = 1 //!< Procedure will be executed anyway
+ NotFix = 0, //!< Procedure will be executed
+ Fix = 1 //!< Procedure will be executed anyway
};
- double Tolerance3d = 1.e-6;
+ double Tolerance3d = 1.e-3;
double MaxTolerance3d = 1.0;
double MinTolerance3d = 1.e-7;
FixMode FixFreeShellMode = FixMode::FixOrNot;
+TKDE
TKBRep
TKernel
TKMath
XSAlgo_AlgoContainer.cxx
XSAlgo_AlgoContainer.hxx
XSAlgo_AlgoContainer.lxx
+XSAlgo_AlgoProcessShape.cxx
+XSAlgo_AlgoProcessShape.hxx
XSAlgo_Caller.hxx
XSAlgo_ToolContainer.cxx
XSAlgo_ToolContainer.hxx
#include <TransferBRep_ShapeMapper.hxx>
#include <UnitsMethods.hxx>
#include <XSAlgo_AlgoContainer.hxx>
+#include <XSAlgo_AlgoProcessShape.hxx>
#include <XSAlgo_ToolContainer.hxx>
#include <TopExp_Explorer.hxx>
//purpose :
//=======================================================================
XSAlgo_AlgoContainer::XSAlgo_AlgoContainer()
+ : myDEHealingParamsUsage(false)
{
myTC = new XSAlgo_ToolContainer;
}
return theShape;
}
- Handle(ShapeProcess_ShapeContext) aContext = Handle(ShapeProcess_ShapeContext)::DownCast(theInfo);
- if (aContext.IsNull())
- {
- Standard_CString aRscfile = Interface_Static::CVal(thePrscfile);
- aContext = new ShapeProcess_ShapeContext(theShape, aRscfile);
- if (!aContext->ResourceManager()->IsInitialized())
- {
- // If resource file wasn't found, use static values instead
- Interface_Static::FillMap(aContext->ResourceManager()->GetMap());
- }
- aContext->SetDetalisation(theDetalisationLevel);
- }
- aContext->SetNonManifold(theNonManifold);
- theInfo = aContext;
-
- Standard_CString aSeq = Interface_Static::CVal(thePseq);
- if (!aSeq) aSeq = thePseq;
-
- // if resource file is not loaded or does not define <seq>.exec.op,
- // do default fixes
- Handle(Resource_Manager) aRsc = aContext->ResourceManager();
- TCollection_AsciiString aStr(aSeq);
- aStr += ".exec.op";
- if (!aRsc->Find(aStr.ToCString()))
- {
-#ifdef OCCT_DEBUG
- {
- static Standard_Integer aTime = 0;
- if (!aTime)
- std::cout << "Warning: XSAlgo_AlgoContainer::ProcessShape(): Sequence " << aStr.ToCString() <<
- " is not defined in " << thePrscfile << " resource; do default processing" << std::endl;
- aTime++;
- }
-#endif
- // if reading, do default ShapeFix
- if (!strncmp(thePseq, "read.", 5))
- {
- try {
- OCC_CATCH_SIGNALS
- Handle(ShapeExtend_MsgRegistrator) aMsg = new ShapeExtend_MsgRegistrator;
- Handle(ShapeFix_Shape) aSfs = ShapeAlgo::AlgoContainer()->ToolContainer()->FixShape();
- aSfs->Init(theShape);
- aSfs->SetMsgRegistrator(aMsg);
- aSfs->SetPrecision(thePrec);
- aSfs->SetMaxTolerance(theMaxTol);
- aSfs->FixFaceTool()->FixWireTool()->FixSameParameterMode() = Standard_False;
- aSfs->FixSolidTool()->CreateOpenSolidMode() = Standard_False;
- aSfs->SetContext(theReShape);
- aSfs->Perform(theProgress);
-
- TopoDS_Shape aShape = aSfs->Shape();
- if (!aShape.IsNull() && aShape != theShape)
- {
- aContext->RecordModification(aSfs->Context(), aMsg);
- aContext->SetResult(aShape);
- }
- }
- catch (Standard_Failure const& anException)
- {
-#ifdef OCCT_DEBUG
- std::cout << "Error: XSAlgo_AlgoContainer::ProcessShape(): Exception in ShapeFix::Shape" << std::endl;
- anException.Print(std::cout); std::cout << std::endl;
-#endif
- (void)anException;
- }
- return aContext->Result();
- }
- // for writing, define default sequence of DirectFaces
- else if (!strncmp(thePseq, "write.", 6))
- {
- aRsc->SetResource(aStr.ToCString(), "DirectFaces");
- }
- }
-
- // Define runtime tolerances and do Shape Processing
- aRsc->SetResource("Runtime.Tolerance", thePrec);
- aRsc->SetResource("Runtime.MaxTolerance", theMaxTol);
-
- if (!ShapeProcess::Perform(aContext, aSeq, theProgress))
- return theShape; // return original shape
-
- return aContext->Result();
+ XSAlgo_AlgoProcessShape aProcessShape;
+ aProcessShape.SetShape(theShape);
+ aProcessShape.SetPrscfile(thePrscfile);
+ aProcessShape.SetPseq(thePseq);
+ aProcessShape.SetInfo(theInfo);
+ aProcessShape.SetHealingParamsFlag(myDEHealingParamsUsage);
+ aProcessShape.SetHealingParameters(myHealingParameters);
+ aProcessShape.SetDetalisationLevel(theDetalisationLevel);
+ aProcessShape.SetNonManifold(theNonManifold);
+ aProcessShape.SetProgressRange(theProgress);
+ aProcessShape.SetPrecision(thePrec);
+ aProcessShape.SetMaxTol(theMaxTol);
+ aProcessShape.SetReShape(theReShape);
+
+ return aProcessShape.ProcessShape();
}
//=======================================================================
#include <Standard.hxx>
#include <Standard_Type.hxx>
+#include <DE_ShapeFixParameters.hxx>
#include <Message_ProgressRange.hxx>
#include <Standard_Integer.hxx>
#include <Standard_Transient.hxx>
Standard_EXPORT XSAlgo_AlgoContainer();
//! Sets ToolContainer
- void SetToolContainer (const Handle(XSAlgo_ToolContainer)& TC);
+ void SetToolContainer (const Handle(XSAlgo_ToolContainer)& TC);
+
+ //! Gets healing parameters flag
+ const bool GetHealingParameteresFlag()
+ {
+ return myDEHealingParamsUsage;
+ }
+
+ //! Sets healing parameters flag
+ //! Uses defined DE healing parameters (if true) or parameters from resource file/Static_Interface
+ void SetHealingParametersFlag(const bool theHealingParamsFlag)
+ {
+ myDEHealingParamsUsage = theHealingParamsFlag;
+ }
+
+ //! Gets healing parameters
+ const DE_ShapeFixParameters& GetHealingParameteres()
+ {
+ return myHealingParameters;
+ }
+
+ //! Sets healing parameters
+ void SetHealingParameters(const DE_ShapeFixParameters& theHealingParams)
+ {
+ myHealingParameters = theHealingParams;
+ }
//! Returns ToolContainer
- Handle(XSAlgo_ToolContainer) ToolContainer() const;
+ Handle(XSAlgo_ToolContainer) ToolContainer() const;
//! Performs actions necessary for preparing environment
//! for transfer. Empty in Open version.
private:
-
+ bool myDEHealingParamsUsage;
Handle(XSAlgo_ToolContainer) myTC;
+ DE_ShapeFixParameters myHealingParameters;
};
--- /dev/null
+// Created on: 2000-01-19
+// Created by: data exchange team
+// Copyright (c) 2000-2014 OPEN CASCADE SAS
+//
+// 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.
+
+#include <XSAlgo_AlgoProcessShape.hxx>
+
+#include <Interface_Static.hxx>
+#include <Resource_Manager.hxx>
+#include <ShapeAlgo.hxx>
+#include <ShapeAlgo_AlgoContainer.hxx>
+#include <ShapeAlgo_ToolContainer.hxx>
+#include <ShapeBuild_ReShape.hxx>
+#include <ShapeExtend_MsgRegistrator.hxx>
+#include <ShapeFix_Shape.hxx>
+#include <ShapeProcess.hxx>
+#include <ShapeProcess_ShapeContext.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(XSAlgo_AlgoProcessShape, Standard_Transient)
+
+//=======================================================================
+//function : XSAlgo_AlgoProcessShape
+//purpose :
+//=======================================================================
+XSAlgo_AlgoProcessShape::XSAlgo_AlgoProcessShape()
+ : myPrscfile(""),
+ myPseq(""),
+ myPrecision(0.001),
+ myMaxTol(1.),
+ myNonManifold(false),
+ myDetalisationLevel(TopAbs_VERTEX),
+ myDEHealingParamsUsage(false),
+ myProgressRange(Message_ProgressRange())
+{
+}
+
+//=======================================================================
+//function : ProcessShape
+//purpose :
+//=======================================================================
+TopoDS_Shape XSAlgo_AlgoProcessShape::ProcessShape()
+{
+ if (myShape.IsNull())
+ {
+ return myShape;
+ }
+
+ Standard_CString aRscfile = "";
+ Handle(ShapeProcess_ShapeContext) aContext = Handle(ShapeProcess_ShapeContext)::DownCast(myInfo);
+ if (aContext.IsNull())
+ {
+ aRscfile = Interface_Static::CVal(myPrscfile);
+ aContext = new ShapeProcess_ShapeContext(myShape, aRscfile);
+ if (myDEHealingParamsUsage)
+ {
+ // Use defined shape healing parameters
+ FillMap(aContext->ResourceManager()->GetMap());
+ }
+ else if (!aContext->ResourceManager()->IsInitialized())
+ {
+ // If resource file wasn't found, use static values instead
+ Interface_Static::FillMap(aContext->ResourceManager()->GetMap());
+ }
+ }
+ aContext->SetDetalisation(myDetalisationLevel);
+ aContext->SetNonManifold(myNonManifold);
+ myInfo = aContext;
+
+ Standard_CString aSeq = Interface_Static::CVal(myPseq);
+ if (!aSeq) aSeq = myPseq;
+
+ // if resource file is not loaded or does not define <seq>.exec.op,
+ // do default fixes
+ Handle(Resource_Manager) aRsc = aContext->ResourceManager();
+ TCollection_AsciiString aStr(aSeq);
+ aStr += ".exec.op";
+ if (strncmp(myPseq, "read.", 5) == 0)
+ {
+ aRsc->SetResource(aStr.ToCString(), "FixShape");
+ try {
+ OCC_CATCH_SIGNALS
+ Handle(ShapeExtend_MsgRegistrator) aMsg = new ShapeExtend_MsgRegistrator;
+ Handle(ShapeFix_Shape) aSfs = ShapeAlgo::AlgoContainer()->ToolContainer()->FixShape();
+ aSfs->Init(myShape);
+ aSfs->SetMsgRegistrator(aMsg);
+ aSfs->SetPrecision(myPrecision);
+ aSfs->SetMaxTolerance(myMaxTol);
+ aSfs->FixFaceTool()->FixWireTool()->FixSameParameterMode() = Standard_False;
+ if (strcmp(aRscfile, "IGES") == 0 || strcmp(aRscfile, "XT") == 0)
+ {
+ aSfs->FixSolidTool()->CreateOpenSolidMode() = Standard_True;
+ }
+ else
+ {
+ aSfs->FixSolidTool()->CreateOpenSolidMode() = Standard_False;
+ }
+ aSfs->SetContext(myReShape);
+ aSfs->Perform(myProgressRange);
+
+ TopoDS_Shape aShape = aSfs->Shape();
+ if (!aShape.IsNull() && aShape != myShape)
+ {
+ aContext->RecordModification(aSfs->Context(), aMsg);
+ aContext->SetResult(aShape);
+ }
+ }
+ catch (Standard_Failure const& anException)
+ {
+#ifdef OCCT_DEBUG
+ std::cout << "Error: XSAlgo_AlgoContainer::ProcessShape(): Exception in ShapeFix::Shape" << std::endl;
+ anException.Print(std::cout); std::cout << std::endl;
+#endif
+ (void)anException;
+ }
+ return aContext->Result();
+ }
+ else if (strncmp(myPseq, "write.", 6) == 0)
+ {
+ if (strcmp(aRscfile, "STEP") == 0)
+ {
+ aRsc->SetResource(aStr.ToCString(), "SplitCommonVertex,DirectFaces");
+ }
+ else
+ {
+ aRsc->SetResource(aStr.ToCString(), "DirectFaces");
+ }
+ }
+
+ // Define runtime tolerances and do Shape Processing
+ aRsc->SetResource("Runtime.Tolerance", myPrecision);
+ aRsc->SetResource("Runtime.MaxTolerance", myMaxTol);
+
+ if (!ShapeProcess::Perform(aContext, aSeq, myProgressRange))
+ return myShape; // return original shape
+
+ return aContext->Result();
+}
+
+//=======================================================================
+//function : FillMap
+//purpose :
+//=======================================================================
+void XSAlgo_AlgoProcessShape::FillMap(NCollection_DataMap<TCollection_AsciiString, TCollection_AsciiString>& theMap) const
+{
+ theMap.Clear();
+ theMap.Bind("Tolerance3d", TCollection_AsciiString(myHealingParameters.Tolerance3d));
+ theMap.Bind("MinTolerance3d", TCollection_AsciiString(myHealingParameters.MinTolerance3d));
+ theMap.Bind("MaxTolerance3d", TCollection_AsciiString(myHealingParameters.MaxTolerance3d));
+ theMap.Bind("FixFreeShellMode", TCollection_AsciiString(static_cast<int>(myHealingParameters.FixFreeShellMode)));
+ theMap.Bind("FixFreeFaceMode", TCollection_AsciiString(static_cast<int>(myHealingParameters.FixFreeFaceMode)));
+ theMap.Bind("FixFreeFaceMode", TCollection_AsciiString(static_cast<int>(myHealingParameters.FixFreeFaceMode)));
+ theMap.Bind("FixFreeWireMode", TCollection_AsciiString(static_cast<int>(myHealingParameters.FixFreeWireMode)));
+ theMap.Bind("FixSameParameterMode", TCollection_AsciiString(static_cast<int>(myHealingParameters.FixSameParameterMode)));
+ theMap.Bind("FixSolidMode", TCollection_AsciiString(static_cast<int>(myHealingParameters.FixSolidMode)));
+ theMap.Bind("FixShellOrientationMode", TCollection_AsciiString(static_cast<int>(myHealingParameters.FixShellOrientationMode)));
+ theMap.Bind("CreateOpenSolidMode", TCollection_AsciiString(static_cast<int>(myHealingParameters.CreateOpenSolidMode)));
+ theMap.Bind("FixShellMode", TCollection_AsciiString(static_cast<int>(myHealingParameters.FixShellMode)));
+ theMap.Bind("FixFaceOrientationMode", TCollection_AsciiString(static_cast<int>(myHealingParameters.FixFaceOrientationMode)));
+ theMap.Bind("FixFaceMode", TCollection_AsciiString(static_cast<int>(myHealingParameters.FixFaceMode)));
+ theMap.Bind("FixWireMode", TCollection_AsciiString(static_cast<int>(myHealingParameters.FixWireMode)));
+ theMap.Bind("FixOrientationMode", TCollection_AsciiString(static_cast<int>(myHealingParameters.FixOrientationMode)));
+ theMap.Bind("FixAddNaturalBoundMode", TCollection_AsciiString(static_cast<int>(myHealingParameters.FixAddNaturalBoundMode)));
+ theMap.Bind("FixMissingSeamMode", TCollection_AsciiString(static_cast<int>(myHealingParameters.FixMissingSeamMode)));
+ theMap.Bind("FixSmallAreaWireMode", TCollection_AsciiString(static_cast<int>(myHealingParameters.FixSmallAreaWireMode)));
+ theMap.Bind("RemoveSmallAreaFaceMode", TCollection_AsciiString(static_cast<int>(myHealingParameters.RemoveSmallAreaFaceMode)));
+ theMap.Bind("FixIntersectingWiresMode", TCollection_AsciiString(static_cast<int>(myHealingParameters.FixIntersectingWiresMode)));
+ theMap.Bind("FixLoopWiresMode", TCollection_AsciiString(static_cast<int>(myHealingParameters.FixLoopWiresMode)));
+ theMap.Bind("FixSplitFaceMode", TCollection_AsciiString(static_cast<int>(myHealingParameters.FixSplitFaceMode)));
+ theMap.Bind("AutoCorrectPrecisionMode", TCollection_AsciiString(static_cast<int>(myHealingParameters.AutoCorrectPrecisionMode)));
+ theMap.Bind("ModifyTopologyMode", TCollection_AsciiString(static_cast<int>(myHealingParameters.ModifyTopologyMode)));
+ theMap.Bind("ClosedWireMode", TCollection_AsciiString(static_cast<int>(myHealingParameters.ClosedWireMode)));
+ theMap.Bind("PreferencePCurveMode", TCollection_AsciiString(static_cast<int>(myHealingParameters.PreferencePCurveMode)));
+ theMap.Bind("FixReorderMode", TCollection_AsciiString(static_cast<int>(myHealingParameters.FixReorderMode)));
+ theMap.Bind("FixSmallMode", TCollection_AsciiString(static_cast<int>(myHealingParameters.FixSmallMode)));
+ theMap.Bind("FixConnectedMode", TCollection_AsciiString(static_cast<int>(myHealingParameters.FixConnectedMode)));
+ theMap.Bind("FixEdgeCurvesMode", TCollection_AsciiString(static_cast<int>(myHealingParameters.FixEdgeCurvesMode)));
+ theMap.Bind("FixDegeneratedMode", TCollection_AsciiString(static_cast<int>(myHealingParameters.FixDegeneratedMode)));
+ theMap.Bind("FixLackingMode", TCollection_AsciiString(static_cast<int>(myHealingParameters.FixLackingMode)));
+ theMap.Bind("FixSelfIntersectionMode", TCollection_AsciiString(static_cast<int>(myHealingParameters.FixSelfIntersectionMode)));
+ theMap.Bind("RemoveLoopMode", TCollection_AsciiString(static_cast<int>(myHealingParameters.RemoveLoopMode)));
+ theMap.Bind("FixReversed2dMode", TCollection_AsciiString(static_cast<int>(myHealingParameters.FixReversed2dMode)));
+ theMap.Bind("FixRemovePCurveMode", TCollection_AsciiString(static_cast<int>(myHealingParameters.FixRemovePCurveMode)));
+ theMap.Bind("FixRemoveCurve3dMode", TCollection_AsciiString(static_cast<int>(myHealingParameters.FixRemoveCurve3dMode)));
+ theMap.Bind("FixAddPCurveMode", TCollection_AsciiString(static_cast<int>(myHealingParameters.FixAddPCurveMode)));
+ theMap.Bind("FixAddCurve3dMode", TCollection_AsciiString(static_cast<int>(myHealingParameters.FixAddCurve3dMode)));
+ theMap.Bind("FixSeamMode", TCollection_AsciiString(static_cast<int>(myHealingParameters.FixSeamMode)));
+ theMap.Bind("FixShiftedMode", TCollection_AsciiString(static_cast<int>(myHealingParameters.FixShiftedMode)));
+ theMap.Bind("FixEdgeSameParameterMode", TCollection_AsciiString(static_cast<int>(myHealingParameters.FixEdgeSameParameterMode)));
+ theMap.Bind("FixNotchedEdgesMode", TCollection_AsciiString(static_cast<int>(myHealingParameters.FixNotchedEdgesMode)));
+ theMap.Bind("FixTailMode", TCollection_AsciiString(static_cast<int>(myHealingParameters.FixTailMode)));
+ theMap.Bind("MaxTailAngle", TCollection_AsciiString(static_cast<int>(myHealingParameters.MaxTailAngle)));
+ theMap.Bind("MaxTailWidth", TCollection_AsciiString(static_cast<int>(myHealingParameters.MaxTailWidth)));
+ theMap.Bind("FixSelfIntersectingEdgeMode", TCollection_AsciiString(static_cast<int>(myHealingParameters.FixSelfIntersectingEdgeMode)));
+ theMap.Bind("FixIntersectingEdgesMode", TCollection_AsciiString(static_cast<int>(myHealingParameters.FixIntersectingEdgesMode)));
+ theMap.Bind("FixNonAdjacentIntersectingEdgesMode", TCollection_AsciiString(static_cast<int>(myHealingParameters.FixNonAdjacentIntersectingEdgesMode)));
+ theMap.Bind("FixVertexPositionMode", TCollection_AsciiString(static_cast<int>(myHealingParameters.FixVertexPositionMode)));
+ theMap.Bind("FixVertexToleranceMode", TCollection_AsciiString(static_cast<int>(myHealingParameters.FixVertexToleranceMode)));
+}
--- /dev/null
+// Copyright (c) 2024 OPEN CASCADE SAS
+//
+// 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 _XSAlgo_AlgoProcessShape_HeaderFile
+#define _XSAlgo_AlgoProcessShape_HeaderFile
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+
+#include <DE_ShapeFixParameters.hxx>
+#include <Message_ProgressRange.hxx>
+#include <NCollection_DataMap.hxx>
+#include <Standard_Integer.hxx>
+#include <Standard_Transient.hxx>
+#include <TopAbs_ShapeEnum.hxx>
+#include <TopoDS_Shape.hxx>
+
+class ShapeBuild_ReShape;
+class XSAlgo_ToolContainer;
+class TopoDS_Edge;
+class TopoDS_Face;
+class Transfer_TransientProcess;
+class Transfer_FinderProcess;
+
+class XSAlgo_AlgoProcessShape;
+DEFINE_STANDARD_HANDLE(XSAlgo_AlgoProcessShape, Standard_Transient)
+
+//! Class for shape processing
+class XSAlgo_AlgoProcessShape : public Standard_Transient
+{
+
+public:
+
+ //! Empty constructor
+ Standard_EXPORT XSAlgo_AlgoProcessShape();
+
+ //! Shape processing with specified tolerances
+ Standard_EXPORT TopoDS_Shape ProcessShape();
+
+ //! Fill map from DE shape healing parameters
+ void FillMap(NCollection_DataMap<TCollection_AsciiString, TCollection_AsciiString>& theMap) const;
+
+ //! Get shape for processing
+ const TopoDS_Shape& GetShape() { return myShape; }
+
+ //! Set shape for processing
+ void SetShape(const TopoDS_Shape& theShape) { myShape = theShape; }
+
+ //! Get name of the resource file
+ const Standard_CString& GetPrscfile() { return myPrscfile; }
+
+ //! Set name of the resource file
+ void SetPrscfile(const Standard_CString& thePrscfile) { myPrscfile = thePrscfile; }
+
+ //! Get name of the sequence of operators defined in the resource file for Shape Processing
+ const Standard_CString& GetPseq() { return myPseq; }
+
+ //! Set name of the sequence of operators defined in the resource file for Shape Processing
+ void SetPseq(const Standard_CString& thePseq) { myPseq = thePseq; }
+
+ //! Get information to be recorded in the translation map
+ const Handle(Standard_Transient)& GetInfo() { return myInfo; }
+
+ //! Set information to be recorded in the translation map
+ void SetInfo(const Handle(Standard_Transient)& theInfo) { myInfo = theInfo; }
+
+ //! Get flag of healing parameters
+ const bool GetHealingParamsFlag() { return myDEHealingParamsUsage; }
+
+ //! Set flag of healing parameters
+ //! Uses defined DE healing parameters (if true) or parameters from resource file/Static_Interface
+ void SetHealingParamsFlag(const bool theHealingParamsFlag) { myDEHealingParamsUsage = theHealingParamsFlag; }
+
+ //! Get healing parameters
+ const DE_ShapeFixParameters& GetHealingParameters() { return myHealingParameters; }
+
+ //! Set healing parameters
+ void SetHealingParameters(const DE_ShapeFixParameters& theHealingParams) { myHealingParameters = theHealingParams; }
+
+ //! Get flag to proceed with non-manifold topology
+ const bool GetNonManifold() { return myNonManifold; }
+
+ //! Set flag to proceed with non-manifold topology
+ void SetNonManifold(const bool theNonManifold) { myNonManifold = theNonManifold; }
+
+ //! Get detalisation level
+ const TopAbs_ShapeEnum GetDetalisationLevel() { return myDetalisationLevel; }
+
+ //! Set detalisation level
+ void SetDetalisationLevel(const TopAbs_ShapeEnum theDetalisationLevel) { myDetalisationLevel = theDetalisationLevel; }
+
+ //! Get progress indicator
+ const Message_ProgressRange& GetProgressRange() { return myProgressRange; }
+
+ //! Set progress indicator
+ void SetProgressRange(const Message_ProgressRange& theProgressRange) { myProgressRange = theProgressRange; }
+
+ //! Get maximum allowed tolerance
+ const double GetMaxTol() { return myMaxTol; }
+
+ //! Set maximum allowed tolerance
+ void SetMaxTol(const double theMaxTol) { myMaxTol = theMaxTol; }
+
+ //! Get basic precision
+ const double GetPrecision() { return myPrecision; }
+
+ //! Set basic precision
+ void SetPrecision(const double thePrecision) { myPrecision = thePrecision; }
+
+ //! Get tool to record the modifications of input shape
+ const Handle(ShapeBuild_ReShape)& GetReShape() { return myReShape; }
+
+ //! Set tool to record the modifications of input shape
+ void SetReShape(const Handle(ShapeBuild_ReShape)& theReShape) { myReShape = theReShape; }
+
+ DEFINE_STANDARD_RTTIEXT(XSAlgo_AlgoProcessShape, Standard_Transient)
+
+private:
+
+ TopoDS_Shape myShape;
+ Standard_CString myPrscfile;
+ Standard_CString myPseq;
+ double myPrecision;
+ double myMaxTol;
+ bool myNonManifold;
+ TopAbs_ShapeEnum myDetalisationLevel;
+ bool myDEHealingParamsUsage;
+ DE_ShapeFixParameters myHealingParameters;
+ Message_ProgressRange myProgressRange;
+ Handle(Standard_Transient) myInfo;
+ Handle(ShapeBuild_ReShape) myReShape;
+
+};
+
+#endif // _XSAlgo_AlgoProcessShape_HeaderFile