mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-04-03 17:56:21 +03:00
0031404: Modeling Algorithms - BOP Fuse produces a self-interfering or a good shape depending on the order of arguments
Approx_ComputeCLine.gxx : number of possible cuttings is increased tests/bugs/modalg_7/bug31404 : test case added
This commit is contained in:
parent
6a9f983a16
commit
895a80d38a
@ -102,7 +102,7 @@ void Approx_ComputeCLine::Perform(const MultiLine& Line)
|
||||
Standard_Real mylastU = ULast;
|
||||
Standard_Integer aMaxSegments = 0;
|
||||
Standard_Integer aMaxSegments1 = myMaxSegments - 1;
|
||||
Standard_Integer aNbCut = 0, aNbImp = 0, aNbComp = 5;
|
||||
Standard_Integer aNbCut = 0, aNbImp = 0, aNbComp = 10;
|
||||
|
||||
if (!mycut)
|
||||
{
|
||||
@ -178,10 +178,12 @@ void Approx_ComputeCLine::Perform(const MultiLine& Line)
|
||||
Standard_Boolean aStopCutting = Standard_False;
|
||||
if (aNbCut >= aNbComp)
|
||||
{
|
||||
if (aNbCut > aNbImp)
|
||||
if (aNbCut > aNbImp + 1)
|
||||
{
|
||||
aStopCutting = Standard_True;
|
||||
}
|
||||
aNbCut = 0;
|
||||
aNbImp = 0;
|
||||
}
|
||||
// is new decision better?
|
||||
if (!Ok && (Abs(myfirstU - mylastU) <= TolU || aMaxSegments >= aMaxSegments1 || aStopCutting ))
|
||||
|
46
tests/bugs/modalg_7/bug31404
Normal file
46
tests/bugs/modalg_7/bug31404
Normal file
@ -0,0 +1,46 @@
|
||||
puts "======================================================="
|
||||
puts "0031404: Modeling Algorithms - BOP Fuse produces a self-interfering or a good shape depending on the order of arguments"
|
||||
puts "======================================================="
|
||||
puts ""
|
||||
|
||||
psphere sph1 25
|
||||
plane pln2 32, 68, -27
|
||||
psphere sph2 pln2 75
|
||||
bfuse f1 sph1 sph2
|
||||
savehistory h1
|
||||
bfuse f2 sph2 sph1
|
||||
savehistory h2
|
||||
|
||||
explode sph1 f
|
||||
modified ff1 h1 sph1_1
|
||||
modified ff2 h2 sph1_1
|
||||
|
||||
foreach r {f1 f2} {
|
||||
checkshape $r
|
||||
if {![regexp "OK" [bopcheck $r]]} {
|
||||
puts "Error: the $r is a self-interfering shape"
|
||||
}
|
||||
if { [checkmaxtol $r] > 2.e-7 } {
|
||||
puts "Error: $r has bad tolerance"
|
||||
}
|
||||
}
|
||||
|
||||
checknbshapes f1 -wire 3 -face 2 -edge 9 -vertex 6
|
||||
checknbshapes f2 -wire 3 -face 2 -edge 9 -vertex 6
|
||||
|
||||
checkprops f1 -s 74192.6
|
||||
checkprops f2 -s 74192.6
|
||||
|
||||
view 1 -2D- 0 200 500 300
|
||||
|
||||
pcurve ff1
|
||||
pcurve ff2
|
||||
2dtranslate ff2_6 pi 0
|
||||
donly ff1_6 ff2_6
|
||||
2dfit
|
||||
|
||||
checklength ff1_6 -l 7.167
|
||||
checklength ff2_6 -l 7.167
|
||||
|
||||
checkview -screenshot -2d -path ${imagedir}/${test_image}.png
|
||||
|
Loading…
x
Reference in New Issue
Block a user