#include <BRepGProp.hxx>
#include <HYDROData_ShapesGroup.h>
#include <HYDROData_BCPolygon.h>
+#include <TopExp_Explorer.hxx>
extern QString REF_DATA_PATH;
{
TCollection_AsciiString fname = REF_DATA_PATH.toLatin1().data();
fname += "/test_boundary_polygon_calc_case_1.cbf";
- CPPUNIT_ASSERT_EQUAL( (int)DocError_OK, (int)HYDROData_Document::Load( fname.ToCString(), 1 ) );
+ CPPUNIT_ASSERT_EQUAL( (int)DocError_OK, (int)HYDROData_Document::Load( fname.ToCString() ) );
- Handle(HYDROData_Document) aDoc = HYDROData_Document::Document(1);
+ Handle(HYDROData_Document) aDoc = HYDROData_Document::Document();
//Calc case already contains already contains 4 boundary poltgons (3 cut, 1 include)
//Update it to recalculate the shape groups
Handle(HYDROData_CalculationCase) aCase =
aCase->Update();
CPPUNIT_ASSERT_EQUAL(4, aCase->GetBoundaryPolygons().Size());
HYDROData_SequenceOfObjects aSplitGroups = aCase->GetSplitGroups();
- CPPUNIT_ASSERT_EQUAL(1, aSplitGroups.Size());
+ CPPUNIT_ASSERT_EQUAL(4, aSplitGroups.Size());
- Handle(HYDROData_ShapesGroup) aGroup = Handle(HYDROData_ShapesGroup)::DownCast( aSplitGroups.First() );
- std::string name = aGroup->GetName().toStdString();
- CPPUNIT_ASSERT_EQUAL( name, std::string("Case_1_Immersible zone_1_Outer") );
+ Handle(HYDROData_ShapesGroup) aGroup1;
+ TopTools_MapOfShape EdgesFromBPGroups;
+ for (int i=1; i<=4;i++)
+ {
+ Handle(HYDROData_ShapesGroup) aGroup = Handle(HYDROData_ShapesGroup)::DownCast( aSplitGroups(i) );
+ if (aGroup->GetName() == "Case_1_Immersible zone_1_Outer")
+ {
+ aGroup1 = aGroup;
+ }
+ else
+ {
+ TopTools_SequenceOfShape aSeqShapes1;
+ aGroup->GetShapes( aSeqShapes1 );
+ for (int j=1; j<=aSeqShapes1.Size();j++)
+ {
+ TopExp_Explorer exp(aSeqShapes1(j), TopAbs_EDGE);
+ for (;exp.More();exp.Next())
+ EdgesFromBPGroups.Add(exp.Current());
+ }
+ }
+ }
+ CPPUNIT_ASSERT( !aGroup1.IsNull() );
TopTools_SequenceOfShape aSeqShapes;
- aGroup->GetShapes( aSeqShapes );
+ aGroup1->GetShapes( aSeqShapes );
CPPUNIT_ASSERT_EQUAL( 78, aSeqShapes.Size());
+ //
+ TopTools_MapOfShape EdgesFromOuter;
+
+ for (int i=1;i<=aSeqShapes.Size();i++)
+ EdgesFromOuter.Add(aSeqShapes(i));
+
+ //check that EdgesFromBPGroups is a PART of Case_1_Immersible zone_1_Outer group
+ int ext1 = EdgesFromBPGroups.Extent();
+ EdgesFromOuter.Intersect(EdgesFromBPGroups);
+ int ext2 = EdgesFromOuter.Extent();
+ CPPUNIT_ASSERT_EQUAL(35, ext1);
+ CPPUNIT_ASSERT_EQUAL(ext1, ext2);
+ //
BRep_Builder BB;
TopTools_IndexedMapOfShape ME, MV;
GProp_GProps G;
{
TCollection_AsciiString fname = REF_DATA_PATH.toLatin1().data();
fname += "/test_boundary_polygon_calc_case_2.cbf";
- CPPUNIT_ASSERT_EQUAL( (int)DocError_OK, (int)HYDROData_Document::Load( fname.ToCString(), 1 ) );
- Handle(HYDROData_Document) aDoc = HYDROData_Document::Document(1);
+ CPPUNIT_ASSERT_EQUAL( (int)DocError_OK, (int)HYDROData_Document::Load( fname.ToCString() ) );
+ Handle(HYDROData_Document) aDoc = HYDROData_Document::Document();
//add boundary polygons to case_1
Handle(HYDROData_CalculationCase) aCase =
Handle(HYDROData_CalculationCase)::DownCast( aDoc->FindObjectByName( "Case_1" ) );