1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-04-05 18:16:23 +03:00

0025847: Wrong result obtained by General Fuse operator.

I. New features:
   No new features.

II. Changes:
II.1. class  BOPAlgo_PaveFiller
- method:
 void BOPAlgo_PaveFiller::PerformEE()
 has been changed.
 Intended set of VE interferences has been refined
 to avoid unwanted overlaps of pave blocks

- method:
 void BOPAlgo_PaveFiller::ForceInterfVE(const Standard_Integer nV,
                                       Handle(BOPDS_PaveBlock)& aPB,
                                       BOPDS_MapOfPaveBlock& aMPBToUpdate)
 The initialization of increment of VE interferences has been added.

- method:
 Standard_Boolean BOPAlgo_PaveFiller::ForceInterfVF
  (const Standard_Integer nV,
   const Standard_Integer nF)
 The initialization of increment of VF interferences has been added.

III. Modified entities:
 packages:
 BOPAlgo

Test case for issue CR25847
This commit is contained in:
pkv 2015-02-26 13:39:13 +03:00 committed by bugmaster
parent 9a6ea9c479
commit a3476a9fe2
3 changed files with 53 additions and 0 deletions

View File

@ -534,6 +534,20 @@ void BOPAlgo_PaveFiller::PerformEE()
//=========================================
// post treatment
//=========================================
{
Standard_Integer aNbV;
Handle(BOPDS_PaveBlock) aPB1, aPB2;
//
aNbV=aMVCPB.Extent();
for (i=1; i<=aNbV; ++i) {
const BOPDS_CoupleOfPaveBlocks& aCPB=aMVCPB.FindFromIndex(i);
aCPB.PaveBlocks(aPB1, aPB2);
//
aMPBToUpdate.Remove(aPB1);
aMPBToUpdate.Remove(aPB2);
}
}
//
aItPB.Initialize(aMPBToUpdate);
for (; aItPB.More(); aItPB.Next()) {
Handle(BOPDS_PaveBlock) aPB=aItPB.Value();
@ -917,6 +931,7 @@ void BOPAlgo_PaveFiller::ForceInterfVE(const Standard_Integer nV,
aT=aProjector.LowerDistanceParameter();
//
BOPDS_VectorOfInterfVE& aVEs=myDS->InterfVE();
aVEs.SetIncrement(10);
BOPDS_InterfVE& aVE=aVEs.Append1();
aVE.SetIndices(nV, nE);
aVE.SetParameter(aT);

View File

@ -640,6 +640,7 @@ Standard_Boolean BOPAlgo_PaveFiller::ForceInterfVF
BRep_Builder aBB;
//
BOPDS_VectorOfInterfVF& aVFs=myDS->InterfVF();
aVFs.SetIncrement(10);
BOPDS_InterfVF& aVF=aVFs.Append1();
aVF.SetIndices(nV, nF);
aVF.SetUV(U, V);

37
tests/bugs/modalg_5/bug25847 Executable file
View File

@ -0,0 +1,37 @@
puts "============"
puts "OCC25847"
puts "============"
puts ""
###############################
## Wrong result obtained by General Fuse operator.
###############################
restore [locate_data_file bug25847_face_96.brep ] b1
restore [locate_data_file bug25847_face_294.brep] b2
restore [locate_data_file bug25847_face_533.brep] b3
restore [locate_data_file bug25847_face_535.brep] b4
bclearobjects
bcleartools
baddobjects b1 b2 b3 b4
bfillds
bbuild result
set square 3912.59
set nbshapes_expected "
Number of shapes in shape
VERTEX : 100
EDGE : 108
WIRE : 10
FACE : 9
SHELL : 0
SOLID : 0
COMPSOLID : 0
COMPOUND : 1
SHAPE : 228
"
checknbshapes result ${nbshapes_expected} 1 "Result obtained by General Fuse operator"
set 3dviewer 1