#include <TopTools_ListOfShape.hxx>
#include <TopTools_ListIteratorOfListOfShape.hxx>
-
+//#define DEB_CALCULATION 1
+#ifdef DEB_CALCULATION
+#include <BRepTools.hxx>
+#include <TopLoc_Location.hxx>
+#endif
#define CALCULATION_REGIONS_PREF GetName() + "_Reg"
#define CALCULATION_ZONES_PREF GetName() + "_Zone"
#define CALCULATION_GROUPS_PREF GetName() + "_"
{
// 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() )
{
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
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() )
NCollection_Sequence<int> 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() <<endl;
+#endif
const TopoDS_Shape& aModifiedShape = aSewing.Modified( aShape );
if ( aModifiedShape.IsNull() )
continue;
+#ifdef DEB_CALCULATION
+ const TopLoc_Location& aL1 = aShape.Location();
+ const TopLoc_Location& aL2 = aModifiedShape.Location();
+ cout << "\nNew shape(" << i << ") = " << aModifiedShape.TShape() << " Location is Equal = " << aL1.IsEqual(aL2)<<endl;
+#endif
+
// Workaround for TopTools_IndexedMapOfShape::FindIndex()
- for ( int anIndex = 1; anIndex <= aMapOfSubShapes.Extent(); anIndex++ )
+ /*for ( int anIndex = 1; anIndex <= aMapOfSubShapes.Extent(); anIndex++ )
{
if ( aModifiedShape.IsPartner( aMapOfSubShapes.FindKey( anIndex ) ) )
{
break;
}
}
- }
-
+ */
+ int anIndex = aMapOfSubShapes.FindIndex(aModifiedShape);
+ if(anIndex > 0) {
+ aGroupIndexes.Append( anIndex );
+ //break;
+ } else {
+#ifdef DEB_CALCULATION
+ TCollection_AsciiString aNam("Lost_");
+ if(!aMapOfSubShapes.Contains(aModifiedShape)) {
+ for ( int anIndex = 1; anIndex <= aMapOfSubShapes.Extent(); anIndex++ )
+ {
+ const TopoDS_Shape& aS = aMapOfSubShapes.FindKey( anIndex );
+ if ( aModifiedShape.IsPartner( aS ) )
+ {
+ cout <<"\nIndex in Map = " << anIndex << "TShape = " << aS.TShape() <<endl;
+ TCollection_AsciiString aName = aNam + i + "_" + anIndex + ".brep";
+ BRepTools::Write(aS ,aName.ToCString());
+ break;
+ }
+ }
+ }
+#endif
+ }
+ }
if ( !aGroupIndexes.IsEmpty() )
aGroupsData.Bind( aGroupDef.Name, aGroupIndexes );
}
-
+
if ( !aGroupsData.IsEmpty() )
{
GEOM::GEOM_IGroupOperations_var aGroupOp =
aXc=0.5*(aXmin+aXmax);
aYc=0.5*(aYmin+aYmax);
aZc=0.5*(aZmin+aZmax);
- printf(" aVc : { %lf %lf %lf }\n", aXc, aYc, aZc);
+ //printf(" aVc : { %lf %lf %lf }\n", aXc, aYc, aZc);
//
myToTransform=Standard_False;
if (fabs(aXc)>myTreshold ||
//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;
+ }
}
}
//=======================================================================
//
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());
//=======================================================================
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;
}
//
//=======================================================================
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;
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;
{
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;
}