mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-06-30 12:14:08 +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_Real mylastU = ULast;
|
||||||
Standard_Integer aMaxSegments = 0;
|
Standard_Integer aMaxSegments = 0;
|
||||||
Standard_Integer aMaxSegments1 = myMaxSegments - 1;
|
Standard_Integer aMaxSegments1 = myMaxSegments - 1;
|
||||||
Standard_Integer aNbCut = 0, aNbImp = 0, aNbComp = 5;
|
Standard_Integer aNbCut = 0, aNbImp = 0, aNbComp = 10;
|
||||||
|
|
||||||
if (!mycut)
|
if (!mycut)
|
||||||
{
|
{
|
||||||
@ -178,10 +178,12 @@ void Approx_ComputeCLine::Perform(const MultiLine& Line)
|
|||||||
Standard_Boolean aStopCutting = Standard_False;
|
Standard_Boolean aStopCutting = Standard_False;
|
||||||
if (aNbCut >= aNbComp)
|
if (aNbCut >= aNbComp)
|
||||||
{
|
{
|
||||||
if (aNbCut > aNbImp)
|
if (aNbCut > aNbImp + 1)
|
||||||
{
|
{
|
||||||
aStopCutting = Standard_True;
|
aStopCutting = Standard_True;
|
||||||
}
|
}
|
||||||
|
aNbCut = 0;
|
||||||
|
aNbImp = 0;
|
||||||
}
|
}
|
||||||
// is new decision better?
|
// is new decision better?
|
||||||
if (!Ok && (Abs(myfirstU - mylastU) <= TolU || aMaxSegments >= aMaxSegments1 || aStopCutting ))
|
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