From ac8e1c5e781ae3e6d017dfed1cec4e13abfbd706 Mon Sep 17 00:00:00 2001 From: szy Date: Wed, 15 Jan 2014 12:30:19 +0000 Subject: [PATCH] 15.01.2014. Fix for bug of GroupDef edges. --- src/HYDROData/HYDROData_CalculationCase.cxx | 75 ++++++++-- src/HYDROData/HYDROData_Transform.cxx | 149 +++++++++++++------- 2 files changed, 164 insertions(+), 60 deletions(-) diff --git a/src/HYDROData/HYDROData_CalculationCase.cxx b/src/HYDROData/HYDROData_CalculationCase.cxx index a6bc84e7..7ee3bd8c 100644 --- a/src/HYDROData/HYDROData_CalculationCase.cxx +++ b/src/HYDROData/HYDROData_CalculationCase.cxx @@ -34,7 +34,11 @@ #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() + "_" @@ -668,8 +672,11 @@ bool HYDROData_CalculationCase::Export( GEOM::GEOM_Gen_var { // Sew faces BRepBuilderAPI_Sewing aSewing( Precision::Confusion() * 10.0 ); - aSewing.SetNonManifoldMode( Standard_True ); - + aSewing.SetNonManifoldMode( Standard_False ); +#ifdef DEB_CALCULATION + TCollection_AsciiString aNam("Sh_"); + int i=1; +#endif TopTools_ListIteratorOfListOfShape aFaceIter( theFaces ); for ( ; aFaceIter.More(); aFaceIter.Next() ) { @@ -680,12 +687,25 @@ bool HYDROData_CalculationCase::Export( GEOM::GEOM_Gen_var if ( aShape.ShapeType() == TopAbs_FACE ) { aSewing.Add( aShape ); +#ifdef DEB_CALCULATION + TCollection_AsciiString aName = aNam + ++i + ".brep"; + BRepTools::Write(aShape ,aName.ToCString()); +#endif } else { +#ifdef DEB_CALCULATION + int j = 1; +#endif TopExp_Explorer anExp( aShape, TopAbs_FACE ); - for ( ; anExp.More(); anExp.Next() ) + for (; anExp.More(); anExp.Next() ) { aSewing.Add( anExp.Current() ); +#ifdef DEB_CALCULATION + + TCollection_AsciiString aName = aNam + i + "_" + ++j + ".brep"; + BRepTools::Write(anExp.Current() ,aName.ToCString()); +#endif + } } } // faces iterator @@ -696,12 +716,15 @@ bool HYDROData_CalculationCase::Export( GEOM::GEOM_Gen_var if ( aSewedShape.IsNull() || !TopoDS_Iterator( aSewedShape ).More() ) return false; +#ifdef DEB_CALCULATION + BRepTools::Write(aSewedShape ,"Sew.brep"); +#endif // Publish the sewed shape QString aName = EXPORT_NAME; GEOM::GEOM_Object_ptr aMainShape = publishShapeInGEOM( theGeomEngine, theStudy, aSewedShape, aName ); - if ( aMainShape->_is_nil() ) + if ( aMainShape->_is_nil() ) return false; if ( theGroupsDefs.IsEmpty() ) @@ -719,15 +742,23 @@ bool HYDROData_CalculationCase::Export( GEOM::GEOM_Gen_var NCollection_Sequence aGroupIndexes; for( int i = 1, n = aGroupDef.Shapes.Length(); i <= n; i++ ) - { + { const TopoDS_Shape& aShape = aGroupDef.Shapes.Value( i ); - +#ifdef DEB_CALCULATION + cout << "\nOld shape(" << i << ") = " << aShape.TShape() <myTreshold || @@ -236,18 +236,21 @@ void HYDROData_Transform::ComputeTrsf() //purpose : //======================================================================= void HYDROData_Transform::Transform1() -{ - Standard_Boolean bIsDone; - // +{ myErrorStatus=0; // - myTransform1=new BRepBuilderAPI_Transform(myTrsf1); - // - myTransform1->Perform(myArgument); - bIsDone=myTransform1->IsDone(); - if (!bIsDone) { - myErrorStatus=11; - return; + if (myToTransform) {//pkv ft + Standard_Boolean bIsDone; + // + myErrorStatus=0; + // + myTransform1=new BRepBuilderAPI_Transform(myTrsf1); + // + myTransform1->Perform(myArgument); + bIsDone=myTransform1->IsDone(); + if (!bIsDone) { + myErrorStatus=11; + } } } //======================================================================= @@ -263,7 +266,12 @@ void HYDROData_Transform::BuildFuse() // myErrorStatus=0; // - const TopoDS_Shape& aS1=myTransform1->Shape(); + //modified by NIZNHY-PKV Wed Jan 15 13:24:48 2014f + const TopoDS_Shape& aS1= + (myToTransform)? myTransform1->Shape() : myArgument; + //const TopoDS_Shape& aS1=()Transform1->Shape(); + //modified by NIZNHY-PKV Wed Jan 15 13:24:52 2014t + #ifdef DEB_SPLIT_TO_ZONES_CHECK_PARTITION TCollection_AsciiString aNameBefore = fileNameAfter + ".brep"; BRepTools::Write(aS1, aNameBefore.ToCString()); @@ -305,24 +313,27 @@ void HYDROData_Transform::BuildFuse() //======================================================================= void HYDROData_Transform::Transform2() { - Standard_Boolean bIsDone; - // myErrorStatus=0; // const TopoDS_Shape& aR1=myBuilder->Shape(); // - myTransform2=new BRepBuilderAPI_Transform(myTrsf2); - // - myTransform2->Perform(aR1); - bIsDone=myTransform2->IsDone(); - if (!bIsDone) { - myErrorStatus=12; - return; + myShape=aR1; //pkv ft + if (myToTransform) { //pkv ft + Standard_Boolean bIsDone; + // + myTransform2=new BRepBuilderAPI_Transform(myTrsf2); + // + myTransform2->Perform(aR1); + bIsDone=myTransform2->IsDone(); + if (!bIsDone) { + myErrorStatus=12; + return; + } + // + const TopoDS_Shape& aR2=myTransform2->Shape(); + // + myShape=aR2; } - // - const TopoDS_Shape& aR2=myTransform2->Shape(); - // - myShape=aR2; } // //======================================================================= @@ -338,16 +349,34 @@ const TopTools_ListOfShape& HYDROData_Transform::Modified pHistShapes=(TopTools_ListOfShape*)&myHistShapes; pHistShapes->Clear(); // - const TopTools_ListOfShape& aLS1=myTransform1->Modified(aS); - const TopoDS_Shape& aS1=aLS1.First(); - // - const TopTools_ListOfShape& aLS1B=myBuilder->Modified(aS1); - aItLS.Initialize(aLS1B); - for (; aItLS.More(); aItLS.Next()) { - const TopoDS_Shape& aS1B=aItLS.Value(); - const TopTools_ListOfShape& aLS2B=myTransform2->Modified(aS1B); - const TopoDS_Shape& aS2B=aLS2B.First(); - pHistShapes->Append(aS2B); + if (myToTransform) { //pkv ft + const TopTools_ListOfShape& aLS1=myTransform1->Modified(aS); + const TopoDS_Shape& aS1=aLS1.First(); + // + const TopTools_ListOfShape& aLS1B=myBuilder->Modified(aS1); + // + if (aLS1B.IsEmpty()) { //pkv ft + const TopTools_ListOfShape& aLS2B=myTransform2->Modified(aS1); + const TopoDS_Shape& aS2B=aLS2B.First(); + pHistShapes->Append(aS2B); + } + else { + aItLS.Initialize(aLS1B); + for (; aItLS.More(); aItLS.Next()) { + const TopoDS_Shape& aS1B=aItLS.Value(); + const TopTools_ListOfShape& aLS2B=myTransform2->Modified(aS1B); + const TopoDS_Shape& aS2B=aLS2B.First(); + pHistShapes->Append(aS2B); + } + } + } + else { + const TopTools_ListOfShape& aLS1B=myBuilder->Modified(aS); + aItLS.Initialize(aLS1B); + for (; aItLS.More(); aItLS.Next()) { + const TopoDS_Shape& aS1B=aItLS.Value(); + pHistShapes->Append(aS1B); + } } // return myHistShapes; @@ -365,16 +394,33 @@ const TopTools_ListOfShape& HYDROData_Transform::Generated pHistShapes=(TopTools_ListOfShape*)&myHistShapes; pHistShapes->Clear(); // - const TopTools_ListOfShape& aLS1=myTransform1->Modified(aS); - const TopoDS_Shape& aS1=aLS1.First(); - // - const TopTools_ListOfShape& aLS1B=myBuilder->Generated(aS1); - aItLS.Initialize(aLS1B); - for (; aItLS.More(); aItLS.Next()) { - const TopoDS_Shape& aS1B=aItLS.Value(); - const TopTools_ListOfShape& aLS2B=myTransform2->Modified(aS1B); - const TopoDS_Shape& aS2B=aLS2B.First(); - pHistShapes->Append(aS2B); + if (myToTransform) { //pkv ft + const TopTools_ListOfShape& aLS1=myTransform1->Modified(aS); + const TopoDS_Shape& aS1=aLS1.First(); + // + const TopTools_ListOfShape& aLS1B=myBuilder->Generated(aS1); + if (aLS1B.IsEmpty()) { //pkv ft + const TopTools_ListOfShape& aLS2B=myTransform2->Modified(aS1); + const TopoDS_Shape& aS2B=aLS2B.First(); + pHistShapes->Append(aS2B); + } + else { + aItLS.Initialize(aLS1B); + for (; aItLS.More(); aItLS.Next()) { + const TopoDS_Shape& aS1B=aItLS.Value(); + const TopTools_ListOfShape& aLS2B=myTransform2->Modified(aS1B); + const TopoDS_Shape& aS2B=aLS2B.First(); + pHistShapes->Append(aS2B); + } + } + } + else { + const TopTools_ListOfShape& aLS1B=myBuilder->Generated(aS); + aItLS.Initialize(aLS1B); + for (; aItLS.More(); aItLS.Next()) { + const TopoDS_Shape& aS1B=aItLS.Value(); + pHistShapes->Append(aS1B); + } } // return myHistShapes; @@ -387,10 +433,15 @@ Standard_Boolean HYDROData_Transform::IsDeleted(const TopoDS_Shape& aS) { Standard_Boolean bIsDeleted; // - const TopTools_ListOfShape& aLS1=myTransform1->Modified(aS); - const TopoDS_Shape& aS1=aLS1.First(); - // - bIsDeleted=myBuilder->IsDeleted(aS1); + if (myToTransform) { //pkv ft + const TopTools_ListOfShape& aLS1=myTransform1->Modified(aS); + const TopoDS_Shape& aS1=aLS1.First(); + // + bIsDeleted=myBuilder->IsDeleted(aS1); + } + else { + bIsDeleted=myBuilder->IsDeleted(aS); + } // return bIsDeleted; } -- 2.39.2