#include <BRepGProp.hxx>
#include <HYDROData_ShapesGroup.h>
#include <HYDROData_BCPolygon.h>
+#include <TopExp_Explorer.hxx>
extern QString REF_DATA_PATH;
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;