X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROData%2FHYDROData_CalculationCase.cxx;h=509c2c5fb0bb63ffbd4ca5dd173f9d7aa5d15aa0;hb=81c9f5cdf82909d0aebd2c491c50fa7516cc80b7;hp=eb3026c0e12c2efc5366d3ccf2838e1f66c812f6;hpb=4fb26469914cfdce427475638c0ed89299036c54;p=modules%2Fhydro.git diff --git a/src/HYDROData/HYDROData_CalculationCase.cxx b/src/HYDROData/HYDROData_CalculationCase.cxx index eb3026c0..509c2c5f 100644 --- a/src/HYDROData/HYDROData_CalculationCase.cxx +++ b/src/HYDROData/HYDROData_CalculationCase.cxx @@ -34,10 +34,18 @@ #include #include - +//#define DEB_CALCULATION 1 +#ifdef DEB_CALCULATION +#include +#include +#endif #define CALCULATION_REGIONS_PREF GetName() + "_Reg" #define CALCULATION_ZONES_PREF GetName() + "_Zone" #define CALCULATION_GROUPS_PREF GetName() + "_" +//#define DEB_CLASS2D 1 +#ifdef DEB_CLASS2D +#include +#endif #define EXPORT_NAME "HYDRO_" + GetName() @@ -83,7 +91,7 @@ void HYDROData_CalculationCase::SetName( const QString& theName ) } } - HYDROData_SequenceOfObjects aGroups = GetGeometryGroups(); + HYDROData_SequenceOfObjects aGroups = GetSplittedGroups(); anIter.Init( aGroups ); for ( ; anIter.More(); anIter.Next() ) @@ -102,8 +110,9 @@ void HYDROData_CalculationCase::SetName( const QString& theName ) QStringList HYDROData_CalculationCase::DumpToPython( MapOfTreatedObjects& theTreatedObjects ) const { - QStringList aResList = HYDROData_Entity::DumpToPython( theTreatedObjects ); - QString aCalculName = GetName(); + QStringList aResList = dumpObjectCreation( theTreatedObjects ); + + QString aCalculName = GetObjPyName(); HYDROData_SequenceOfObjects aGeomObjects = GetGeometryObjects(); HYDROData_SequenceOfObjects::Iterator anIter( aGeomObjects ); @@ -111,12 +120,39 @@ QStringList HYDROData_CalculationCase::DumpToPython( MapOfTreatedObjects& theTre { Handle(HYDROData_Object) aRefGeomObj = Handle(HYDROData_Object)::DownCast( anIter.Value() ); - if ( !aRefGeomObj.IsNull() ) - setPythonReferenceObject( theTreatedObjects, aResList, aRefGeomObj, "AddGeometryObject" ); + setPythonReferenceObject( theTreatedObjects, aResList, aRefGeomObj, "AddGeometryObject" ); + } + aResList << QString( "" ); + + QString aGroupName = HYDROData_Tool::GenerateNameForPython( theTreatedObjects, "case_geom_group" ); + + HYDROData_SequenceOfObjects aGeomGroups = GetGeometryGroups(); + anIter.Init( aGeomGroups ); + for ( ; anIter.More(); anIter.Next() ) + { + Handle(HYDROData_ShapesGroup) aGeomGroup = + Handle(HYDROData_ShapesGroup)::DownCast( anIter.Value() ); + if ( aGeomGroup.IsNull() ) + continue; + + Handle(HYDROData_Object) aFatherGeom = + Handle(HYDROData_Object)::DownCast( aGeomGroup->GetFatherObject() ); + if ( aFatherGeom.IsNull() ) + continue; + + int aGroupId = aFatherGeom->GetGroupId( aGeomGroup ); + aResList << QString( "%1 = %2.GetGroup( %3 );" ) + .arg( aGroupName ).arg( aFatherGeom->GetObjPyName() ).arg( aGroupId ); + + aResList << QString( "%1.AddGeometryGroup( %2 );" ).arg( aCalculName ).arg( aGroupName ); } aResList << QString( "" ); - aResList << QString( "%1.SplitGeometryObjects();" ).arg( aCalculName ); + Handle(HYDROData_PolylineXY) aBoundaryPolyline = GetBoundaryPolyline(); + setPythonReferenceObject( theTreatedObjects, aResList, aBoundaryPolyline, "SetBoundaryPolyline" ); + aResList << QString( "" ); + + aResList << QString( "%1.Update();" ).arg( aCalculName ); aResList << QString( "" ); // Now we restore the regions and zones order @@ -130,8 +166,20 @@ QStringList HYDROData_CalculationCase::DumpToPython( MapOfTreatedObjects& theTre continue; QString aRegionName = aRegion->GetName(); - // TODO + + HYDROData_SequenceOfObjects aZones = aRegion->GetZones(); + HYDROData_SequenceOfObjects::Iterator aZonesIter( aZones ); + for ( ; aZonesIter.More(); aZonesIter.Next() ) + { + Handle(HYDROData_Zone) aRegZone = + Handle(HYDROData_Zone)::DownCast( aZonesIter.Value() ); + if ( aRegZone.IsNull() ) + continue; + + // TODO + } } + aResList << QString( "" ); return aResList; } @@ -206,8 +254,8 @@ void HYDROData_CalculationCase::Update() { const QString& anObjName = aSplitData.ObjectNames.at( i ); - Handle(HYDROData_Object) aRefObject = Handle(HYDROData_Object)::DownCast( - HYDROData_Tool::FindObjectByName( aDocument, anObjName ) ); + Handle(HYDROData_Object) aRefObject = + Handle(HYDROData_Object)::DownCast( aDocument->FindObjectByName( anObjName ) ); if ( aRefObject.IsNull() ) continue; @@ -223,7 +271,10 @@ void HYDROData_CalculationCase::Update() QString anObjName = aSplitData.ObjectNames.first(); if ( anObjName.isEmpty() ) continue; - +#ifdef DEB_CALCULATION + QString aStr = aSplitData.ObjectNames.join(" "); + cout << " CCase: Names = "<_is_nil() ) + if ( aMainShape->_is_nil() ) return false; if ( theGroupsDefs.IsEmpty() ) @@ -721,26 +882,48 @@ bool HYDROData_CalculationCase::Export( GEOM::GEOM_Gen_var for( int i = 1, n = aGroupDef.Shapes.Length(); i <= n; i++ ) { const TopoDS_Shape& aShape = aGroupDef.Shapes.Value( i ); - - const TopoDS_Shape& aModifiedShape = aSewing.Modified( aShape ); - if ( aModifiedShape.IsNull() ) - continue; - - // Workaround for TopTools_IndexedMapOfShape::FindIndex() - for ( int anIndex = 1; anIndex <= aMapOfSubShapes.Extent(); anIndex++ ) - { - if ( aModifiedShape.IsPartner( aMapOfSubShapes.FindKey( anIndex ) ) ) +#ifdef DEB_CALCULATION + cout << "\nOld shape(" << i << ") = " << aShape.TShape() <