+// Copyright (C) 2014-20xx CEA/DEN, EDF R&D
+
// File: GeomAlgoAPI_DFLoader.cpp
// Created: 23 October 2014
// Author: Sergey Zaritchny
//function : refineResult
//purpose :
//=======================================================================
-const TopoDS_Shape GeomAlgoAPI_DFLoader::refineResult(const TopoDS_Shape& theResult)
-{
- TopoDS_Shape aResult;
- if (theResult.ShapeType() == TopAbs_COMPOUND) {
- Standard_Integer nbSubResults = 0;
- TopoDS_Iterator itr(theResult);
- for (; itr.More(); itr.Next()) nbSubResults++;
- if (nbSubResults == 1) {
- itr.Initialize(theResult);
- if (itr.More()) aResult = itr.Value();
- }
- }
- return aResult;
-}
-/*
-//=======================================================================
-//function : loadDeletedShapes
-//purpose : load deleted shapes in DF
-//=======================================================================
-void GeomAlgoAPI_DFLoader::loadDeletedShapes (BRepBuilderAPI_MakeShape& theMS,
- const TopoDS_Shape& theShapeIn,
- const TopAbs_ShapeEnum theKindOfShape,
- TNaming_Builder& theBuilder)
+const TopoDS_Shape GeomAlgoAPI_DFLoader::refineResult(const TopoDS_Shape& theResult)
{
- TopTools_MapOfShape aView;
- TopExp_Explorer ShapeExplorer (theShapeIn, theKindOfShape);
- for (; ShapeExplorer.More(); ShapeExplorer.Next ()) {
- const TopoDS_Shape& aRoot = ShapeExplorer.Current ();
- if (!aView.Add(aRoot)) continue;
- if (theMS.IsDeleted (aRoot)) {
- theBuilder.Delete (aRoot);
+ TopoDS_Shape aResult = theResult;
+ const TopAbs_ShapeEnum aShType = theResult.ShapeType();
+ if(aShType == TopAbs_COMPOUND || aShType == TopAbs_SHELL || aShType == TopAbs_WIRE) {
+ Standard_Integer aSubResultsNb = 0;
+ TopoDS_Iterator anIt(theResult);
+ for(; anIt.More(); anIt.Next()) {
+ ++aSubResultsNb;
}
- }
-}
-
-//=======================================================================
-//function : loadAndOrientModifiedShapes
-//purpose : load modified shapes in DF with preliminary orientation adjustment
-//=======================================================================
-void GeomAlgoAPI_DFLoader::loadAndOrientModifiedShapes (BRepBuilderAPI_MakeShape& theMS,
- const TopoDS_Shape& theShapeIn,
- const TopAbs_ShapeEnum theKindOfShape,
- TNaming_Builder& theBuilder,
- const TopTools_DataMapOfShapeShape& theSubShapes)
-{
- TopTools_MapOfShape aView;
- TopExp_Explorer aShapeExplorer (theShapeIn, theKindOfShape);
- for (; aShapeExplorer.More(); aShapeExplorer.Next ()) {
- const TopoDS_Shape& aRoot = aShapeExplorer.Current ();
- if (!aView.Add(aRoot)) continue;
- const TopTools_ListOfShape& aShapes = theMS.Modified (aRoot);
- TopTools_ListIteratorOfListOfShape aShapesIterator (aShapes);
- for (;aShapesIterator.More (); aShapesIterator.Next ()) {
- TopoDS_Shape aNewShape = aShapesIterator.Value ();
- if (theSubShapes.IsBound(aNewShape)) {
- aNewShape.Orientation((theSubShapes(aNewShape)).Orientation());
+ if(aSubResultsNb == 1) {
+ anIt.Initialize(theResult);
+ if(anIt.More()) {
+ aResult = anIt.Value();
}
- if (!aRoot.IsSame (aNewShape)) theBuilder.Modify (aRoot, aNewShape );
}
}
-}
-
-//=======================================================================
-//function : loadAndOrientGeneratedShapes
-//purpose : load generated shapes in DF with preliminary orientation adjustment
-//=======================================================================
-void GeomAlgoAPI_DFLoader::loadAndOrientGeneratedShapes (BRepBuilderAPI_MakeShape& theMS,
- const TopoDS_Shape& theShapeIn,
- const TopAbs_ShapeEnum theKindOfShape,
- TNaming_Builder& theBuilder,
- const TopTools_DataMapOfShapeShape& theSubShapes)
-{
- TopTools_MapOfShape aView;
- TopExp_Explorer aShapeExplorer (theShapeIn, theKindOfShape);
- for (; aShapeExplorer.More(); aShapeExplorer.Next ()) {
- const TopoDS_Shape& aRoot = aShapeExplorer.Current ();
- if (!aView.Add(aRoot)) continue;
- const TopTools_ListOfShape& aShapes = theMS.Generated (aRoot);
- TopTools_ListIteratorOfListOfShape aShapesIterator (aShapes);
- for (;aShapesIterator.More (); aShapesIterator.Next ()) {
- TopoDS_Shape aNewShape = aShapesIterator.Value ();
- if (theSubShapes.IsBound(aNewShape)) {
- aNewShape.Orientation((theSubShapes(aNewShape)).Orientation());
- }
- if (!aRoot.IsSame (aNewShape)) theBuilder.Generated (aRoot,aNewShape );
- }
- }
+ return aResult;
}
-*/
\ No newline at end of file