mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-05-26 11:05:31 +03:00
0026251: Section curve cannot be found
Current algorithm ignores found triangles intersection (IntPolyh_PMaillageAffinage) and, consequently, cannot find start point for intersection line. Branch fixes this problem. Test case for issue CR26251
This commit is contained in:
parent
af6b493fc9
commit
32b95ded37
@ -88,7 +88,7 @@ void IntPolyh_Intersection::Perform() {
|
|||||||
isAdvDone = PerformAdv(aPMaillageFF,aPMaillageFR,aPMaillageRF,aPMaillageRR,nbCouplesAdv);
|
isAdvDone = PerformAdv(aPMaillageFF,aPMaillageFR,aPMaillageRF,aPMaillageRR,nbCouplesAdv);
|
||||||
|
|
||||||
// advanced interference found
|
// advanced interference found
|
||||||
if(isAdvDone && nbCouplesAdv > 10) {
|
if(isAdvDone && nbCouplesAdv > 0) {
|
||||||
aPMaillageFF->StartPointsChain(TSectionLines,TTangentZones);
|
aPMaillageFF->StartPointsChain(TSectionLines,TTangentZones);
|
||||||
aPMaillageFR->StartPointsChain(TSectionLines,TTangentZones);
|
aPMaillageFR->StartPointsChain(TSectionLines,TTangentZones);
|
||||||
aPMaillageRF->StartPointsChain(TSectionLines,TTangentZones);
|
aPMaillageRF->StartPointsChain(TSectionLines,TTangentZones);
|
||||||
|
@ -85,7 +85,7 @@ void IntPolyh_Intersection::Perform(const TColStd_Array1OfReal& Upars1,
|
|||||||
aPMaillageRR,nbCouplesAdv);
|
aPMaillageRR,nbCouplesAdv);
|
||||||
|
|
||||||
// advanced interference found
|
// advanced interference found
|
||||||
if(isAdvDone && nbCouplesAdv > 10) {
|
if(isAdvDone && nbCouplesAdv > 0) {
|
||||||
aPMaillageFF->StartPointsChain(TSectionLines,TTangentZones);
|
aPMaillageFF->StartPointsChain(TSectionLines,TTangentZones);
|
||||||
aPMaillageFR->StartPointsChain(TSectionLines,TTangentZones);
|
aPMaillageFR->StartPointsChain(TSectionLines,TTangentZones);
|
||||||
aPMaillageRF->StartPointsChain(TSectionLines,TTangentZones);
|
aPMaillageRF->StartPointsChain(TSectionLines,TTangentZones);
|
||||||
@ -169,7 +169,7 @@ Standard_Boolean IntPolyh_Intersection::PerformMaillage(const Standard_Boolean i
|
|||||||
(FinTTC >= theMaillageS->GetArrayOfTriangles(1).NbTriangles() ||
|
(FinTTC >= theMaillageS->GetArrayOfTriangles(1).NbTriangles() ||
|
||||||
FinTTC >= theMaillageS->GetArrayOfTriangles(2).NbTriangles()) ) {
|
FinTTC >= theMaillageS->GetArrayOfTriangles(2).NbTriangles()) ) {
|
||||||
return Standard_False;
|
return Standard_False;
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
//IFV test for parallel surf
|
//IFV test for parallel surf
|
||||||
if(FinTTC > 200) {
|
if(FinTTC > 200) {
|
||||||
@ -248,7 +248,7 @@ Standard_Boolean IntPolyh_Intersection::PerformMaillage(const TColStd_Array1OfRe
|
|||||||
(FinTTC >= theMaillageS->GetArrayOfTriangles(1).NbTriangles() ||
|
(FinTTC >= theMaillageS->GetArrayOfTriangles(1).NbTriangles() ||
|
||||||
FinTTC >= theMaillageS->GetArrayOfTriangles(2).NbTriangles()) ) {
|
FinTTC >= theMaillageS->GetArrayOfTriangles(2).NbTriangles()) ) {
|
||||||
return Standard_False;
|
return Standard_False;
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
//IFV test for parallel surf
|
//IFV test for parallel surf
|
||||||
if(FinTTC > 200) {
|
if(FinTTC > 200) {
|
||||||
|
43
tests/bugs/modalg_6/bug26251
Executable file
43
tests/bugs/modalg_6/bug26251
Executable file
@ -0,0 +1,43 @@
|
|||||||
|
puts "============"
|
||||||
|
puts "OCC26251"
|
||||||
|
puts "============"
|
||||||
|
puts ""
|
||||||
|
###############################
|
||||||
|
## Section curve cannot be found
|
||||||
|
###############################
|
||||||
|
|
||||||
|
restore [locate_data_file bug26251_b31_3.brep] b1
|
||||||
|
restore [locate_data_file bug26251_tank31.brep] b2
|
||||||
|
|
||||||
|
bsection result b1 b2
|
||||||
|
|
||||||
|
set length 2.49934
|
||||||
|
|
||||||
|
set nbshapes_expected "
|
||||||
|
Number of shapes in shape
|
||||||
|
VERTEX : 3
|
||||||
|
EDGE : 2
|
||||||
|
WIRE : 0
|
||||||
|
FACE : 0
|
||||||
|
SHELL : 0
|
||||||
|
SOLID : 0
|
||||||
|
COMPSOLID : 0
|
||||||
|
COMPOUND : 1
|
||||||
|
SHAPE : 6
|
||||||
|
"
|
||||||
|
|
||||||
|
checknbshapes result -ref ${nbshapes_expected} -t -m "Section curve"
|
||||||
|
|
||||||
|
explode b2 f
|
||||||
|
copy b2_5 b2
|
||||||
|
|
||||||
|
set NbCurves 0
|
||||||
|
|
||||||
|
set log [bopcurves b1 b2 -2d]
|
||||||
|
regexp {Tolerance Reached=+([-0-9.+eE]+)\n+([-0-9.+eE]+)} ${log} full Toler NbCurves
|
||||||
|
|
||||||
|
if {$NbCurves == 0} {
|
||||||
|
puts "Error: Intersection curve is not found"
|
||||||
|
}
|
||||||
|
|
||||||
|
set 3dviewer 1
|
Loading…
x
Reference in New Issue
Block a user