#include "HYDROData_Document.h"
#include "HYDROData_ShapesGroup.h"
#include "HYDROData_PolylineXY.h"
-#include "HYDROData_Tool.h"
+#include "HYDROData_ShapesTool.h"
#include <BRepBuilderAPI_MakeFace.hxx>
TopoDS_Shape HYDROData_ImmersibleZone::generateTopShape() const
{
- TopoDS_Shape aResShape = TopoDS_Face();
+ return generateTopShape( GetPolyline() );
+}
+
+TopoDS_Shape HYDROData_ImmersibleZone::generateTopShape( const Handle(HYDROData_PolylineXY)& aPolyline )
+{
+ TopoDS_Face aResultFace = TopoDS_Face();
- Handle(HYDROData_PolylineXY) aPolyline = GetPolyline();
if( !aPolyline.IsNull() )
{
TopoDS_Shape aPolylineShape = aPolyline->GetShape();
}
}
if(aWiresList.IsEmpty())
- return aResShape;
+ return aResultFace;
+
BRepAlgo_FaceRestrictor aFR;
TopoDS_Face aRefFace;
TopoDS_Shape aS = aWiresList.First();
aRefFace = aMakeFace.Face();
}
if(aRefFace.IsNull())
- return aResShape;
+ return aResultFace;
+
aFR.Init(aRefFace,Standard_False, Standard_True);
TopTools_ListIteratorOfListOfShape anIt( aWiresList );
for ( ; anIt.More(); anIt.Next() ) {
}
aFR.Perform();
if (aFR.IsDone()) {
- TopoDS_Compound aResult;
- BRep_Builder aBB;
- aBB.MakeCompound(aResult);
for (; aFR.More(); aFR.Next()) {
- const TopoDS_Face& aFF = aFR.Current();
- aBB.Add(aResult,aFF);
- }
- BRepCheck_Analyzer aChecker(aResult);
- if(aChecker.IsValid())
- aResShape = aResult;
-#ifdef HYDRODATA_IMZONE_DEB
- else {
- aResShape = aResult;
+ aResultFace = aFR.Current();
+ break;
}
-#endif
}
}
}
- return aResShape;
+ BRepCheck_Analyzer anAnalyzer( aResultFace );
+ if( anAnalyzer.IsValid() && aResultFace.ShapeType()==TopAbs_FACE )
+ return aResultFace;
+ else
+ return TopoDS_Face();
}
void HYDROData_ImmersibleZone::createGroupObjects()
continue; // Skip the outer wire
TopTools_SequenceOfShape anEdges;
- HYDROData_Tool::ExploreShapeToShapes( aZoneWire, TopAbs_EDGE, anEdges );
+ HYDROData_ShapesTool::ExploreShapeToShapes( aZoneWire, TopAbs_EDGE, anEdges );
anInnerEdges.Append( anEdges );
}
// Create outer edges group
- QString anOutWiresGroupName = GetName() + "_Outer_Wire";
+ QString anOutWiresGroupName = GetName() + "_Outer";
Handle(HYDROData_ShapesGroup) anOutWiresGroup = createGroupObject();
anOutWiresGroup->SetName( anOutWiresGroupName );
TopTools_SequenceOfShape anEdges;
- HYDROData_Tool::ExploreShapeToShapes( aZoneOuterWire, TopAbs_EDGE, anEdges );
+ HYDROData_ShapesTool::ExploreShapeToShapes( aZoneOuterWire, TopAbs_EDGE, anEdges );
anOutWiresGroup->SetShapes( anEdges );
// Create group for inner edges only if edges is not empty
if ( !anInnerEdges.IsEmpty() )
{
- QString anInWiresGroupName = GetName() + "_Inner_Wires";
+ QString anInWiresGroupName = GetName() + "_Inner";
Handle(HYDROData_ShapesGroup) anInWiresGroup = createGroupObject();
anInWiresGroup->SetName( anInWiresGroupName );